Vì sao cần chọn Python là ngôn ngữ lập trình dạy trong trường phổ thông

Hiện nay ngôn ngữ lập trình bậc cao Python đang nổi lên như một ngôn ngữ lập trình được sử dụng nhiều nhất trên thế giới. Điều này được giải thích bằng các lý do sau:

– Python là ngôn ngữ lập trình bậc cao khá đơn giản, dễ học, dễ viết.

– Cách viết lệnh của Python khá đặc biệt, sử dụng các dấu cách (viết thụt vào) để mô tả các nhóm (block) lệnh. Đặc điểm này làm cho việc viết lệnh Python gần giống với cách viết, trình bày văn bản hàng ngày. Chính đặc điểm này làm cho ngôn ngữ lập trình Python rất dễ viết, trong sáng, ngày càng phát triển và được đưa vào môi trường giáo dục thay cho các ngôn ngữ truyền thống như Pascal, C hay Java.

– Python là ngôn ngữ mã nguồn mở và cho phép cộng đồng có thể đóng góp bằng cách bổ sung các module, các kho hàm số, thư viện thuật toán. Điều này làm cho Python phát triển bùng nổ trong giới khoa học và giáo dục đại học. Đặc biệt trong một số ngành mũi nhọn của CNTT như IoT, trí tuệ nhân tạo (AI), dữ liệu lớn (big data) và CMCN 4.0, các phát triển rất nhanh thời gian gần đây của công nghệ đều gắn liền với Python.

– Ngoài các lý do nêu trên, Python còn có một tính chất khác biệt nữa: Python là ngôn ngữ thông dịch và luôn có môi trường tương tác Python Shell đi kèm. Chính môi trường tương tác này sẽ giúp ích rất nhiều cho những người muốn làm quen và học Python.

Thời gian gần đây, cùng với phong trào STEM phát triển mạnh, các ngôn ngữ lập trình trực quan lần lượt ra đời như Scratch đã tạo ra một cuộc cách mạng mới, bùng nổ của giáo dục Tin học trong nhà trường. Lần đầu tiên trong lịch sử, định hướng Khoa học máy tính của môn Tin học được đưa xuống cho học sinh Tiểu học. Cuộc cách mạng này sẽ có ý nghĩa to lớn và lâu dài mà chúng ta chưa thể đánh giá hết ngày hôm nay. Rất may mắn là Python chính là ngôn ngữ lập trình thích hợp dùng trong nhà trường, cho lứa tuổi cấp THCS, THPT, phù hợp với cả 2 định hướng phát triển chính của môn Tin học hiện nay là STEM và ALGORITHM. Tôi sẽ phân tích sâu hơn ý nghĩa này của Python.

Như chúng ta đã biết, Bộ Giáo dục và Đào tạo đã ban hành Chương trình Giáo dục Phổ thông mới, còn gọi là Chương trình 2018. Trong chương trình này môn Tin học có nhiều thay đổi lớn nhất: Môn Tin học sẽ là môn học chính thức cho học sinh từ lớp 3 đến lớp 12. Từ cấp THPT, tức là từ lớp 10, môn Tin học sẽ được tách thành 2 định hướng riêng, Tin học ứng dụng (ICT) và Khoa học máy tính (CS).

Một trong những thay đổi lớn nhất của môn Tin học trong Chương trình 2018 là cách tiếp cận mới về nội dung của môn học này. Cách tiếp cận này bắt nguồn từ những phát minh mới nhất thời gian gần đây như CMCN 4.0, các ứng dụng đa dạng của trí tuệ nhân tạo AI, Internet vạn vật IoT, sự xuất hiện của các ngôn ngữ lập trình trực quan như Scratch, sự phát triển bùng nổ của hướng giáo dục STEM trong trường học.

Theo mô hình Chương trình 2018, kiến thức môn Tin học trong trường phổ thông sẽ được phân tách thành 3 mạch (phân môn) chính như sau:

