Hướng dẫn chấm bài tự động
Cấu trúc
de_thi_thu/
De01/
De01.md ← đề phát cho HS
sinh_test.py ← sinh lại bộ test (giáo viên)
TONGCS/
loi_giai.py ← lời giải mẫu (KHÔNG đưa cho HS trước khi thi)
tests/01.inp, 01.out, ...
MATKHAU/ DEMNT/ NANG/Bài DEMNT có thêm loi_giai_cham.py – lời giải kiểm tra từng số đến √x, chỉ được 6/10 điểm vì quá thời gian ở các test lớn.
Dùng nó để giải thích cho HS ý nghĩa của giới hạn dữ liệu và điểm từng phần.
Chấm bài
Mở terminal trong thư mục TinHocTre:
python cham_bai.py <file_bai_lam.py> <thu_muc_test> python cham_bai.py bai_lam/An/TONGCS.py de_thi_thu/De01/TONGCS/tests
Tùy chọn:
-t 2– giới hạn 2 giây/test (mặc định 1 giây).-d 20– bài có tổng 20 điểm (mặc định 10).--file TONGCS– khi đề yêu cầu đọcTONGCS.INPvà ghiTONGCS.OUT.
Kết quả từng test: ĐÚNG, SAI KẾT QUẢ (có in "cần in / em in" để HS so sánh), QUÁ THỜI GIAN, LỖI KHI CHẠY (kèm dòng lỗi).
Công cụ cũng nhận thư mục test kiểu Themis (Test01/TENBAI.INP, Test01/TENBAI.OUT) nếu thầy/cô có bộ test của đề cũ.
Tự ra đề mới
- Sao chép thư mục
De01thànhDe02. - Viết đề vào
De02.md, lời giải mẫu vào<TENBAI>/loi_giai.py. - Sửa phần sinh input trong
sinh_test.py, chạypython sinh_test.py. - Chấm thử lời giải mẫu để chắc chắn đạt 100%.
Mẹo ra test tốt (cũng là điều cần dạy HS):
- 2–3 test giống ví dụ, nhỏ, dễ kiểm tra bằng tay.
- Test biên: n nhỏ nhất, giá trị nhỏ nhất/lớn nhất, toàn số bằng nhau, kết quả bằng 0.
- Test lớn đúng giới hạn để phân biệt lời giải nhanh và chậm.
- Nếu đề có giới hạn kiểu "60% số test n ≤ 1000" thì đúng 60% test phải thỏa mãn.
Nguồn đề để luyện
- Đề Tin học trẻ, HSG Tin THCS các năm: tìm theo từ khóa "Tin học trẻ", "HSG THCS" trên https://lqdoj.edu.vn và https://oj.vnoi.info – có sẵn máy chấm online.
- Xin đề và bộ test các năm trước của tỉnh/huyện mình từ Phòng/Sở GD&ĐT – sát nhất với kỳ thi thật.