Bài viết được dịch từ Life Hacker
Lời bàn của Vinacode:
Gần đây trong một bài viết của giảng viên Hồ Đắc Phương là “Suy Nghĩ về việc dạy Tin học” đăng trên hocthenao.vn, một vị phụ huynh đã đặt câu hỏi như sau:
“Tôi là một phụ huynh, hiện tôi muốn cho con tiếp cận với việc học máy tính và lập trình ở nhà. Vậy xin hỏi theo phương pháp Scratch và Alice có cần người hướng dẫn không? Hay chỉ cần cho con vào đấy để tự học và khám phá? Nếu cần hướng dẫn thì ở Hà Nội có nhiều giảng viên biết phương pháp này không và thuê thầy dạy ở đâu?”
Hôm nay blog Vinacode sẽ giải đáp câu hỏi này của vị phu huynh đó thông qua bài viết về lý do tại sao chúng ta nên dạy lập trình cho trẻ em và cách dạy như thế nào, dùng công cụ gì là hợp lý. Nếu bạn có con/cháu ở độ tuổi lên 8 thì nên cho cháu học lập trình, vì chính việc lập trình này sẽ giúp trẻ phát triển rất nhiều các kỹ năng khác. Một bước đi trước thì sau này trẻ sẽ có những thuận lợi rất nhiều trong cuộc sống.
“Không chỉ có 7 kỳ quan trong mắt trẻ mà có đến 7 triệu kỳ quan.” ~ Walt Streightiff

