Lạm bàn về thiết kế chương trình đào tạo KHMT (4)

Ngô Quang Hưng | 22 tháng 10, 2005 | Bản để in Bản để in

  1. Dạy gì trong các lớp đầu tiên của KHMT?

Như đã viết, ba phương pháp dạy lập trình cơ bản hiện nay là (1) ngôn ngữ thủ tục trước (C/Pascal/Basic/…), (2) ngôn ngữ hướng đối tượng trước (C++/Java/Smalltalk/…), và (3) ngôn ngữ hàm trước (Scheme/Lisp). Việc chọn lựa phương pháp nào trong ba phương pháp này nên đồng nhất với 3 mục tiêu đã liệt kê, trong đó cá nhân tôi cho rằng mục tiêu số 1 là quan trọng nhất: truyền tải cho sinh viên cái thần của KHMT. Chữ “thần” này rất rộng, và có lẽ mỗi cá nhân tiếp xúc với KHMT sẽ có cảm nhận và cách hiểu khác nhau về nó.

Đối với sinh viên mới bước vào ngành, ta cần phát triển cho họ các mô hình nhận thức (cognitive models) trong não về các khái niệm cơ bản của KHMT. Thay vì định nghĩa cụ thể, ta xét một vài ví dụ về cảm nhận cá nhân với KHMT:

  • Trong bài chung qui chỉ tại Cantor, tôi có viết sơ bộ về ý nghĩa của khái niệm tính toán (computation), một trong những đóng góp sâu sắc nhất của KHMT cho kho tàng tri thức của nhân loại. Tính toán không bị ràng buộc bởi một mô hình cụ thể nào đó (như mô hình máy Turing, mô hình RAM/Bus/CPU, …). Không ít các nhà khoa học tin rằng các quá trình sinh học và vật lý là các quá trình tính toán, thiên nhiên có các thuật toán của nó. Không phải ngẫu nhiên mà KHMT đang vươn cánh tay non trẻ của nó sang sinh học, vật lý, kinh tế, toán học, với các phân ngành phát triển cực nhanh những năm gần đây như computational biology, computational physics, quantum computing, computational game theory, computational chemistry, computational neuroscience, … Giải Nobel Kinh Tế 2005 được trao cho các game theorists, khoảng 30/40 năm nữa sẽ có Nobel kinh tế cho một computational game theorist, tôi tin chắc là như thế! Còn Nobel vật lý liên quan đến tính toán có lẽ sẽ đến sớm hơn nữa. Chú ý rằng các phân ngành kể trên không đơn thuần là ứng dụng máy tính vào một khoa học khác. Rất nhiều các quá trình của tự nhiên về cơ bản là quá trình tính toán, và chúng ta mới chỉ bắt đầu khám phá các quá trình tính toán trong tự nhiên.
  • KHMT không phải là Java, C++, hay lập trình web. Thật đáng buồn khi một sinh viên máy tính nghĩ về ngành máy tính bằng ánh mắt của một lập trình viên. Lập trình có thể là công việc ta phải làm hàng ngày, nhưng mỗi chúng ta cần phải hiểu rằng lập trình chỉ là một phương pháp bổ củi để hiện thực hóa các ý tưởng thiết kế tuyệt đẹp, các thuật toán sâu sắc, hay các hacks thông minh. Bổ củi và khắc gỗ hiển nhiên là khác nhau.
  • Cũng thật đáng buồn nếu tầm nhìn của dân máy tính bị gói gọn từ Bill Gates sang Steve Jobs, từ IBM đến Oracle, hay từ search engines đến spreadsheets. Khi nghĩ đến Vật Lý ta không chỉ liên tưởng đến CEO của các công ty làm máy tăng tốc hạt, các xưởng sản xuất bom nguyên tử, hay làm vật liệu bán dẫn. KHMT còn rất trẻ so với Vật Lý, nhưng KHMT cũng có một câu chuyện cực kỳ truyền cảm để kể. Ảnh hưởng về mặt khái niệm của KHMT đến xã hội và các ngành khoa học khác nhiều không kể xiết.

