Lập trình cặp đôi trong lớp học: bằng chứng và cách tổ chức

Lập trình cặp đôi trong lớp học: bằng chứng và cách tổ chức

Trong lớp lập trình, hai học sinh ngồi chung một máy thường được xem là giải pháp tình thế khi thiếu thiết bị. Nhưng "lập trình cặp đôi" (pair programming) là một phương pháp có cấu trúc, và đã được nghiên cứu trong giáo dục từ nhiều năm. Bài viết này tóm tắt bằng chứng chủ yếu từ các nghiên cứu ở bậc đại học và một số ít ở bậc phổ thông, rồi gợi ý cách tổ chức cho lớp Scratch, Python hoặc robot, kèm theo những giới hạn cần lưu ý.

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

Lập trình cặp đôi là gì

Theo mô tả trong tổng quan của Salleh, Mendes và Grundy (2011), lập trình cặp đôi là hai người ngồi cạnh nhau, dùng một máy tính và cùng làm một thiết kế, thuật toán, đoạn mã hoặc bài kiểm thử. Một người là "người cầm lái" (driver) chịu trách nhiệm gõ mã và điều khiển máy; người còn lại là "người dẫn đường" (navigator) quan sát cách làm của bạn để phát hiện lỗi và gợi ý hướng giải. Theo mô tả này, hai người thường đổi vai sau một khoảng thời gian nhất định. Williams và Kessler (2000) đã thảo luận phương pháp này từ góc nhìn thực hành, gắn các thói quen làm việc cùng nhau như chia sẻ và công bằng với việc làm việc với bạn lập trình.

Bằng chứng ở bậc đại học

Williams và cộng sự (2002) báo cáo một thí nghiệm có tổ chức ở một lớp nhập môn khoa học máy tính (CS1) ở bang Bắc Carolina (Hoa Kỳ). Theo các tác giả, sinh viên lập trình cặp đôi đạt kết quả tốt hơn ở các dự án lập trình và có khả năng hoàn thành môn học với điểm C trở lên cao hơn. Các cặp cũng ít phụ thuộc vào đội ngũ giảng dạy hơn, và dữ liệu định tính cho thấy sinh viên làm theo cặp thể hiện tư duy bậc cao hơn so với sinh viên làm một mình.

Hanks và cộng sự (2011) tổng quan tài liệu giáo dục về lập trình cặp đôi trong chương trình khoa học máy tính bậc đại học. Họ cho rằng lợi ích được ghi nhận bao gồm tỉ lệ thành công cao hơn ở các môn nhập môn, giữ chân sinh viên trong ngành tốt hơn, phần mềm chất lượng hơn, sinh viên tự tin hơn vào lời giải của mình và cải thiện kết quả học tập. Có một số bằng chứng cho thấy nữ sinh viên hưởng lợi đặc biệt. Họ cũng ghi nhận chuyển từ làm cặp sang làm một mình không khó với sinh viên, còn khó khăn chính nằm ở việc sắp xếp lịch và sự tương hợp giữa hai người.

Salleh và cộng sự (2011) thực hiện tổng quan hệ thống với 74 bài báo, xác định 14 yếu tố tương hợp có thể ảnh hưởng đến hiệu quả của lập trình cặp đôi trong đào tạo ở bậc đại học. Kết quả cho thấy mức độ kỹ năng của sinh viên là yếu tố ảnh hưởng nhiều nhất, sinh viên nói chung hài lòng hơn khi làm cặp so với làm một mình, và các phân tích gộp cho thấy lập trình cặp đôi có hiệu quả trong việc nâng điểm bài tập. Trong các nghiên cứu về mức độ kỹ năng, các tác giả nhận thấy sự đồng thuận rằng cách làm này có hiệu quả nhất khi hai người có trình độ tương đương. Ngược lại, kết quả về yếu tố tính cách chưa thống nhất.

Bằng chứng ở bậc phổ thông

