Tư duy máy tính: từ định nghĩa của Wing đến cách đánh giá trong Scratch

Tư duy máy tính: từ định nghĩa của Wing đến cách đánh giá trong Scratch

Cụm từ "tư duy máy tính" (computational thinking) xuất hiện ngày càng nhiều trong chương trình tin học và các lớp Scratch, nhưng khi được hỏi cụ thể nó gồm những gì và đánh giá bằng cách nào, giáo viên thường chỉ nhận được những câu trả lời chung chung. Bài viết này đi từ định nghĩa ban đầu của Wing, qua những tranh luận trong tài liệu tổng quan, đến khung ba chiều của Brennan và Resnick được xây dựng riêng từ Scratch. Phần cuối đề xuất một bảng tiêu chí đánh giá dự án Scratch, được tách rõ khỏi những gì nghiên cứu thực sự nói.

Nghiên cứu cho thấy điều gì

Wing (2006): đó là cách nghĩ, không đồng nghĩa với lập trình

Bài viết ngắn của Jeannette Wing trên Communications of the ACM thường được xem là điểm khởi đầu của làn sóng quan tâm hiện nay. Theo Wing (2006), tư duy máy tính bao gồm việc giải quyết vấn đề, thiết kế hệ thống và hiểu hành vi con người bằng cách vận dụng những khái niệm nền tảng của khoa học máy tính. Bà nhấn mạnh rằng nghĩ như một nhà khoa học máy tính không chỉ là biết lập trình, mà đòi hỏi khả năng suy nghĩ ở nhiều tầng trừu tượng. Trong danh sách các đặc điểm bà nêu có: khái niệm hóa chứ không phải viết mã; là kỹ năng nền tảng chứ không phải thao tác máy móc; là cách con người suy nghĩ chứ không phải ép con người nghĩ như máy; bổ sung cho tư duy toán học và tư duy kỹ thuật; và hướng tới mọi người chứ không chỉ người học chuyên ngành. Wing còn đề xuất thêm tư duy máy tính vào đọc, viết và tính toán như một năng lực phân tích của mọi đứa trẻ.

Cần lưu ý đây là một bài quan điểm (viewpoint), không phải kết quả thực nghiệm. Bài đặt ra một tầm nhìn, còn việc biến tầm nhìn đó thành thứ có thể dạy và đo lường ở trường phổ thông là phần các nghiên cứu sau phải giải quyết.

Một khái niệm còn nhiều tranh luận

Grover và Pea (2013) tổng quan các nghiên cứu về tư duy máy tính ở giáo dục K–12 trong những năm sau bài của Wing. Họ ghi nhận hai hội thảo của Hội đồng Nghiên cứu Quốc gia Hoa Kỳ cho thấy chưa có sự đồng thuận về cách nhận biết tư duy máy tính, về phương pháp dạy tốt nhất, và về việc có thể tách nó khỏi lập trình hay không. Đồng thời, họ cho rằng giới nghiên cứu và giáo dục tin học nhìn chung đã làm việc với một nhóm yếu tố được chấp nhận rộng rãi, như trừu tượng hóa và khái quát mẫu, phân rã vấn đề, tư duy lặp, đệ quy và song song, logic điều kiện, cùng gỡ lỗi và phát hiện lỗi có hệ thống.

Cũng chính bài tổng quan này nêu những phê bình đáng chú ý: tư duy máy tính có đủ khác biệt so với tư duy toán, kỹ thuật hay thiết kế hay không; nên đưa vào nhà trường như một môn riêng, một chủ đề của từng môn, hay một chủ đề liên môn; và liệu có lý do thuyết phục để mọi học sinh, kể cả những em không theo đuổi ngành STEM, đều phải học. Về đánh giá, Grover và Pea (2013) cho rằng nếu thiếu công cụ đo đã được kiểm chứng thì tư duy máy tính khó có chỗ đứng bền vững trong chương trình; họ điểm một số hướng tiếp cận như đánh giá qua sản phẩm do học sinh tạo ra, hoặc qua việc gỡ lỗi những dự án được làm sẵn có lỗi.

Khung ba chiều từ Scratch (Brennan và Resnick, 2012)