Dù cho sau này có trở thành một Zuckerberg (sáng lập mạng xã hội Facebook) tiếp theo hay không, thì lập trình cũng là một kỹ năng rất có lợi để dạy cho con của bạn. Lập trình cung cấp các kỹ năng rất quan trọng như: giải quyết vấn đề, sáng tạo và truyền thông. Thêm vào đó, nó có thể mang lại rất nhiều niềm vui cho cả bố mẹ lẫn con cái. Sau đây là một số ứng dụng thử-và-đúng (tried-and-true) thuộc loại tốt nhất dành cho việc dạy trẻ em ở tất cả mọi lứa tuổi để biết cách lập trình.
Không có thời điểm nào giống như lúc này
Có lẽ không có lứa tuổi nào tốt hơn để học lập trình hơn là trẻ em. Trẻ con hấp thụ thông tin và sử dụng những công nghệ mới giống như kiểu là chuyện đương nhiên vậy. (Nếu không tin thì bạn hãy hỏi bất kỳ một bậc phụ huynh nào đã đưa một chiếc iPad cho một đứa trẻ đang mặc tã mà xem).
Thật khó để có thể tưởng tượng các công cụ và ứng dụng mà con bạn sẽ sử dụng sau này. Nhưng điều quan trọng nhất, khi bạn giới thiệu cho con bạn cách lập trình, trong quá trình đó nó không chỉ đơn thuần là học lập trình, mà nó cũng lập trình để học, như giáo sư Mitchel Resnick thuộc đại học MIT đã nói như vậy.
Trong trường hợp của mình thì tôi nghĩ rằng việc lập trình đã tạo ra sự thích thú đối với con gái tôi và đó chính là điều mà tôi muốn khuyến khích, cũng tương tự như việc đọc hoặc vẽ tranh vậy. Ở tuổi lên 7, thì nó còn quá nhỏ để có thể nghĩ về các loại câu lệnh “If-then”, nhưng động cơ thúc đẩy thì vẫn giống nhau: nó muốn làm một trò game hoặc một nhân vật hoạt hình và thậm chí không đặt câu hỏi về những công cụ trong tay nó. Các ứng dụng tuyệt vời có sẵn ngày nay đã cuốn hút trí tò mò và dạy nó các nền tảng thông qua việc khám phá và chơi. Hay nói cách khác, đó chính là cách tốt nhất để học.
Sau đây là các ứng dụng mà chúng tôi đã thử qua và một số khác thì được đề xuất bởi những bậc phụ huynh khác. Nhiều trong số chúng là các ứng dụng chạy trên iPad, đơn giản bởi vì giao diện cảm ứng thì có nhiều trực quan hơn đối với bọn trẻ, nhưng cũng có những ứng dụng trên desktop và trên nền web rất tốt dành cho các học sinh ở đủ mọi loại lứa tuổi.
Lập trình game cho trẻ nhỏ
Những ứng dụng tốt nhất dành cho trẻ em thì tập trung nhiều vào phần đồ họa và các hiệu ứng chuyển động đơn giản thay vì phải viết code thực sự. Trong khi hầu hết những kiểu ứng dụng dạy học làm game kiểu này đều dành cho lứa tuổi trên 8, nếu con bạn đã đủ lớn để có thể đọc, hiểu về các nguyên nhân, hiệu ứng và động cơ thúc đẩy, thì bạn có thể giới thiệu những trò game dưới đây cho các em thậm chí ở độ tuổi pre-K (khoảng 4 đến 5 tuổi).
Daisy the Dinosaur (iPad, miễn phí): Ứng dụng thao tác với một chú khủng long vui nhộn, con gái tôi Elise đã tự khám phá ra ứng dụng này và chúng tôi đã cài đặt nó một năm về trước. Ứng dụng này gợi ý trẻ em thao tác với một nhân vật là chú khủng long Daisy, thông qua những thách thức bao gồm các vòng lặp, sự kiện, và những kiến thức căn bản về lập trình khác (ví dụ: khi chạm vào thì con khủng long sẽ di chuyển về phía trước). Cách thao tác khá đơn giản về lập trình cơ bản, nhưng sự đơn giản đó đủ để mang lại một lợi ích rất lớn cho bọn trẻ. Có một phiên bản miễn phí của ứng dụng này cũng rất tốt, vì vậy bạn có thể làm cho chú khủng long Daisy nhảy lên không trung hoặc đi giật lùi theo ý muốn. (Tuy nhiên, điểm đặc biệt là nó có một công cụ tạo hiệu ứng động rất tuyệt vời là Toontastic, chương trình này không dạy lập trình logic, mà đúng hơn là nó dạy theo lối kể chuyện).
Move the Turtle (iPhone/iPad, $2.99): Tương tự như Daisy the Dinosaur, ứng dụng Move the Turtle dạy các khái niệm lập trình căn bản bằng cách thao tác một đối tượng đồ họa thông qua những thử thách. Vâng, một chú rùa rất đẹp (giống như ở ngôn ngữ lập trình Logo của thập niên 60 đến 80 về trước). Ứng dụng này được đề xuất bởi một số bậc phụ huynh thông qua mạng xã hội Twitter, nhưng con gái tôi Elise đã từ chối thử nó bởi vì: khái niệm của ứng dụng này giống với của ứng dụng Daisy the Dinosaur, bạn chỉ có thể làm một số thứ nhất định đối với chú rùa đó, và con gái tôi muốn làm bất cứ điều gì mà nó muốn với nhiều nhân vật hơn. Hay nói cách khác, nó đã phát triển kỹ năng và không còn thích các ứng dụng dạy dựa trên tác vụ đơn giản nữa. Ngoài ra, với Move the Turtle thì bọn trẻ có thể học được rất nhiều khái niệm về logic trong lập trình. (Tôi thì thích các tính năng và giao diện của ứng dụng Move the Turtle hơn là Daisy the Dinosaur, nhưng không lẽ tôi lại đi tranh cãi với một đứa trẻ 7 tuổi?)
Các công cụ đồ họa dành cho người mới bắt đầu ở tất cả mọi lứa tuổi
Quay trở lại các ứng dụng đơn giản thao tác với một nhân vật, bạn sẽ tìm thấy các ứng dụng dạy lập trình thông qua việc kéo-thả các nhân vật cùng với một khối code. Nó giống như trò chơi xếp hình LEGO, nhưng ở đây là ứng với từng khối code. Trong đó, con bạn có thể kéo từng khối code để thao tác nhiều hơn đối với một đối tượng (truy cập nhiều dòng lệnh, biến và sự kiện) để tạo ra các hiệu ứng hoạt hình hoặc các trò game.
Hopscotch (iPad, miễn phí): Cũng chính từ nhà sản xuất ra ứng dụng Daisy the Dinosaur, nhưng Hopscotch là một ứng dụng giới thiệu lập trình bằng hình ảnh đến trẻ em từ 8 đến 12 tuổi. Trẻ em có thể lựa chọn một trong nhiều nhân vật có sẵn hoặc tự tạo ra một đối tượng và thao tác với chúng bằng cách kéo-thả các khối phương thức. Ví dụ, bạn có thể di chuyển một đối tượng bằng cách thiết lập tọa độ X-Y cho nó, thay đổi kích thước nhân vật, hoặc lặp lại các hành động. Ứng dụng này đưa ra một số lượng vừa phải các điều khiển dành cho bọn trẻ có thể tự vọc vậy. Chúng cũng bị giới hạn trong một số thao tác có thể làm, nhưng điều này nghĩa là bọn trẻ có thể chơi cùng với chiếc iPad một mình và học cách làm thể nào để mỗi phương thức cơ bản có thể làm việc. (Vì vậy, bạn sẽ không cảm thấy áy náy khi nói rằng “Con tự tìm hiểu đi” khi lũ trẻ hỏi “Làm thế nào để con có thể làm cho con khỉ này di chuyển thụt lùi vậy?”) Trong một tuần, con gái tôi Elise đã tạo ra được 18 hiệu ứng chuyển động trên Hopscotch mà không cần sự trợ giúp của tôi, thay thế những khối lệnh cho mỗi nhân vật mà nó muốn chuyển động. Hầu hết những chuyển động này thì rất dễ khám phá để có thể làm đối với các đối tượng, nhưng Elise đã học thêm được các cách làm thế nào để định vị các đối tượng bằng toán và sự kiện về thời gian.
Scratch (Web, miễn phí): Là một dự án của trường đại học danh tiếng MIT, được thiết kế đặc biệt dành cho trẻ em từ 8 đến 16 tuổi, Scratch đã được sử dụng bởi các giáo viên và các bậc phụ huynh trên khắp thế giới để giúp bọn trẻ có thể phát triển các hoạt hình, các câu chuyện có tương tác, và các trò game thông qua việc kéo thả các khối code. Nó là công cụ lập trình đầu tiên mà tôi đã giới thiệu với con gái mình, khi mà tôi tham gia một khóa học về lập trình một năm về trước. Tôi nhớ mình đã nói rằng, “Này, Elise, con xem cái này có hay không? Bằng cách thay đổi khối này thì mẹ có thể làm cho con chó này kêu meo meo y chang như một con mèo đấy.” Và nó đã gắn bó với phần mềm này từ lúc đó.
Scratch vẫn là công cụ lập trình ưa thích của chúng tôi, chủ yếu là bởi vì nó đưa ra rất nhiều điều khiển. Nó giống với ứng dụng Hopscotch ở phía trên, nhưng mạnh mẽ hơn, và giống App Inventor ở phía dưới, nhưng thân thiện người dùng hơn. Trong Scratch, có một thư viện rất lớn các đối tượng cho bạn có thể sử dụng hoặc tùy biến. (Đừng đánh giá thấp tầm quan trọng của việc đứa trẻ có thể thay đổi màu sắc của một nhân vật). Và cùng với rất nhiều các phương thức có sẵn, bạn có thể khiến nhân vật này làm rất nhiều thứ. Elise muốn làm một trò game gọi là “Spider Run” (giống như trò Temple Run, nhưng với một tính năng là nhân vật người nhện sẽ đuổi theo bạn và ghì bạn xuống đất để làm giảm tốc độ của bạn), và công cụ duy nhất mà chúng tôi đã bàn bạc để có thể thực hiện được điều này là Scratch. Mặc dù chúng không thể chuyển thành những ứng dụng trên thiết bị di động, nhưng bọn trẻ có thể tạo ra và lưu lại hoặc chia sẻ trên trang web này.
Stencyl (Windows, Mac, Lunux; miễn phí): Scratch là công cụ ưa thích nhất của chúng tôi, nhưng Stencyl là sự lựa chọn tiếp theo. Mặc dù nó có nhiều tính năng thua Scratch, nhưng điểm đặc biệt của nó là các trò game tạo ra từ ứng dụng này có thể chạy trên rất nhiều nền tảng khác nhau (iOS, Android, Flash, HTML5, Windows, và Mac). Có trên 12.000 trò chơi đã được tạo ra bằng cách sử dụng Stencyl; tôi không thể chờ để thử nó nữa.
Một số gợi ý khác: từ Robert Hirsch trên mạng xã hội Google+ về những ứng dụng chạy trên iPad:
DynamicArt [$2.99] cũng giống như Scratch nhưng tập trung nhiều hơn vào việc tạo ra các thao tác vẽ […]
Kodable [miễn phí] rất thân thiện cho trẻ nhỏ và làm bọn trẻ có thể làm các thủ tục lập trình để giải quyết các vấn đề.
Có một ứng dụng gọi là A.L.E.X [miễn phí] có thể làm những việc tương tự với các đối tượng robot.
Tôi không nghĩ ứng dụng Codea [$9.99] này thì phù hợp cho một đứa trẻ 7 tuổi, nó có một bộ thông dịch ngôn ngữ Lua cho iPad. Rất nhiều thứ rất hay đã được tạo ra bằng chương trình này, nhưng với thiết kế hướng đối tượng của nó thì có thể gây khó khăn cho bọn trẻ, trừ khi bạn đã biết Lua là gì để giúp đỡ chúng.
Một số công cụ mạnh mẽ khác dành cho trẻ lớn tuổi hơn
Những ứng dụng sau đây thì cao cấp hơn, tập trung vào cả việc viết code và giao diện để nó có thể hoạt động.
App Inventor (Web, miễn phí): Là một dự án cũ của hãng Google, bây gờ được điều hành bởi trường đại học MIT, App Inventor thì khá giống với Scratch cùng với việc kéo-thả các khối code. Tuy nhiên, nó bao gồm các phương thức, hàm và những thành phần khác mà bạn có thể sử dụng để tạo ra một ứng dụng Android — và đó là một tính năng rất tuyệt. Sau khi vọc vậy cùng với App Inventor, bạn có thể tạo ra một ứng dụng thực thụ trên Android.
Đây thực sự là một công cụ trực tuyến rất mạnh mẽ, nhưng giao diện của nó thì không được thân thiện lắm với bọn trẻ. Nó có thể phù hợp cho học sinh trung học cơ sở hoặc lớn hơn (thậm chí là người lớn), không có nhiều hướng dẫn và các đặc trưng thì không trực quan để sử dụng.
Alice (Windows, Mac, Linux; miễn phí): Là một ứng dụng desktop của đại học Carnegie Melon, có thể chạy trên các hệ điều hành Windows, Mac và Linux. Nó sử dụng một môi trường lập trình 3D duy nhất để dạy bọn trẻ các kiến thức nền tảng trong lập trình. Có nhiều tính năng cao cấp hơn những công cụ lập trình thân thiện với trẻ em khác, mặc dù nó thì phù hợp với trẻ lớn tuổi một chút. Một đặc trưng rất hay là: bọn trẻ có thể nhìn thấy những đoạn code phía sau các dự án của chúng trong phần mềm này. Bạn cần phải cài đặt Java runtime để có thể chạy Alice.
Các bài học bằng Video từ trang web Pluralsight (Web, miễn phí): Trang web chuyên cung cấp các khóa học trực tuyến là Pluralsight đưa ra 3 khóa học bằng video dành cho trẻ em, dạy chúng cách làm thế nào để có thể lập trình bằng C#, hoặc Visual Basic, cách sử dụng Scratch và App Inventor. Nếu bọn trẻ nhà bạn đã đủ lớn để có thể ngồi xem các hướng dẫn trên những video này, thì trang web có thể giúp cung cấp việc thực hành thông qua việc chơi mà học.
Codecademy và Khan Academy (Web, miễn phí): Những công cụ tương tác trực tuyến này thì phù hợp hơn cho trẻ lớn tuổi (có thể ở mức trung học và lớn hơn) và cả người lớn. Chúng là một trong những cách tốt nhất để học lập trình, bởi vì bạn có thể nhìn thấy những thay đổi xảy ra trong một màn hình (một bên là code, một bên sẽ hiển thị ngay kết quả). Codecademy dạy các kiến thức nền tảng về web, jQuery, JavaScript, Python, Ruby, PHP và một số thứ khác. Còn môi trường lập trình của Khan Academy thì sử dụng JavaScript.
Chúng ta học được điều gì từ việc dạy trẻ em học lập trình
Chúng tôi đã có rất nhiều niềm vui khi sử dụng những ứng dụng ở trên, nhưng tôi nghĩ rằng đó là bởi vì chúng tôi nhìn nó không phải từ góc độ “hãy học lập trình” mà từ góc nhìn “này, muốn làm một cái gì đó không? Chúng ta có thể sử dụng công cụ này để làm nó”. Trong một buổi thuyết trình của Sarah Mei về việc dạy ngôn ngữ Ruby cho trẻ em, cô nói nên thiết lập những mục tiêu cụ thể khi bạn bắt đầu công việc này, như là “Tôi muốn Lily được hào hứng về những thứ mà nó đã tự khám phá sau khi chúng tôi hoàn thành”. Đối với chúng tôi, việc học lập trình không phải là kết quả cuối cùng, nhưng làm một thứ gì đó mới là quan trọng (thông qua quá trình thử và sai và học được những kỹ năng cơ bản trong quá trình này).
Theo cách này, tôi đã học được một điều rằng các bậc phụ huynh thường phải biết cách im lặng. Phần khó nhất đó là kiềm chế việc vòng tay qua vai con mình để giằng lấy con chuột và nói rằng “không, sử dụng chức năng này, đừng sử dụng cái kia”. Thay vì đó, tôi đã học về những đặc trưng trong các ứng dụng mà con tôi đang sử dụng và có thể nói rằng, “này, hãy xem cái này làm gì” hoặc “điều gì sẽ xảy ra nếu chúng ta làm thế này” và chúng tôi đã khám phá cùng nhau về công việc lập trình đó.