Dữ liệu ở bậc phổ thông ít hơn. Denner, Werner, Campe và Ortiz (2014) nghiên cứu 320 học sinh trung học cơ sở (middle school) làm một nhiệm vụ lập trình trò chơi, hoặc một mình hoặc theo cặp. Theo tóm tắt của bài báo, so với làm một mình, làm cặp hỗ trợ tư duy tính toán và kiến thức lập trình, nhất là với các em ít kinh nghiệm hơn. Kinh nghiệm máy tính trước đó và thái độ đối với hợp tác của mỗi em ảnh hưởng đến bạn cùng cặp: học sinh có nhiều kinh nghiệm hơn bạn mình thu được thêm sự tự tin và thái độ tích cực hơn với tin học, còn học sinh có thái độ hợp tác tích cực hơn bạn thì kiến thức lập trình lại giảm. Các tác giả thảo luận ý nghĩa của kết quả này đối với việc ghép cặp.

Một nghiên cứu tình huống nhỏ hơn của Çal và Can (2020) trên 35 học sinh lớp 5 (22 em làm cặp, 13 em làm một mình) học Scratch trong 8 tuần cho kết quả là nhóm làm cặp có mức tự tin và thành tích cao hơn sau can thiệp. Do quy mô nhỏ và thiết kế tình huống, kết quả này chỉ nên xem là gợi ý.

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

Các gợi ý dưới đây kết hợp bằng chứng ở trên với tài liệu hướng dẫn thực hành của tổ chức ETR (không ghi năm, không phải nghiên cứu bình duyệt). Chúng là đề xuất của người viết, không phải quy trình đã được kiểm chứng riêng ở lớp học Việt Nam.

1. Giải thích và làm mẫu vai trò

Nói rõ hai vai: người cầm lái giữ chuột và bàn phím; người dẫn đường nhìn tổng thể, hỏi, nhắc và gợi ý.

Làm mẫu một lần: giáo viên và một học sinh diễn thử cách phối hợp tốt và chưa tốt. ETR gợi ý dùng đóng vai (role play) và cùng lớp lập một áp phích về cách làm cặp hiệu quả.

Nhấn mạnh người dẫn đường cần nói bằng lời ("Mình thử dùng vòng lặp ở đây nhé?"), thay vì chỉ ngồi xem.

2. Đổi vai theo thời gian

Đặt đồng hồ hẹn giờ để đổi vai, ví dụ sau mỗi 10 đến 15 phút (khoảng thời gian này là gợi ý để thử, chưa có con số chuẩn trong các nguồn đã trích dẫn). ETR nêu rằng nếu học sinh ngại đổi vai thì dùng hẹn giờ giúp các em nhớ.

Khi đổi vai, người mới cầm lái nên đọc lại phần đã làm trước khi viết tiếp.

3. Cách ghép cặp

Theo tổng quan của Salleh và cộng sự (2011), ghép hai học sinh có trình độ tương đương thường phù hợp hơn. Tuy nhiên, kết quả của Denner và cộng sự (2014) cho thấy chênh lệch kinh nghiệm cũng tác động theo những hướng khác nhau lên từng em, vì vậy giáo viên nên quan sát và sẵn sàng đổi cặp.

Cân nhắc cho học sinh chọn bạn cùng cặp hoặc đề xuất ba bạn mong muốn; ETR gợi ý tình bạn có thể giúp ích, nhất là khi muốn giữ chân học sinh.

Luân phiên đổi cặp sau một dự án hoặc một giai đoạn, để các em không bị gắn mãi với một bạn khó phối hợp (Hanks và cộng sự, 2011, nêu sự tương hợp là một trong những khó khăn chính).

4. Đánh giá cá nhân

Hanks và cộng sự (2011) xem việc đánh giá đóng góp từng cá nhân là một vấn đề thực tiễn cần giải quyết khi dùng lập trình cặp đôi. Một số cách có thể thử:

Cho mỗi học sinh một câu hỏi ngắn hoặc bài mini làm riêng sau bài làm cặp, về cùng nội dung.

Yêu cầu mỗi em tự viết ngắn: em làm gì, bạn làm gì, điều gì em học được.

Xen kẽ các bài làm cặp với một số bài làm riêng để giáo viên biết từng em đang ở đâu.

Ví dụ minh họa (giả định): bài Scratch và bài VEX

Bài Scratch: hai học sinh làm trò chơi bắt vật rơi. Trong 10 phút đầu, em A cầm lái làm chuyển động nhân vật còn em B dẫn đường kiểm tra yêu cầu; sau đó đổi vai để em B làm phần tính điểm. Cuối buổi mỗi em trả lời riêng: "Khối lệnh nào làm điểm tăng?".