Scratch là môi trường lập trình khối kéo thả do nhóm Lifelong Kindergarten của MIT Media Lab phát triển; theo Resnick và cộng sự (2009), nhóm người dùng cốt lõi trên cộng đồng Scratch khi đó nằm trong độ tuổi từ 8 đến 16, và ba nguyên tắc thiết kế là làm cho môi trường dễ "mày mò" hơn, có ý nghĩa hơn và mang tính xã hội hơn. Từ việc quan sát và phỏng vấn người dùng trẻ, Brennan và Resnick (2012) đề xuất ba chiều của tư duy máy tính:

Khái niệm (concepts) : những ý tưởng người làm dự án sử dụng khi lập trình. Nhóm xác định bảy khái niệm: chuỗi lệnh (sequences), vòng lặp (loops), song song (parallelism), sự kiện (events), điều kiện (conditionals), toán tử (operators) và dữ liệu (data).

Thực hành (practices) : cách người học làm việc với các khái niệm. Có bốn nhóm: làm từng bước và lặp lại (incremental and iterative), kiểm thử và gỡ lỗi, tái sử dụng và phối lại (reusing and remixing), trừu tượng hóa và mô-đun hóa.

Quan điểm (perspectives) : cách người học nhìn thế giới và bản thân. Ba quan điểm được nêu là biểu đạt (expressing), kết nối (connecting) và đặt câu hỏi (questioning).

Theo bài viết, nhóm bổ sung dần từng chiều vì nhận thấy chỉ nói về khái niệm thì chưa phản ánh hết những gì các em học và làm khi tạo dự án.

Ba cách đánh giá và bài học về giới hạn

Điểm đáng giá nhất của bài báo có lẽ là phần các tác giả thẳng thắn kể về giới hạn của chính cách đánh giá của họ. Cách thứ nhất là phân tích hồ sơ dự án: dùng công cụ trực quan hóa các khối lệnh xuất hiện trong từng dự án của một thành viên cộng đồng. Cách này cho thấy em đã "gặp" khái niệm nào, nhưng hoàn toàn dựa trên sản phẩm, không nói gì về quá trình làm và không phân biệt em tự làm hay nhờ người khác. Cách thứ hai là phỏng vấn dựa trên sản phẩm: trong một năm, nhóm phỏng vấn 31 thành viên cộng đồng Scratch, tuổi từ 8 đến 17, mỗi cuộc kéo dài từ 60 đến 120 phút. Một ví dụ trong bài: biểu đồ hoạt động của một em 13 tuổi, đã dùng Scratch 3,5 năm và có 163 dự án, trông rất thành thạo; nhưng khi được hỏi về một đoạn mã trong dự án, em không giải thích được và cho biết đã tải một dự án tương tự về rồi ghép các khối cho đến khi chạy gần giống. Từ đó các tác giả kết luận rằng có một khối lệnh trong dự án chưa chắc chứng tỏ người làm hiểu nó.

Cách thứ ba là các "tình huống thiết kế" (design scenarios): học sinh được đưa các dự án do một bạn khác làm, rồi yêu cầu giải thích dự án làm gì, đề xuất mở rộng, sửa một lỗi và thêm một tính năng. Cách này cho phép quan sát quá trình ngay lúc làm thay vì chỉ nhớ lại, nhưng tốn thời gian và dự án do người khác chọn có thể không gắn với sở thích của em, thậm chí gây cảm giác bị kiểm tra. Cả ba cách đều không đo tốt chiều "quan điểm"; thông tin về chiều này thường đến tình cờ trong khi trò chuyện. Họ cũng rút ra sáu gợi ý chung, trong đó có việc đưa sản phẩm vào đánh giá, làm rõ quá trình, kiểm tra ở nhiều thời điểm, coi trọng nhiều cách "biết" (giải thích, dùng, đọc, phối lại, phê bình, gỡ lỗi) và lấy ý kiến nhiều phía gồm bản thân, bạn, phụ huynh và giáo viên.

Công cụ phân tích tự động: Dr. Scratch

Moreno-León, Robles và Román-González (2015) giới thiệu Dr. Scratch, ứng dụng web phân tích tự động dự án Scratch. Công cụ chấm bảy khía cạnh (trừu tượng hóa và phân rã vấn đề, tư duy logic, đồng bộ hóa, song song, luồng điều khiển, tương tác người dùng, biểu diễn dữ liệu), mỗi khía cạnh từ 0 đến 3 điểm, tổng tối đa 21, dựa trên việc phát hiện các loại khối lệnh có mặt trong dự án; đồng thời cảnh báo các thói quen chưa tốt như đặt tên nhân vật (sprite) mặc định hay lặp mã. Trong thử nghiệm tại 8 trường ở Tây Ban Nha với 109 học sinh 10–14 tuổi đã có kinh nghiệm Scratch, các em phân tích một dự án của mình, đọc phản hồi rồi cải tiến. Với 88 hồ sơ đầy đủ, điểm trung bình tăng từ 12,00 lên 13,45 trên 21 sau buổi workshop một giờ, với kích thước hiệu ứng được các tác giả báo cáo là 0,47 (mức trung bình). Theo các tác giả, phản hồi của công cụ đặc biệt hữu ích với học sinh cấp hai có điểm ban đầu ở mức trung bình, và dường như ít hữu ích hơn với học sinh đã có điểm ban đầu cao trong buổi workshop một giờ này.

