Tin học · ba bài học inquiry theo IB
Tin học dễ trượt thành môn gõ theo mẫu: mở phần mềm, làm theo từng bước, ra đúng kết quả trên hình. Inquiry kéo môn này về đúng thứ nó dạy, là cách nghĩ chứ không phải cú pháp.
Máy tính làm đúng cái ta bảo nó làm, không phải cái ta muốn nó làm. Toàn bộ môn học này là việc thu hẹp khoảng cách giữa hai thứ đó.
- Gỡ lỗi không phải tai nạn, nó là công việc chính của nghề.
- Cùng một bài toán luôn có nhiều lời giải đúng, khác nhau ở cái giá phải trả.
- Mỗi lựa chọn kỹ thuật là một quyết định về việc ai được phục vụ.
Ba bài dưới đây dùng khung Design của IB, không dùng khung Sciences, vì sản phẩm cuối là thứ được tạo ra chứ không phải hiện tượng được giải thích. Hai bài đầu không cần máy tính nào.
Demo 1 · Sắp xếp: cả lớp tự phát minh ra thuật toán
| Lớp | 6–9 |
| Key concept | Systems |
| Related concepts | Patterns · Development · Logic |
| Global context | Scientific and technical innovation |
| Statement of inquiry | Cùng một kết quả đúng vẫn đạt được bằng nhiều cách, và các cách đó khác nhau ở cái giá phải trả. |
| Cần biết trước | Không cần gì. Bài này chạy hoàn toàn không cần máy tính. |
Ba câu hỏi
- Factual: Sắp xếp một dãy số nghĩa là gì? Có bao nhiêu cách làm?
- Conceptual: Vì sao hai cách cùng cho kết quả đúng lại tốn công khác nhau?
- Debatable: Nhanh hơn có luôn là tốt hơn không?
Diễn biến tiết học
Bước 1: Bài toán trên tay (5 phút). Mỗi nhóm nhận mười tấm bìa úp xuống, mỗi tấm một con số. Nhiệm vụ: xếp chúng theo thứ tự tăng dần.
Luật duy nhất: mỗi lần chỉ được lật hai tấm lên để so, rồi úp lại. Mỗi lần so tính một điểm.
"Nhóm nào xếp xong với ít lần so nhất?"
Bước 2: Làm thật (15 phút). Các nhóm làm. Không ai được gợi ý gì. Điều luôn xảy ra: các nhóm nghĩ ra những cách rất khác nhau, và không nhóm nào biết cách của mình có tên gọi.
Một số nhóm quét đi quét lại đổi chỗ từng cặp. Một số nhóm tìm tấm nhỏ nhất rồi đặt sang một bên. Một số nhóm chia đôi rồi ghép lại.
Bước 3: Trình bày và đếm (12 phút). Mỗi nhóm mô tả cách của mình bằng lời, và ghi số lần so lên bảng.
Đây là chỗ giáo viên đặt tên sau khi việc đã xảy ra: cách của nhóm này gọi là sắp xếp nổi bọt, cách của nhóm kia là sắp xếp chọn, cách của nhóm nọ là sắp xếp trộn. Thuật ngữ trở thành nhãn dán cho thứ học sinh vừa tự làm ra, không phải một danh sách phải nhớ.
Bước 4: Đẩy sang quy mô lớn (10 phút)."Giờ không phải 10 tấm mà là 100 tấm. Nhóm nào vẫn thắng?"
Học sinh dự đoán, rồi cùng ước lượng trên giấy. Với 10 tấm, các cách chênh nhau không nhiều. Với 100 tấm, khoảng cách giãn ra rất rõ.
"Với một triệu tấm thì sao?"
Ở đây khoảng cách trở nên buồn cười, và học sinh tự chạm vào ý niệm thuật toán chậm không phải chậm hơn một chút, mà là không dùng được.
Bước 5: Câu hỏi mở (8 phút)."Nếu chín tấm đã đúng thứ tự sẵn rồi, chỉ một tấm sai chỗ, thì cách nào thắng?"
Câu này đảo ngược kết quả: cách chậm nhất lúc nãy giờ lại nhanh nhất. Học sinh rời tiết học với một kết luận có điều kiện thay vì một bảng xếp hạng, và đó chính là điều bài học muốn đạt.
Chấm theo tiêu chí Design
| Tiêu chí | Ở bài này |
|---|---|
| A | Phân tích bài toán, xác định ràng buộc và tiêu chí đánh giá |
| B | Nghĩ ra và mô tả được quy trình sắp xếp của riêng nhóm |
| C | Thực hiện quy trình đó tới kết quả đúng |
| D | So sánh các phương án theo số phép so, và ở các quy mô khác nhau |
Demo 2 · Nén dữ liệu: vì sao gửi ảnh đi lại nhẹ hơn ảnh gốc
| Lớp | 8–11 |
| Key concept | Communication |
| Related concepts | Form · Patterns · Systems |
| Global context | Scientific and technical innovation |
| Statement of inquiry | Thông tin có thể được biểu diễn ngắn gọn hơn khi ta khai thác được quy luật lặp trong nó. |
| Cần biết trước | Khái niệm tệp tin và dung lượng. Không cần lập trình. |
Ba câu hỏi
- Factual: Dung lượng một tệp đo bằng gì? Nén là gì?
- Conceptual: Vì sao có thể viết ngắn lại mà không mất thông tin?
- Debatable: Nén mất dữ liệu có phải là làm hỏng dữ liệu không?
Diễn biến tiết học
Bước 1: Thử thách viết ngắn (10 phút). Giáo viên đưa một dãy ký tự dài, ví dụ một dòng ảnh đen trắng viết thành TTTTTTTTĐĐĐTTTTTTTTTTĐĐĐĐĐT.
"Hãy viết lại dòng này ngắn nhất có thể, sao cho bạn bên cạnh khôi phục lại được y hệt."
Học sinh tự nghĩ ra cách ghi 8T3Đ10T5Đ1T. Không ai cần được dạy; ràng buộc khôi phục lại được y hệt dẫn thẳng tới đó.
Bước 2: Đổi bài cho nhau (8 phút). Mỗi nhóm đưa bản đã nén cho nhóm khác khôi phục. Chỗ nào khôi phục sai thì chỗ đó quy tắc còn mơ hồ.
Đây cũng là lúc học sinh gặp vấn đề thật: nếu trong dữ liệu có ký tự số thì sao? Quy tắc phải chặt hơn, và học sinh tự đi tới nhu cầu đó.
Bước 3: Trường hợp xấu (10 phút). Giáo viên đưa một dãy không có gì lặp: TĐTĐTĐTĐTĐ.
"Nén dãy này bằng cách của em xem."
Kết quả dài hơn bản gốc. Đây là khoảnh khắc quan trọng nhất của cả bài: không có cách nén nào làm ngắn được mọi dữ liệu. Nén hoạt động vì dữ liệu thật có quy luật, không phải vì phép màu nào.
"Vậy nếu nén một tệp đã nén rồi thì sao?"
Bước 4: Nén mất dữ liệu (12 phút). Đưa cùng một bức ảnh ở bốn mức nén khác nhau, từ gần như nguyên bản tới vỡ hạt rõ rệt.
"Ảnh nào đủ dùng để đăng lên mạng? Ảnh nào đủ dùng để in ra khổ lớn? Ảnh nào đủ dùng làm bằng chứng?"
Ba câu hỏi cho ba câu trả lời khác nhau, và học sinh phát hiện "đủ tốt" phụ thuộc vào mục đích chứ không phải một ngưỡng cố định.
Bước 5: Nối ra đời sống (8 phút)."Vì sao gửi ảnh qua ứng dụng nhắn tin thì mờ đi? Vì sao file nhạc nén nghe vẫn ổn mà người chơi nhạc chuyên nghiệp lại không chịu?"
Chấm theo tiêu chí Design
| Tiêu chí | Ở bài này |
|---|---|
| A | Phân tích nhu cầu nén và các ràng buộc của bài toán |
| B | Nghĩ ra quy tắc nén của riêng mình, viết đủ rõ để người khác dùng |
| C | Nén và khôi phục thành công một bộ dữ liệu thật |
| D | Đánh giá giới hạn của phương pháp, và bàn về nén mất dữ liệu |
Demo 3 · Thuật toán xếp hàng: ai được khám trước?
| Lớp | 10–12 |
| Key concept | Communities |
| Related concepts | Consequences · Systems · Development |
| Global context | Fairness and development |
| Statement of inquiry | Mỗi quy tắc tự động hoá đều mang theo một quan niệm về công bằng, kể cả khi người viết không hề nghĩ tới điều đó. |
| Cần biết trước | Câu lệnh điều kiện. Bài này chạy được cả trên giấy. |
Ba câu hỏi
- Factual: Một hàng đợi hoạt động thế nào? Ưu tiên là gì?
- Conceptual: Điều gì làm một quy tắc phân bổ trở nên công bằng?
- Debatable: Có thuật toán nào trung lập không?
Diễn biến tiết học
Bước 1: Bài toán thật (8 phút). Một phòng khám có một bác sĩ và mười bệnh nhân đang chờ, kèm hồ sơ ngắn: giờ tới, mức độ nặng, tuổi, quãng đường đã đi, đã chờ bao lâu.
"Hãy viết quy tắc quyết định ai được khám trước. Quy tắc phải rõ tới mức máy chạy được, không được có chỗ nào phụ thuộc cảm tính."
Bước 2: Mỗi nhóm một quy tắc (15 phút). Các nhóm viết quy tắc của mình dưới dạng các câu điều kiện, rồi chạy tay trên đúng mười hồ sơ đó và cho ra một thứ tự cụ thể.
Ràng buộc chạy tay là quan trọng: nó buộc quy tắc phải đủ chặt để không còn chỗ diễn giải.
Bước 3: So các thứ tự (12 phút). Các thứ tự khác nhau rõ rệt. Giáo viên chiếu tất cả lên bảng cùng lúc.
"Ai được lợi từ quy tắc của nhóm 1? Ai bị thiệt?"
Học sinh phát hiện: quy tắc ưu tiên người tới sớm làm thiệt người ở xa; quy tắc ưu tiên ca nặng làm người bệnh nhẹ chờ mãi không tới lượt; quy tắc ưu tiên người già bỏ quên trẻ nhỏ.
Bước 4: Không có phương án trung lập (10 phút)."Nhóm nào có quy tắc công bằng với tất cả mọi người?"
Không nhóm nào. Đây là điểm cần đạt của cả bài: mọi quy tắc đều tối ưu cho một quan niệm công bằng nào đó và trả giá ở quan niệm khác.
"Kể cả quy tắc đơn giản nhất, ai tới trước khám trước, cũng đang chọn một bên. Nó chọn ai?"
Bước 5: Ai là người quyết (8 phút)."Trong đời thật, ai viết những quy tắc kiểu này? Bệnh nhân có biết quy tắc đang chạy là gì không? Họ có được hỏi ý kiến không?"
Câu hỏi này mở ra phần mà chương trình Tin học trong nước gần như không chạm tới, và nó là phần học sinh sẽ sống cùng suốt đời: các quy tắc tự động đang phân bổ cơ hội cho họ mỗi ngày, phần lớn là vô hình.
Chấm theo tiêu chí Design
| Tiêu chí | Ở bài này |
|---|---|
| A | Phân tích bối cảnh, xác định các bên liên quan và nhu cầu của họ |
| B | Thiết kế quy tắc rõ ràng, chạy được, không phụ thuộc cảm tính |
| C | Chạy quy tắc trên dữ liệu thật và cho ra kết quả cụ thể |
| D | Đánh giá tác động lên từng nhóm, nêu được đánh đổi và giới hạn |
Ba bài này nằm ở đâu trong curriculum
| Demo | Package chính | Module liên quan |
|---|---|---|
| 1 · Sắp xếp | 2 · Design an Algorithm | 2.2 Choose a strategy · 2.3 Cost of a solution |
| 2 · Nén dữ liệu | 1 · Decompose | 1.2 Find the pattern · 1.3 Abstract away detail |
| 3 · Xếp hàng | 5 · Build & Judge | 5.3 Judge the impact |
Hai package không có demo nào ở đây là 3 · Implement và 4 · Debug, vì cả hai chỉ học được bằng cách ngồi viết code thật, không diễn tả gọn trong một tiết inquiry.
Toàn bộ khung năng lực của môn: Curriculum Computer Science
Ở nhà
Demo 1 chơi được với một bộ bài tây: rút mười lá, úp xuống, và luật mỗi lần chỉ lật hai lá. Hai mươi phút, không cần máy tính, và nó dạy tư duy thuật toán tốt hơn nhiều giờ gõ theo mẫu.