1. Khoa học máy tính (CS – Computer Science).

2. CNTT và ứng dụng (IT – Information Technology).

3. Học vấn số hóa phổ thông (DL – Digital Literacy).

Trong mô hình trên, phân môn Khoa học máy tính (CS) sẽ là quan trọng nhất, đóng vai trò trung tâm, cốt lõi của môn Tin học trong tương lai.

Trong 3 hướng này, ICT và DL là những nội dung mà giáo viên Tin học hiện nay vẫn đang giảng dạy, do đó sẽ không có gì bỡ ngỡ. Riêng hướng CS là hoàn toàn mới và khác biệt so với hiện nay.

Trong phần ghi Mục tiêu tổng quát của Chương trình môn Tin học mới, bản Đề cương mô tả như sau (xem tài liệu [42]):

Chương trình môn Tin học được xây dựng với mục tiêu góp phần hình thành, phát triển những phẩm chất chủ yếu và năng lực chung, đặc biệt là năng lực tin học đã được xác định trong Chương trình giáo dục phổ thông tổng thể. Môn Tin học trang bị cho học sinh hệ thống kiến thức tin học phổ thông gồm ba mạch kiến thức hoà quyện:

  • Học vấn số hoá phổ thông nhằm giúp học sinh có khả năng hoà nhập với xã hội hiện đại, sử dụng được các thiết bị số và phần mềm cơ bản thông dụng một cách có đạo đức, văn hoá và tuân thủ pháp luật.
  • Công nghệ thông tin và truyền thông nhằm giúp học sinh có khả năng sử dụng và áp dụng hệ thống máy tính giải quyết vấn đề thực tế một cách hiệu quả và sáng tạo.
  • Khoa học máy tính nhằm giúp học sinh hiểu biết các nguyên tắc cơ bản và thực tiễn của tư duy máy tính; tạo cơ sở cho việc thiết kế và phát triển các hệ thống máy tính.

Có thể tóm tắt nội dung, bản chất và định hướng phát triển tương lai của 3 nhóm phân môn của môn Tin học trong bảng sau:

DL – Học vấn số hóa phổ thôngICT – Ứng dụng CNTT và truyền thôngCS – Khoa học máy tính
Các kỹ năng cơ bản, tối thiểu cần có trong thời đại số hóa, ví dụ: kỹ năng sử dụng chuột, gõ bàn phím; soạn thảo văn bản, bảng tính, trình chiếu; khai thác Internet; sử dụng thư điện tử và mạng xã hội.Sử dụng công nghệ xử lý số, phần mềm để ứng dụng và tạo ra các sản phẩm số phục vụ theo yêu cầu. Ví dụ đồ họa, phim, ảnh, ứng dụng trong các công việc đời sống.  Lý thuyết và thực hành về biểu diễn số trong máy tính, xử lý số, tư duy giải quyết vấn đề, thiết lập chương trình, thuật toán, tư duy máy tính.  
Đây là những kỹ năng, năng lực tối thiểu đơn giản nhất cần có của mọi công dân trong thế giới số hiện nay. Có thể ví như học đếm trong môn Toán và học đánh vần trong môn Tiếng Việt.Mảng kiến thức này sẽ được phân thành 2 nhóm: 1. Nhóm ứng dụng CNTT, phần mềm vào các chuyên ngành, môn học khác với Tin học. 2. Nhóm các ứng dụng CNTT, truyền thông bên trong ICT.Lõi của môn học này là khái niệm tư duy máy tính (hay tư duy thuật toán). Đây là kiến thức cơ bản nằm bên dưới các khái niệm quen thuộc như phần mềm, phần cứng máy tính. Đi cùng mô hình tư duy này là một tập hợp các kiến thức lõi, cơ bản về lý thuyết cũng như thực hành, kỹ năng, năng lực phân tích, mô phỏng và giải quyết vấn đề.
Bên cạnh các kỹ năng số cơ bản, các kiến thức về bản quyền trí tuệ, đạo đức, văn hóa, pháp luật khi tham gia mạng xã hội số cũng là một cấu thành quan trọng của nhánh phân môn này.Nhóm thứ nhất sẽ được chuyển giao cho các bộ môn chuyên biệt. Môn Tin học chỉ còn tập trung ở nhóm thứ hai và sẽ định hướng cho nghề Tin học ứng dụng.Đây là định hướng chính, cơ bản nhất và quan trọng nhất của môn Tin học trong tương lai. Chính hướng này sẽ quyết định để môn Tin học trở thành một môn học lõi, có tính khoa học chặt chẽ, có tính kế thừa và phát triển liên tục cho các bậc học tiếp theo.