Khi đọc kết quả này nên thận trọng: thiết kế là so sánh trước và sau trong một buổi, tôi không thấy nhóm đối chứng trong bài; phép đo "tiến bộ" cũng chính là điểm do công cụ tính, tức dựa trên sự hiện diện của các khối lệnh, và các tác giả dự kiến đối chiếu thêm với các công cụ đo khác trong các nghiên cứu sau. Theo suy luận của người viết, điều này gần với hạn chế mà Brennan và Resnick (2012) đã nêu về cách phân tích dựa trên khối lệnh. Bài cũng mô tả phiên bản công cụ năm 2015 (hỗ trợ Scratch 1.4 và 2.0), nên giáo viên cần kiểm tra khả năng tương thích của công cụ hiện hành với phiên bản Scratch đang dùng.

Ứng dụng trong lớp học

Phần này là gợi ý của người viết, xây dựng trên các tài liệu trên chứ không phải một quy trình đã được kiểm chứng trong lớp học Việt Nam. Ý tưởng chung: dùng ba chiều của Brennan và Resnick làm cấu trúc, lấy các mức độ kiểu Dr. Scratch làm tham khảo cho phần khái niệm, nhưng luôn kết hợp với quan sát quá trình và lời giải thích của học sinh.

Bảng tiêu chí gợi ý cho một dự án Scratch

Chiều khái niệm

Chuỗi lệnh, vòng lặp, sự kiện. Bằng chứng nên tìm: chương trình chạy đúng thứ tự; dùng vòng lặp thay vì chép khối lặp lại; nhiều loại sự kiện kích hoạt hành động. Cách thu thập: chạy dự án, đọc mã.

Điều kiện, toán tử, dữ liệu. Bằng chứng nên tìm: dùng "nếu" để rẽ nhánh; dùng biến (ví dụ điểm số) cập nhật đúng; biểu thức đúng. Cách thu thập: chạy nhiều tình huống, đọc mã.

Song song. Bằng chứng nên tìm: nhiều nhân vật hoặc nhiều chuỗi lệnh hoạt động đồng thời mà không xung đột. Cách thu thập: chạy dự án.

Chiều thực hành

Làm từng bước, lặp lại. Bằng chứng nên tìm: có nhiều phiên bản hoặc ghi chú tiến trình; mỗi lần sửa có lý do. Cách thu thập: nhật ký ngắn, lịch sử phiên bản.

Kiểm thử và gỡ lỗi. Bằng chứng nên tìm: học sinh mô tả một lỗi đã gặp, cách tìm nguyên nhân và cách sửa. Cách thu thập: hỏi miệng, quan sát lúc làm.

Tái sử dụng và phối lại. Bằng chứng nên tìm: ghi nguồn phần mã mượn; giải thích được đoạn đã mượn làm gì. Cách thu thập: phỏng vấn ngắn tại chỗ.

Trừu tượng hóa, mô-đun hóa. Bằng chứng nên tìm: tách mã thành các chuỗi lệnh có chức năng rõ; đặt tên nhân vật và biến có nghĩa. Cách thu thập: đọc mã.

Chiều quan điểm

Biểu đạt, kết nối, đặt câu hỏi. Bằng chứng nên tìm: em tự chọn đề tài; có phản hồi từ bạn; có ý tưởng cải tiến vượt yêu cầu. Cách thu thập: phản tư viết ngắn, quan sát (chỉ ghi nhận, không chấm điểm).

Cách dùng bảng

Chọn vài tiêu chí cho mỗi dự án thay vì dùng cả bảng. Mỗi dự án nên gắn với một vài khái niệm và thực hành mà bài học đang nhắm tới.

Dùng thang mô tả ba mức (ví dụ: bắt đầu, đang phát triển, thành thạo) và viết bằng lời mô tả hành vi quan sát được, không chỉ đếm số khối lệnh.

