lap-trinh - It costs 5 mins to read

Trích từ Facebook của Giáo sư John Vũ - Mình đăng lại để dùng làm tài liệu tham khảo về sau khi mình có dự định đi dạy lập trình cho trẻ em sau tuổi 40.

Bị ấn tượng bởi công nghệ sau khi tham dự khóa Làm Giàu Bền Vững của anh Trần Đăng Khoa tại TGM nên mình cũng Không chắc là với sự tiến bộ của công nghệ AI thì nghề Lập trình còn tồn tại ở thời điểm đó không? - Đọc bài báo The End of Code mà giựt mình, bạn sẽ không cần viết code để sai bảo máy tính làm việc nữa, bạn sẽ huấn luyện chúng như một chú chó.

viphat


Nhiều sinh viên ghi danh học Công Nghệ Thông Tin nhưng không học tốt trong lớp lập trình rồi bỏ cuộc. Đa số cho lập trình là khó do đó điều quan trọng của các giáo sư dạy lập trình là làm sao xoá bỏ nỗi sợ lập trình của sinh viên để họ có thể phát triển kĩ năng này. Sau đây là một phương pháp đơn giản mà tôi đã áp dụng trong lớp lập trình tại Carnegie Mellon.

Vào đầu môn học, tôi nói với sinh viên rằng tôi sẽ không chấm điểm ba chương trình (Program) đầu tiên. Điều đó có nghĩa là họ có thể phạm sai lầm và không phải lo lắng về chương trình của họ có chạy hay không. Điều đó làm giảm bớt cảm giác căng thẳng của sinh viên về việc học lập trình. Điều tôi muốn là khuyến khích họ làm quen với máy tính, làm quen với việc viết mã. Mặc dầu những chương trình này không được cho điểm nhưng sinh viên phải nhận diện sai lầm mà họ phạm để cho tôi có thể sửa trong lớp và giải thích tại sao chương trình của họ không làm việc.

Trong ba chương trình tiếp, thay vì sửa sai lầm của họ, tôi cho họ xem những chương trình mẫu viết sẵn trên bảng và yêu cầu sinh viên sửa sai lầm của họ. Họ kiểm lại chương trình của mình, từng dòng một để tìm ra các sai lầm. Sau đó tôi kiểm soát lại rồi thảo luận về các sai lầm chung trong các chương trình này. Trong chương trình thứ nhất, phần lớn sinh viên đều có khả năng sửa được lỗi cú pháp của họ, một số có khả năng tìm ra sai lầm trong logic của họ. Nhưng ở chương trình thứ hai và thứ ba, it ai nhận ra vấn đề mà họ đã phạm phải, do đó tôi thường hướng dẫn cả lớp thảo luận để tìm ra những lỗi lầm mà đa số đều phạm, nhờ thế mà sinh viên bắt đầu hiểu tại sao chương trình của họ không làm việc. Nói cách khác, họ học từ sai lầm của họ. Tôi cũng cho lớp biết rằng ba chương trình sau sẽ không được cho điểm, để xả bớt sức ép nhưng từ giờ trở đi, nếu họ phạm cùng sai lầm lần nữa trong chương trình của họ, nó sẽ bị cho điểm xấu và anh hưởng đến kỳ thi cuối khóa.

Khi lớp tiếp tục, phần lớn sinh viên học cách nhận ra sai lầm riêng của mình và có khả năng sửa chúng. Qua thời gian, ít người phạm sai lầm và họ trở nên tự tin hơn khi kĩ năng lập trình của họ cải tiến. Vào lúc này, phần lớn sinh viên phát triển được khả năng viết mã nên tôi cho sinh viên kiểm chương trình lẫn nhau để họ học thêm về cấu trúc từ cách nhìn của người khác. Phần lớn sinh viên hiểu rằng bằng việc kiểm chương trình của bạn cùng lớp, họ có thể cải tiến kĩ năng viết mã riêng của họ.

Khi sinh viên cảm thấy thoải mái về lập trình, tôi tiếp tục xây dựng niềm tin của họ bằng việc cho các bài tập “Mini-hackathon” hàng tuần nơi họ phải giải quyết những vấn đề, từ dễ đến khó, bằng ngôn ngữ lập trình (xấp xỉ 100 tới 250 dòng mã) trong vòng nửa giờ. Bất kì ai kết thúc đầu tiên với kết quả đúng sẽ được thưởng. Kiểu thi đua này khuyến khích họ phát triển kĩ năng lập trình tốt hơn vì họ phải viết mã nhanh trong một thời gian cố định.

Từ những buổi thi đua ngắn hạn này, tôi có thể quan sát cách sinh viên làm việc. Một số dường như không thoải mái là họ có thể hoàn thành đúng thời gian đã phân, nhưng hoài nghi của họ nhanh chóng thay đổi khi họ ít tập trung vào thời gian và nhiều hơn vào kết quả. Sinh viên hài lòng nhất là những người nghĩ rằng họ không thể viết mã được nhưng rốt cuộc lại tìm ra được những thuật toán phức tạp hơn họ nghĩ và lập trình trôi chảy.

Sau năm hay sáu tuần, phần lớn sinh viên nói với tôi rằng viết mã đã trở thành thói quen tự nhiên như họ viết tiếng Anh. Họ thậm chí không nghĩ về cú pháp hay qui tắc thêm nữa.

Một sinh viên giải thích: “Bây giờ em thực sự biết về phương pháp tích cực của “Học qua hành” nghĩa là gì. Đầu tiên em học làm những điều căn bản thật dễ rồi chuyển qua các cấu trúc xem chương trình làm việc ra sao. Em học cái gì làm việc và cái gì không rồi áp dụng qui tắc để sửa các lỗi lầm của em. Đột nhiên nó trở thành một thói quen và khả năng viết mã của em phát triển.”

Tôi đã áp dụng phương pháp này trong nhiều lớp lập trình, bất kể đó là Java, C++ hay Python. Khi sinh viên không bị căng thẳng, lo lắng vì sự thất bại, họ tập trung nhiều hơn vào học tập. Khi sinh viên học từ sai lầm của họ, họ sẽ học tốt. Khi sinh viên được cho nhiều cơ hội hơn để thực hành, họ sẽ phát triển các kĩ năng của họ. Khi họ có kĩ năng, họ sẽ cảm thấy an ổn hơn và tin vào năng lực của họ.

Học qua hành” là việc cho sinh viên cơ hội để học theo sự tiến bộ cá nhân và thời gian. Là giáo sư, chúng ta phải tạo cơ hội và môi trường thích hợp để cho sinh viên phát triển kĩ năng của họ và họ chỉ học tốt nếu họ không sợ hãi.


Mọi người có thể follow Blog của Giáo sư tại đây: science-technology.vn. Giáo sư là người dịch và phóng tác quyển Hành trình về phương đông nổi tiếng. Đọc thêm thông tin về giáo sư tại đây - Giáo sư JOHN VŨ- Niềm tự hào của người Việt Nam.bao