Như vậy trong môn Tin học mới, khái niệm Tư duy máy tính sẽ đóng vai trò trung tâm của môn học này. Chúng ta dành một chút thời gian để tìm hiểu kỹ hơn khái niệm quan trọng này.

Tư duy máy tính: năng lực tư duy quan trọng nhất của Khoa học máy tính hay môn Tin học trong nhà trường.

Xuất xứ của khái niệm Tư duy máy tính (computational thinking).

Người đầu tiên nhắc đến cụm từ này là Seymour Papert (29/2/1928 – 31/7/2016),
Giáo sư toán Đại học MIT đồng thời là tác giả của phần mềm và ngôn ngữ lập trình LOGO.  Ông là người đầu tiên muốn đưa việc giảng dạy thuật toán bằng phần mềm LOGO cho học sinh nhỏ tuổi.

“… the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent”.

Tạm dịch:

“… là các quá trình tư duy bao gồm cả mô tả và lời giải bài toán sao cho lời giải có thể được thể hiện rõ ràng và được thực hiện một cách hiệu quả bởi các tác tử xử lý thông tin”.

Giáo sư Jeannette Wing (từng là phó chủ tịch Microsoft) là người đầu tiên đưa ra định nghĩa của khái niệm này (tư duy máy tính), như sau:

“The solution can be carried out by a human or machine, or more generally, by combinations of humans and machines”.

Tạm dịch:

“Lời giải phải (và có thể) được thực hiện bởi con người hoặc máy tính, hoặc tổng quát hơn, bởi sự kết hợp (đồng thời) của con người và máy tính”.

Như vậy tư duy máy tính chính là kỹ năng rất cơ bản để chúng ta có thể biết, hiểu một cách có lý, logic về thế giới xung quanh dựa trên sức mạnh của máy tính.

Phân môn “Khoa học máy tính” là môn học dạy các nguyên tắc lý thuyết và thực hành cho mô hình tính toán máy tính và các ứng dụng của mô hình này. Lõi của môn học này là khái niệm tư duy máy tính hay tư duy thuật toán. Đây là mô hình tư duy lõi, cơ bản nằm bên dưới các khái niệm quen thuộc như phần mềm, phần cứng máy tính. Mô hình tư duy này sẽ cung cấp các khung kiến thức để giải quyết các bài toán, vấn đề nảy sinh. Đi cùng mô hình tư duy này là tập hợp các kiến thức lõi, cơ bản về lý thuyết cũng như thực hành, kỹ năng, năng lực phân tích, mô phỏng và giải quyết vấn đề.

Khoa học máy tính đi sâu vào tìm hiểu cách làm việc và vận hành của máy tính và các hệ thống máy tính, tìm hiểu các máy tính, chương trình được thiết kế và lập trình như thế nào. Học sinh sẽ được tiếp cận với các hệ thống tính toán theo mọi khía cạnh, có thể cần hoặc không cần có máy tính. “Tư duy máy tính” sẽ có ảnh hưởng đến cả các lĩnh vực khoa học khác như vật lý, sinh học, hóa học, ngôn ngữ, tâm lý học, kinh tế và thống kê. Cũng chính tư duy đó sẽ giúp học sinh có thể giải các bài toán, giải quyết vấn đề được đặt ra, thiết kế hệ thống, thiết kế sản phẩm, hiểu được sức mạnh cũng như giới hạn, hạn chế của con người và máy móc. Chính tư duy đó sẽ là yêu cầu năng lực chính mà mỗi học sinh cần hiểu và nắm bắt được dù chỉ một phần của nó. Nếu có các kỹ năng, tư duy, suy luận như “máy tính” thì học sinh sẽ hiểu tốt hơn và có nhiều cơ hội hơn trong việc tiếp thu các công nghệ “dựa trên máy tính” (computer-based technology) và sẽ được chuẩn bị tốt hơn khi trở thành công dân tương lai trong xã hội hiện đại.

