Python is Now the Most Popular Introductory Teaching Language at Top U.S. Universities (Translated Article)

If you don't know Vietnamese, please visit the link at the end of this article for the English version.

Hiện nay, ở Mỹ, Python hiện đang là ngôn ngữ lập trình được đưa vào giảng dạy ở các khóa học mở đầu về KHMT phổ biến nhất. Để làm rõ thực tế này, hôm nay, tôi xin dịch một blog của Philip Guo - trợ giảng tại bộ môn KHMT, đại học Rochester (the University of Rochester). Tác giả đã thực hiện một cuộc khảo sát về việc giảng dạy các khóa học mở đầu về KHMT tại các bộ môn KHMT hàng đầu nước Mỹ.

Tóm tắt (Summary)

Vào thời điểm viết bài phân tích này (tháng 7 năm 2014), Python là ngôn ngữ phổ biến nhất được lựa chọn để dạy các môn học mở đầu về Khoa học máy tính (Computer Science - CS) ở các bộ môn KHMT danh tiếng của Mỹ.

Chính xác thì có 8/10 bộ môn KHMT top đầu và 27 bộ môn trong top 39 dùng Python để giảng dạy cho các khóa CS0 và CS1.

Động lực (Motivation)

Python ngày càng phổ biến và được dùng làm ngôn ngữ đầu tiên dùng để dạy cho người chưa có kinh nghiệm (novices). 3 năm trước đây, Mark Guzdial có chia sẻ về sự nổi lên của Python và dự đoán về các ngôn ngữ giảng dạy trong tương lai. Top các bộ môn KHMT hàng đầu của MIT hay UC Berkeley gần đây đã chuyển các khóa mở đầu (introductory courses) qua Python.

3 đơn vị cung cấp MOOC (Massive Open Online Course - Khóa học trực tuyến mở đại trà) lớn nhất (edX, CourseraUdacity) đều đưa ra các khóa học mở đầu được giảng dạy với Python. Các giảng viên (professors) trong các chuyên ngành hẹp khác (diverse subfields) cũng đang tán thành việc dạy Python cho người chưa có kinh nghiệm.

Tôi đã theo dõi và thấy rằng công cụ học tập (eduactional tool) mà tôi phát triển trong 4 năm qua, Online Python (www.pythontutor.com), có mức sử dụng tăng vọt cùng với mức độ phổ biến của ngôn ngữ này.

Tuy nhiên, mặc dù có nhiều câu chuyện xoay quanh vấn đề này, nhưng tôi chưa hề thấy những con số thống kê chỉ ra mức độ phổ biến của Python trong việc giảng dạy lập trình. Vì vậy, tôi đã cố gắng tìm ra chúng bằng cách khảo chứng xem có bao nhiêu bộ môn KHMT hàng đầu ở Mỹ sử dụng nó để giảng dạy các khóa học mở đầu. Cũng trong thời gian này, tôi cũng đã lên danh mục về mức độ phổ cập của các ngôn ngữ giảng dạy khác.

Tại sao tôi lại viết một bài phân tích về vấn đề này? Bởi vì việc lựa chọn ngôn ngữ để dạy ở thời điển ban đầu sẽ phản ánh quan điểm giáo dục của mỗi bộ môn và ảnh hưởng đến những ấn tượng đầu tiên của sinh viên về KHMT. Ngôn ngữ mà các bộ môn KHMT top đầu ở Mỹ lựa chọn có thể chỉ ra xu hướng chung trong giảng dạy KHMT bởi vì họ thường là các đơn vị tiên phong cho phần còn lại của cộng đồng giáo dục.

Phương pháp luận (Methodology)

Tôi quan tâm đến 39 bộ môn KHMT hàng đầu ở Mỹ (xếp hạng bởi U.S. News năm 2014). Thực tế thì chẳng có cái hệ thống tính rank nào là hoàn hảo, và nó cũng thay đổi theo thời gian. Đặc biệt, hệ thống này chỉ đề cập đến các trường được giảng dạy và cấp bằng tiến sĩ (Ph.D.-granting universities). Top 39 này không bao gồm rất nhiều trường đại học mà tôi lưu tâm, trong đó có ngôi trường mà tôi đang giảng dạy và nghiên cứu. Chúng ta có thể có những tranh cãi bất tận về các trường được chọn cũng như làm thế nào để xếp hạng chúng. Nhưng dù sao, tôi vẫn phải chọn một hệ thống tính rank và giới hạn (việc lấy ra top 39 để khảo sát).

Với mỗi trường đại học, tôi khảo sát các khóa học CS0 và CS1 ở các bộ môn như CS (Computer Science), CSE (Computer Science and Engineering), và EECS (Electrical Engineering and Computer Science). CS1 là khóa học bắt buộc đầu tiên dành cho sinh viên chuyên ngành KHMT, còn CS0 là khóa học về lập trình cơ sở (không phải kỹ năng máy tính cơ bản) dành cho sinh viên các chuyên ngành khác hoặc dành cho những ai cần có sự chuẩn bị thêm trước khi bước vào khóa CS1. Cả CS0 và CS1 đều không có các học phần tiên quyết (prerequisites), bởi vì nếu không như vậy, chúng không thể là những khóa học đầu tiên mà sinh viên tham gia. Chú ý là ở đây, tôi không đề cập đến các khóa học mini (mini-courses), các khóa học cấp tốc (accelerated courses), hay các khóa học lập trình đưa ra bởi các bộ môn khác. Thực sự thì không có một định nghĩa chính thức nào cho CS0 hay CS1, vì vậy tôi phải sử dụng một số ý kiến cá nhân. Tôi đã cố gắng tuân theo các mô tả chính thức về các khóa học mà các bộ môn đưa ra.

