Một giáo viên giỏi không chỉ là người biết giải bài, mà là người biết đặt câu hỏi đúng lúc để học sinh tự khám phá được hướng đi của bài toán. Trong dạy học lập trình và thuật toán, nghệ thuật đặt câu hỏi còn quan trọng hơn cả việc cung cấp lời giải.
Câu hỏi – công cụ kích hoạt tư duy
Một bài toán lập trình không chỉ cần code đúng, mà cần cách tiếp cận đúng. Việc đưa code mẫu cho học sinh xem ngay lập tức có thể giúp các em “giải được bài”, nhưng không giúp hình thành tư duy độc lập. Trong khi đó, một câu hỏi đúng lúc có thể dẫn học sinh từ trạng thái mơ hồ đến trạng thái “à, hóa ra có thể làm như vậy!”
Ví dụ:
Giáo viên hỏi: Bài toán này yêu cầu tìm giá trị lớn nhất thỏa mãn điều kiện, có thể dùng tìm kiếm nhị phân không?
Giáo viên hỏi: Em có thấy việc tính tổng đoạn nào đó lặp đi lặp lại? Có kỹ thuật nào giúp xử lý tốt hơn không?
Những câu hỏi như vậy không cho đáp án, nhưng lại mở ra lối tư duy.
So sánh hai cách dạy
Tình huống 1: Giáo viên đưa code mẫu
- Học sinh đọc và làm theo.
- Có thể hiểu từng dòng code, nhưng không biết vì sao lại làm vậy.
- Dễ quên, khó ứng dụng với bài khác.
Tình huống 2: Giáo viên đặt câu hỏi dẫn dắt
- Học sinh được hỏi: “Theo em, với giới hạn N = 1e5, cách duyệt 2 vòng lặp có ổn không?”
- Câu hỏi tiếp theo: “Có cấu trúc dữ liệu nào giúp ta truy vấn nhanh hơn không?”
- Dần dần, học sinh hình thành cách giải của chính mình.
➡️ Hiệu quả hơn về mặt hình thành tư duy và khả năng áp dụng.
Một số khung câu hỏi gợi mở nên dùng
Dưới đây là những câu hỏi có thể lặp lại ở nhiều bài toán khác nhau, giúp học sinh tập thói quen phân tích:
- “Bài toán có thuộc dạng tối ưu hóa không?” → Gợi mở greedy hoặc quy hoạch động.
- “Có ràng buộc nào cho phép thử brute force không?”
- “Nếu dữ liệu thay đổi liên tục, ta nên dùng cấu trúc nào?” → Segment Tree, BIT.
- “Có thể tiền xử lý gì để giảm độ phức tạp không?” → Prefix sum, sort trước.
- “Ta có thể chia nhỏ bài toán này không?” → Đệ quy, quy hoạch động.
- “Nếu ta làm ngược lại thì sao?” → Gợi hướng đảo chiều tư duy.
Kết luận
Câu hỏi không chỉ là cách kiểm tra kiến thức, mà là công cụ để xây dựng tư duy. Dạy học lập trình thời AI không chỉ là dạy code – mà là giúp học sinh học cách nghĩ như một người thiết kế giải thuật.
Một lời giải tốt chỉ giúp giải một bài toán, nhưng một câu hỏi tốt có thể thay đổi cách nghĩ cả đời.