Khoa học máy tính là môn học thực hành, trong đó rất khuyến khích sự dũng cảm và sáng tạo. Học sinh được học các nguyên tắc, lý thuyết hàn lâm của môn học và khuyến khích ứng dụng sáng tạo để mô phỏng được thế giới thực xung quanh các em. Sự kết hợp hài hòa giữa lý thuyết, thực hành và sáng tạo sẽ làm cho môn học này trở nên vô cùng hấp dẫn, giúp các học sinh có thể tạo ra được các sản phẩm vừa có ích (“Nó chạy rồi!”) vừa trí tuệ (“Nó quá đẹp!”).

Tư duy máy tính ở đây cần được hiểu là nói về khả năng con người có thể làm, chứ không phải máy tính có thể làm. Ví dụ khi nhắc đến tư duy máy tính, người ta thường nhắc đến các khả năng suy nghĩ và làm việc logic, có tính (tối ưu) thuật toán, có thể lặp lại và có thể trừu tượng hóa. Nói một cách đơn giản hơn, tư duy máy tính là khả năng của con người, sử dụng các tính năng ưu việt của máy tính để giải quyết các vấn đề thực tế của con người. Bảng sau cho chúng ta thấy rõ hơn sự khác biệt giữa 2 mạch kiến thức ICT và CS.

 ICT – CNTT và ứng dụngCS – Khoa học máy tính
Hệ thống máy tínhHệ thống máy tính được sử dụng như thế nào.Hệ thống máy tính được hoạt động, làm việc như thế nào.
Đối tượngCon người là trung tâm của môn học.Máy tính là trung tâm của môn học.
Định hướng cốt lõiTập trung, quan tâm đến sự phát triển của hệ thống hướng tới nhu cầu người sử dụng.Tập trung, quan tâm đến tư duy thuật toán, đến cách mà vấn đề có thể phân rã thành các bài toán, vấn đề nhỏ hơn để giải quyết.
Sản phẩmQuan tâm đến việc sử dụng các phần mềm, hệ thống đã có để đáp ứng nhu cầu hiện tại.Quan tâm đến việc thiết kế các hệ thống, phần mềm mới.
Sử dụng sản phẩmNhấn mạnh việc lựa chọn, đánh giá sử dụng phần mềm trong công việc.Nhấn mạnh đến các nguyên lý và kỹ thuật của hệ thống, phần mềm. Lập trình luôn đóng vai trò trung tâm của các vấn đề quan tâm.
Tư duy hệ thốngHệ thống ứng dụng CNTT phải hỗ trợ hoạt động của con người hay tự động hóa hoạt động của con người.Các ứng dụng thực tế cần được xây dựng thông qua các “tư duy của máy tính”. Thông qua “tư duy” này chúng ta sẽ hiểu được thế giới tự nhiên như bản chất nó có, nhưng theo cách hiểu của chúng ta, thông qua máy tính.
Định hướng chungĐịnh hướng ứng dụng, nghề nghiệp.Định hướng chuyên nghiệp, hàn lâm.