Mặc dù có một số giáo viên coi CS1 như là khóa lập trình cơ sở, nhưng trong bài phân tích này, tôi vẫn chủ đích nhóm CS0 và CS1 lại với nhau bởi vì những khóa học này là nơi mà rất nhiều sinh viên, không kể chuyên ngành, biết đến ngôn ngữ lập trình đầu tiên ở bậc đại học / cao đẳng. Đối với việc giáo dục KHMT ở bậc phổ thông (K-12 education) (chú ý rằng - theo tìm hiểu cá nhân của người dịch - rất ít bang ở Mỹ đưa KHMT vào giảng dạy ở bậc phổ thông), những khóa học này cũng là nơi mà nhiều học sinh, đặc biệt nữ giới và người ở tuổi vị thành niên (minorities), tiếp nhận ngôn ngữ lập trình đầu tiên trong đời. Thậm chí thì với những người có kinh nghiệm lập trình trước đó, việc tiếp xúc chính thức (officially-sanctioned exposure) với KHMT ở bậc đại học / cao đẳng vẫn rất hữu ích. Tôi muốn đặt CS0 ngang hàng với CS1 bởi vì lập trình đang thâm nhập khắp các ngành khoa học, kỹ thuật, và thậm chí cả các môn học non-STEM (STEM - "Science, Technology, Engineering, and Mathematics" - "Khoa học, Công nghệ, Kỹ thuật và Toán học"), cũng như là việc ngày càng có nhiều sinh viên các ngành khác tham gia khóa học CS0 này. Bên cạnh đó thì một bộ phận đông đảo các sinh viên chuyên ngành KHMT, đặc biệt là các sinh viên chưa tiếp xúc nhiều với lập trình, cũng tham gia khóa học CS0 trước khi bắt đầu CS1. Do đó, CS0 xứng đáng là một bước đệm quan trọng (important gateway) đưa sinh viên đến với lĩnh vực máy tính mà đáng lẽ ra họ không bao giờ biết là mình có đam mê với lĩnh vực này.

Kết quả (Results)

Lược đồ dưới đây thể hiện tần suất sử dụng các ngôn ngữ lập trình trong công tác giảng dạy hai khóa học mở đầu về KHMT (CS0 và CS1) ở các bộ môn KHMT hàng đầu nước Mỹ:

Chart

Bàn luận (Discussion)

Mặc dù tôi là fan lớn của Python, tôi sẽ cố gắng bàn về sự thật mà không có một chút xã luận nào.

Python là ngôn ngữ phổ cập nhất trong danh sách này. Nó đã trội hơn một chút so với Java - ngôn ngữ đã ngự trị bảng xếp hạng này hàng chục năm trước đó. Một số trường đã chuyển hoàn toàn qua Python, trong khi một số lại thực hiện việc này một cách nửa vời, tức là sử dụng Python cho CS0 và Java cho CS1. Tuy nhiên, ở các trường cấp III, Java vẫn được sử dụng trong các chương trình giảng dạy AP (Advanced Placement).

Vị trí tiếp theo thuộc về MATLAB, ngôn ngữ thường được dùng trong khóa CS0 để giới thiệu lập trình cho các nhà nghiên cứu khoa học cũng như các kỹ sư. CC++ ở các vị trí kế tiếp nhưng thực sự thì chúng đã bị thay thế mạnh mẽ bởi Java trong khoảng chục năm qua. Các trường cấp III theo chương trình AP thậm chí còn thay hẳn C++ bằng Java từ năm 2003. Ngoài ra, một số khóa mở đầu sử dụng C (ví dụ như CS50 của đại học Harvard) cũng dạy đồng thời các ngôn ngữ khác thay vì đơn thuần dạy mỗi C.

Tiếp đến là Scheme - ngôn ngữ phổ biến ở một bộ phận nhỏ các nhà sư phạm và các nhà nghiên cứu ngôn ngữ lập trình (programming language researchers).

Scratch là ngôn ngữ lập trình trực quan duy nhất trong danh sách này. Đây là một trong những ngôn ngữ phổ biến nhất ở thể loại của nó, gồm các project liên quan như Alice, App Inventor, Etoys, Kodu, StarLogo, TouchDevelop. Các nhà phát minh ra những ngôn ngữ kiểu này chủ yếu tập trung vào bậc giáo dục phổ thông. Điều này lý giải tại sao chúng không nhận được nhiều sự lựa chọn ở bậc đại học.

Cuối cùng, chú ý rằng có 3 nhóm các ngôn ngữ quan trọng khác không có tên trong danh sách này bởi vì chúng không được lựa chọn bởi các bộ môn top đầu trong việc giảng dạy các khóa học mở đầu về KHMT mà tôi khảo sát:

Nếu chúng ta thực hiện lại cuộc khảo sát này trong 5, 10 hay 20 năm nữa, ngôn ngữ nào sẽ thống trị??

Nguồn: http://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-us-universities/fulltext