Luôn có một lượt giải thích : yêu cầu học sinh chọn một đoạn mã trong dự án và giải thích bằng lời. Bài của Brennan và Resnick cho thấy đây là chỗ phân biệt "có mặt" với "hiểu".

Thêm một nhiệm vụ gỡ lỗi hoặc mở rộng trên dự án của bạn khác, kiểu tình huống thiết kế, ở quy mô vài phút. Ví dụ minh họa (giả định): đưa một trò chơi "hứng táo" có điểm số cộng sai, yêu cầu học sinh tìm lỗi và thêm tính năng trừ điểm khi hứng phải vật cản.

Kiểm tra ở nhiều thời điểm trong học kỳ để ghi lại sự tiến triển, thay vì chấm một lần ở sản phẩm cuối.

Dùng công cụ tự động như Dr. Scratch làm kênh phản hồi cho học sinh hơn là điểm số chính thức, và đối chiếu với đọc mã của giáo viên.

Có tự đánh giá và đánh giá chéo giữa các bạn , phù hợp với gợi ý về nhiều góc nhìn của Brennan và Resnick.

Giới hạn và lưu ý

Khung của Brennan và Resnick được xây dựng từ Scratch, dựa trên phỏng vấn và quan sát một nhóm người dùng tự nguyện của cộng đồng trực tuyến; bài là bản trình bày hội nghị đang phát triển, không phải kết quả thực nghiệm kiểm tra tính giá trị của thang đo.

Khung này chưa được kiểm chứng cho học sinh Việt Nam; bảng tiêu chí trong bài là đề xuất của người viết dựa trên các nguồn, chưa qua thử nghiệm.

Các tác giả chỉ ra rằng chiều "quan điểm" khó đánh giá trực tiếp. Vì vậy nên xem đây là điều quan sát chứ không phải điểm số, tránh biến cảm nhận của học sinh thành thang điểm.

Kết quả của Dr. Scratch trong nghiên cứu năm 2015 đến từ một buổi workshop, một nhóm học sinh Tây Ban Nha và thiết kế trước–sau; không nên diễn giải thành bằng chứng về hiệu quả dài hạn.

Tranh luận về ranh giới của tư duy máy tính vẫn tiếp diễn (Grover và Pea, 2013); cùng một bảng tiêu chí có thể không phù hợp với mọi cách hiểu.

Kết luận

Từ Wing đến Brennan và Resnick, tư duy máy tính được hiểu từ một cách nghĩ rộng đến một khung cụ thể gồm khái niệm, thực hành và quan điểm. Với giáo viên dạy Scratch, bài học thực tế nhất từ các nghiên cứu này là đừng đánh giá chỉ bằng việc đếm khối lệnh trong sản phẩm. Hãy kết hợp việc đọc mã với lời giải thích của học sinh, quan sát quá trình làm và ghi nhận sự tiến triển theo thời gian. Công cụ tự động có thể hỗ trợ phản hồi, nhưng không thay được cuộc trò chuyện về dự án.

Tài liệu tham khảo

Brennan, K., & Resnick, M. (2012). New frameworks for studying and assessing the development of computational thinking . Bài trình bày tại Hội nghị thường niên của Hiệp hội Nghiên cứu Giáo dục Hoa Kỳ (AERA), Vancouver. MIT Media Lab. https://www.media.mit.edu/publications/new-frameworks-for-studying-and-assessing-the-development-of-computational-thinking/

Grover, S., & Pea, R. (2013). Computational thinking in K–12: A review of the state of the field. Educational Researcher, 42 (1), 38–43. https://doi.org/10.3102/0013189X12463051

Moreno-León, J., Robles, G., & Román-González, M. (2015). Dr. Scratch: Automatic analysis of Scratch projects to assess and foster computational thinking. RED. Revista de Educación a Distancia, 46 . https://doi.org/10.6018/red/46/10

Resnick, M., Maloney, J., Monroy-Hernández, A., Rusk, N., Eastmond, E., Brennan, K., Millner, A., Rosenbaum, E., Silver, J., Silverman, B., & Kafai, Y. (2009). Scratch: Programming for all. Communications of the ACM, 52 (11), 60–67. https://doi.org/10.1145/1592761.1592779

Wing, J. M. (2006). Computational thinking. Communications of the ACM, 49 (3), 33–35. https://doi.org/10.1145/1118178.1118215