Giai đoạn 4 – Luyện đề
Mục tiêu giai đoạn: quen áp lực thời gian, thói quen kiểm tra bài, tối đa điểm trong phòng thi.
Trước giai đoạn này, giáo viên cần có: thể lệ năm nay (số bài, thời gian, đọc/ghi file hay bàn phím, phần mềm/IDE trong phòng thi, phiên bản Python) và đề + test các năm trước của địa phương.
Nhịp mỗi tuần (2 buổi)
| Buổi A (150') | Buổi B (90') |
|---|---|
| Thi thử đúng thể lệ: đúng thời gian, đúng tên file, đúng cách nộp bài | 20' chấm bằng cham_bai.py trước mặt HS |
| Giáo viên không hỗ trợ | 40' chữa đề: HS tự trình bày hướng giải, giáo viên bổ sung |
| 30' luyện lại 2–3 bài cùng dạng với bài làm sai |
| Tuần | Đề gợi ý |
|---|---|
| 23 | Đề Tin học trẻ cấp tỉnh năm gần nhất |
| 24 | Đề HSG Tin THCS cấp huyện |
| 25 | Đề Tin học trẻ một tỉnh khác |
| 26 | Đề tự ra (trộn các dạng HS hay sai) |
| 27 | Đề Tin học trẻ cấp tỉnh năm trước nữa |
| 28 | Ôn nhẹ, chữa lỗi, không thi thử 2 ngày trước kỳ thi thật |
Ghi lại sau mỗi đề:
| Đề | HS | Bài 1 | Bài 2 | Bài 3 | Bài 4 | Tổng | Lỗi chính |
|---|
Chiến thuật trong phòng thi (dạy và cho HS thực hành mỗi lần thi thử)
- 10 phút đầu: đọc hết tất cả các đề. Ghi giới hạn n của từng bài; xếp bài từ dễ đến khó.
- Làm chắc bài dễ trước. Bài 1–2 phải đạt điểm tối đa – đây là phần quyết định giải.
- Bài khó: lời giải "trâu" trước, tối ưu sau. Đề thường có "60% test n ≤ 1000" → code duyệt đơn giản cũng ăn được 60%.
- Bị kẹt 20 phút → chuyển bài khác, quay lại sau.
- Tự kiểm tra trước khi nộp:
- Chạy đúng các ví dụ trong đề.
- Thử test biên: n nhỏ nhất, giá trị bằng 0, số âm, tất cả bằng nhau.
- Thử test lớn nhất để đo thời gian.
- Kiểm tra hình thức (lỗi mất điểm oan nhất):
- Tên file đúng như đề (
TONGCS.py, không phảitongcs (1).py). - Đọc/ghi file đúng tên
TONGCS.INP/TONGCS.OUTnếu đề yêu cầu. - Không in thêm câu chữ như
"Ket qua la:", không dùnginput("Nhap n:"). - Lưu file thường xuyên (Ctrl + S).
- Tên file đúng như đề (
- 15 phút cuối: không viết thuật toán mới; kiểm tra lại tên file và nộp bài.
Kỹ thuật "đối chiếu" (stress test) – cho HS lớp 8 và em lớp 7 khi đã vững
Viết 2 lời giải: trau.py (chậm nhưng chắc chắn đúng) và chuan.py (nhanh). Cho máy sinh hàng trăm test nhỏ ngẫu nhiên để tìm test làm hai lời giải ra kết quả khác nhau:
# doi_chieu.py import random, subprocess, sys for lan in range(500): n = random.randint(1, 8) a = [random.randint(-10, 10) for _ in range(n)] test = f"{n}\n{' '.join(map(str, a))}\n" kq1 = subprocess.run([sys.executable, "trau.py"], input=test, capture_output=True, text=True).stdout kq2 = subprocess.run([sys.executable, "chuan.py"], input=test, capture_output=True, text=True).stdout if kq1.split() != kq2.split(): print("Tìm thấy test sai:\n" + test) print("trau :", kq1, "chuan:", kq2) break else: print("500 test đều khớp")
Chuẩn bị trước ngày thi
- Luyện trên đúng phần mềm sẽ có trong phòng thi (IDE, phiên bản Python). Nếu được, xin cho HS vào thử phòng máy.
- Ôn lại "bộ code mẫu" của chính các em: khung chương trình đi thi, sàng nguyên tố, UCLN, cộng dồn, tìm kiếm nhị phân, BFS.
- Ngủ đủ, không học thêm kiến thức mới trong 3 ngày cuối.
- Dặn HS: gặp bài lạ là bình thường – hãy lấy điểm từng phần bằng cách duyệt đơn giản.