Như vậy trong phân môn Khoa học máy tính (CS), học sinh cần được trang bị các kiến thức, công cụ lập trình để giải quyết các vấn đề của mình. Bên cạnh tư duy thuật toán là định hướng kiến thức lõi của Khoa học máy tính như chúng ta vẫn hiểu, còn một hướng kiến thức phát triển quan trọng nữa, đó là định hướng làm ra các sản phẩm cụ thể phục vụ các mục đích khác nhau của cuộc sống hàng ngày. Định hướng này chính là STEM COMPUTING, có thể hiểu chính là định hướng giáo dục STEM của môn Tin học.

Mô hình của Tư duy máy tính của môn Tin học mới được mô tả trong sơ đồ đơn giản sau:

Chúng ta cùng xem lại trong chương trình môn Tin học mới 2018, mạch kiến thức Khoa học máy tính được phân bổ qua các cấp học như thế nào.

Cấp họcPhân bổ kiến thứcNgôn ngữ lập trình
Tiểu học– Làm quen với ngôn ngữ lập trình trực quan để làm ra các sản phẩm STEM đơn giản, các trò chơi đơn giản.Có thể chọn Scratch hoặc một ngôn ngữ lập trình trực quan bất kỳ.
THCS– Bắt đầu làm quen với khái niệm thuật toán. – Tìm hiểu sâu hơn ngôn ngữ lập trình trực quan để tạo ra các sản phẩm hoặc phần mềm hoàn chỉnh hơn.Có thể chọn ngôn ngữ lập trình Scratch hoặc một ngôn ngữ lập trình tương tự bất kỳ.
THPT (chuyên ngành CS)– Làm quen với một ngôn ngữ lập trình bậc cao. – Các chuyên đề lắp ráp và lập trình Robot. – Các chuyên đề sâu hơn về thuật toán và cấu trúc dữ liệu đơn giản.Có thể chọn một ngôn ngữ lập trình bậc cao bất kỳ như Pascal, C, Java, Python, …

Chúng ta thấy gì từ bảng trên?

– Định hướng CS – Khoa học máy tính trong môn Tin học mới đã được đưa xuống cho học sinh Tiểu học, bắt đầu từ lớp 3 và mạch kiến thức này sẽ được học liên tục cho đến lớp 12.

– Từ cấp Tiểu học, học sinh sẽ được làm quen với môi trường lập trình trực quan, đơn giản, bước đầu làm quen, dần được trải nghiệm và biết cách tự thiết lập cho mình một chương trình hay trò chơi đơn giản. Như vậy ở cấp Tiểu học, định hướng STEM sẽ được chú trọng hơn.

– Lên cấp THCS, học sinh sẽ làm quen với khái niệm thuật toán, các cấu trúc lệnh lập trình hoàn chỉnh và hoàn thiện, nâng cao khả năng STEM của mình thông qua việc làm ra các sản phẩm có ích cho cuộc sống. Ở cấp THCS, cả 2 hướng STEM và Algorithm cùng được chú trọng ngang nhau.

– Lên cấp THPT, học sinh sẽ được học chính thức một ngôn ngữ lập trình bậc cao. Các chuyên đề về lắp ráp, lập trình Robot và thuật toán nâng cao sẽ được đưa vào chương trình như các lựa chọn bắt buộc.

Như vậy bắt đầu từ cấp THCS, cả 2 hướng STEM và Thuật toán đều được chú trọng trong mạch kiến thức CS của Tin học. Tới đây chúng ta sẽ thấy vai trò của Python là rất thích hợp. Python là ngôn ngữ lập trình bậc cao với cách viết lệnh đơn giản theo từng dòng sẽ rất phù hợp để học và dạy thuật toán. Python cùng với các module đồ họa con Rùa và Tkinter có cách tiếp cận khá đơn giản với các ứng dụng đồ họa nên dễ dàng hơn hẳn các ngôn ngữ khác để thiết lập các ứng dụng kiểu STEM. Chính vì điều này Python sẽ là ngôn ngữ thích hợp được lựa chọn cho học sinh làm quen bắt đầu từ cấp THCS và THPT trong chương trình môn Tin học mới.

Bùi Việt Hà (Nguồn: Công nghệ & Đời sống)