Bài robot VEX: một em lắp, một em lập trình, sau đó đổi vai ở nhiệm vụ tiếp theo, để cả hai đều có cơ hội viết và thử chương trình.

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

Phần lớn bằng chứng là ở bậc đại học. Các tổng quan của Hanks và cộng sự (2011), Salleh và cộng sự (2011) tập trung vào sinh viên, nên việc áp dụng cho học sinh phổ thông là suy luận. Các nghiên cứu ở phổ thông (Denner và cộng sự, 2014; Çal và Can, 2020) còn ít và có phạm vi hạn chế.

Kết quả không hoàn toàn nhất quán. Salleh và cộng sự (2011) ghi nhận kết quả về tính cách còn hỗn hợp, và các nghiên cứu về giới tính trong tương hợp cặp cho kết quả trái ngược nhau.

Ghép cặp có thể gây hại nếu không quan sát. Denner và cộng sự (2014) cho thấy một số kiểu chênh lệch giữa hai bạn đi kèm với kiến thức lập trình giảm ở một bên; giáo viên cần theo dõi chứ không tin rằng làm cặp luôn có lợi.

Có thể một người làm hết. Đây là lo ngại hợp lý của người viết (các nguồn trên không cung cấp số liệu về việc này), và là lý do nên đổi vai và đánh giá cá nhân.

Tài liệu ETR là hướng dẫn thực hành , không phải bằng chứng bình duyệt; các gợi ý như hẹn giờ đổi vai hay cho chọn bạn chỉ nên xem là ý tưởng để thử.

Bài của Williams và Kessler (2000) chủ yếu mang tính thảo luận thực hành, nên không được dùng ở đây làm bằng chứng định lượng.

Kết luận

Các nghiên cứu được trích dẫn cho thấy lập trình cặp đôi có thể hỗ trợ kết quả học tập, sự tự tin và việc giữ chân người học, nhưng hiệu quả phụ thuộc vào cách tổ chức và cách ghép cặp. Với lớp học phổ thông, cách làm thận trọng là bắt đầu bằng việc giải thích vai trò, đổi vai có hẹn giờ, theo dõi sự phối hợp của từng cặp và luôn có một phần đánh giá cá nhân. Vì bằng chứng ở bậc phổ thông còn hạn chế, giáo viên nên thử từng bước và điều chỉnh theo quan sát trong lớp của mình.

Tài liệu tham khảo

Çal, H., & Can, G. (2020). The influence of pair programming on secondary school students' confidence and achievement in computer programming. Trakya Eğitim Dergisi, 10 (1), 221–237. https://doi.org/10.24315/tred.575098

Denner, J., Werner, L., Campe, S., & Ortiz, E. (2014). Pair programming: Under what conditions is it advantageous for middle school students? Journal of Research on Technology in Education, 46 (3), 277–296. https://doi.org/10.1080/15391523.2014.888272

ETR. (n.d.). Pair programming: 10 tips — How to teach and support pair programming in your middle and high school classroom [Tài liệu hướng dẫn thực hành]. https://www.etr.org/default/assets/File/pair-programming.pdf

Hanks, B., Fitzgerald, S., McCauley, R., Murphy, L., & Zander, C. (2011). Pair programming in education: A literature review. Computer Science Education, 21 (2), 135–173. https://doi.org/10.1080/08993408.2011.579808

Salleh, N., Mendes, E., & Grundy, J. (2011). Empirical studies of pair programming for CS/SE teaching in higher education: A systematic literature review. IEEE Transactions on Software Engineering, 37 (4), 509–525. https://doi.org/10.1109/TSE.2010.59

Williams, L. A., & Kessler, R. R. (2000). All I really need to know about pair programming I learned in kindergarten. Communications of the ACM, 43 (5), 108–114. https://doi.org/10.1145/332833.332848

Williams, L., Wiebe, E., Yang, K., Ferzli, M., & Miller, C. (2002). In support of pair programming in the introductory computer science course. Computer Science Education, 12 (3), 197–212. https://doi.org/10.1076/csed.12.3.197.8618