Trở lại với ba kiểu dạy lập trình. Kiểu 1 và 2 có ưu điểm là các ngôn ngữ C/C++/Java được dùng rất phổ thông trong thực tế. Lập trình hướng đối tượng minh họa rất tốt nhiều khái niệm quan trọng như data abstraction, information hiding, inheritance, vân vân. Khuyết điểm lớn nhất của dạy kiểu 1 hay 2 là sinh viên thường phải lọ mọ trong mớ hỗn độn các cú pháp, các hàm, lớp, cấu trúc phức tạp của các ngôn ngữ này. Sự phức tạp không cần thiết của các cấu trúc cơ bản làm giảm đáng kể sự nhạy cảm về tầm quan trọng của ý tưởng. Thường thì các chương trình chập chững trong C/C++/Java được viết theo kiểu chắp vá, ý tưởng về thuật toán rất lộn xộn là vì lý do này.

Cá nhân tôi cho rằng kiểu 3: dạy ngôn ngữ hàm trước – đặc biệt là Scheme – là phương pháp hay nhất hiện có. Quyển Structure and Interpretation of Computer Program của Hal Abelson và Jerry/Julie Sussman là một trong những quyển sách cơ bản về KHMT hay nhất mà tôi biết. (Chú ý rằng quyển này bây giờ miễn phí trên web!) Các đề tài sâu sắc của KHMT được minh họa bằng Scheme, ngôn ngữ rất đơn giản về cú pháp nhưng rất hùng mạnh về khả năng biểu cảm các khái niệm. Khuyết điểm lớn nhất của phương pháp dạy Scheme trước là nó “thích” các sinh viên thông minh hơn.

Các phân tích ở trên cũng được áp dụng cho việc xác định các đề tài dạy trong lớp giới thiệu ngành. Có lẽ không cần phải viết gì thêm.

Chủ đề: Giáo dục |

4 lời bình cho bài “Lạm bàn về thiết kế chương trình đào tạo KHMT (4)”

  1. 1
    Anonymous viết:

    Lần đâu tiên tôi học lập trình bằng Lisp (tương tự như Scheme) thấy rất khoái, nhất là khi đọc những đoạn code viết bằng Lisp rất đẹp của thầy advisor và vài hủ lisp khác. Đúng là “coding” theo đúng nghĩa của từ này. Rất tiếc tôi không được học nó hồi undergrad. C++ cũng hay, mấy cái trò object-oriented cũng phức tạp ra trò. Java có lẽ là ngôn ngữ xấu xí, luộm thuộm nhất, mặc dù popular.

    Với những người thích test với những con số và dữ liệu, nên làm quen với matlab để nghịch ngợm với những thuật toán thông minh. Lập trình bằng matlab cũng có cái thú là đôi khi chỉ một vài dòng lệnh với ma trận đa chiều có thể mô tỏa được cả một thuật toán khá phức tạp. Cũng tiếc là tôi được không biết matlab cho đến năm cuối của undergrad.

     

    Người viết: XLN

  2. 2
    Anonymous viết:

    Co bac nao dung R o day khong? R la mot ngon ngu pho bien cua cac bac lam thong ke. Thiet ke cua R thi lai co nhieu diem giong nhu Lisp/Scheme. http://www.r-project.org/

    R tuong doi la kho dung (mostly command-line-oriented), nen nhung nguoi lam thong ke “choi boi” thuong tranh va chon e.g. Matlab Stat Toolbox/SPSS/SAS. Khi nao roi (e.g. sabbatical), toi dang dinh viet mot cai Eclipse plugin cho R. Eclipse la mot moi truong lam computing kha la tot, co the lam Java/C(++)/Python/Scheme/Latex, etc. Tu truoc den nay toi dung emacs rat nhieu, nhung tu khi chuyen sang Eclipse thi bi “cam hoa” luon va khong quay lai nua (chu nhung khi phai lam Lisp).

    Toi dong y voi bac NQH la quyen Abelson/Sussman rat hay.  

    Người viết: Vu Ha

  3. 3
    Anonymous viết:

    Em không có biết R, nhưng mà em biết Eclipse. Đúng là dùng Eclipse sướng mê mẩn, chạy nhanh hơn MS Visual Studio, mà lại free. Em hay dùng để viết Perl/C++/Java, chưa thử Latex bao giờ cả.

     

    Người viết: Bach Hung nguyen

  4. 4
    Anonymous viết:

    Peter Denning và Andrew McGettrick vừa có bài mới  trong tờ CACM về chương trình đào tạo KHMT. Ý chính là cần thêm “innovation” vào lõi của chương trình đào tạo. 

    Người viết: NQH

Ghi lời bình của bạn: