Ôn thi học sinh giỏi Tin học 10: học gì trước?

Ôn thi học sinh giỏi Tin học 10 đúng cách: chia thứ tự học theo chuyên đề, tránh lỗi hay gặp, kèm tài liệu song ngữ 408 trang có đề luyện và hướng dẫn chấm.

Đăng ngày 2026-10-25

Ôn thi học sinh giỏi Tin học 10: học gì trước?

Một buổi ôn đội tuyển. Bài đầu: đổi 2024 sang nhị phân. Cả phòng làm xong trong hai phút. Bài thứ hai: biểu diễn −2024 bằng 16 bit bù hai. Im. Vài bạn ra 1111 1000 0001 1000, số còn lại ra 1000 0111 1110 1000 — quên cộng một. Bài đó hai điểm.

Chuyện nhỏ, nhưng nó chỉ đúng chỗ nhiều bạn trượt khi ôn thi học sinh giỏi Tin học 10: không trượt ở phần khó, trượt ở phần tưởng là dễ.

Điểm rơi không nằm ở chỗ bạn nghĩ

Đa số học sinh lớp 10 mới học Tin học theo sách giáo khoa sẽ có cảm giác môn này là môn lập trình. Cứ học Python cho chắc. Rồi đem hết thời gian đổ vào vòng lặp, danh sách, hàm.

Trong khi cấu trúc một đề thi học sinh giỏi cấp tỉnh thường chia làm hai nửa: phần kiến thức nền (biểu diễn thông tin, dữ liệu đa phương tiện, mạng, bản quyền, đồ họa) và phần lập trình. Lấy một tình huống giả định cho dễ hình dung: đề 3 bài, 180 phút, thang 20 điểm. Bài 1 và bài 2 thường là bài "chắc điểm" — đọc hiểu, tính toán, viết chương trình ngắn. Bài 3 mới là bài phân loại.

Bạn dồn 150 phút cho bài 3, sai một test biên, mất 4 điểm. Ba bạn cùng đội làm đúng bài 1, bài 2 gọn gàng, bài 3 chỉ được 5/8, vẫn hơn bạn. Thứ hạng chênh nhau ở đúng chỗ đó.

Nên thứ tự ôn hợp lý không phải "Python trước, còn lại sau". Mà là: phần nào ra điểm chắc, làm trước.

Chín chương, và chương nào đáng giờ

Tài liệu mình đang nói tới ở cuối bài có chín chương. Bảng dưới đây là cách mình hay khuyên chia thời gian cho nhóm nội dung tương ứng — con số giờ là gợi ý cho một bạn đã học xong chương trình trên lớp, không phải cho người mới bắt đầu từ số 0.

Nhóm nội dungKiểu bài dễ mất điểmGợi ý thời lượng
Thông tin và hệ nhị phânĐổi cơ số, số âm bù hai, số thực10–12 giờ
Dữ liệu âm thanh, hình ảnhTính dung lượng, độ phân giải, nén5–6 giờ
Mạng, an toàn, bản quyềnCâu hỏi tình huống, phân biệt khái niệm4–5 giờ
Thiết kế đồ họa với InkscapeThao tác vector, lớp, xuất file4 giờ
Python: biến, câu lệnh, hàmLỗi biên, lỗi kiểu dữ liệu20–25 giờ
Kiểm thử và gỡ lỗiTự sinh test, đọc thông báo lỗi6 giờ
Robot giáo dụcĐọc sơ đồ, hiểu cảm biến, logic điều khiển3 giờ

Nhìn cột giữa thì thấy: hai nhóm ăn điểm nhiều nhất lại là hai nhóm ít hào hứng nhất. Nhị phân và dung lượng ảnh không có gì để "flex". Nhưng chúng có đáp án đúng sai rõ ràng, học một lần là ăn điểm suốt.

Nhị phân: làm chậm một lần cho đúng

Phần lớn lỗi ở đây không phải không hiểu, mà là làm nhanh quá.

Đổi 2024: chọn lũy thừa lớn nhất không vượt quá là 1024. Trừ còn 1000. 512 → còn 488. 256 → 232. 128 → 104. 64 → 40. 32 → 8. 16 không lấy. 8 → 0. Còn 11111101000. Mười một bit.

Số âm thì khác. −2024 trong 16 bit: lấy 2024 hệ 16 là 0x07E8, đảo bit được 0xF817, cộng 1 ra 0xF818, tức 1111 1000 0001 1000. Chỗ hay sai nhất là bước cộng 1 — quên là ra 0xF817, mà 0xF817 lại trông rất giống đáp án đúng, nên bạn không tự nghi ngờ.

Cách tự kiểm tra nhanh: cộng số ban đầu với số bù hai phải ra 0x0000 (bỏ bit tràn). 0x07E8 + 0xF818 = 0x10000, bỏ bit tràn còn 0. Đúng. Nếu không ra 0, sai.

Ba mẹo nhỏ, học một lần dùng mãi: viết bảng lũy thừa 2 từ 1 đến 2048 ra lề giấy; đổi sang hệ 16 trước rồi mới sang nhị phân (sai ít hơn nhiều); và luôn thử lại bằng phép cộng ngược.

Âm thanh và hình ảnh: bài toán nhân chia đội lốt tin học

Đây là phần dễ ăn điểm nhất trong đề, vì công thức chỉ có nhân và chia.

Một giây âm thanh chuẩn CD: 44.100 mẫu, 16 bit mỗi mẫu, 2 kênh. Ra 44.100 × 16 × 2 = 1.411.200 bit, chia 8 được 176.400 byte, khoảng 172 KB mỗi giây. Một bài 3 phút 30 giây = 210 giây, vậy khoảng 35,3 MB. Nếu đề hỏi bản 128 kbps thì lấy 128.000 × 210 / 8, ra khoảng 3,4 MB — chênh nhau hơn mười lần, và đó chính là ý mà đề muốn bạn nói ra.

Ảnh cũng vậy. Một trang A4 in ở 300 dpi là 2480 × 3508 pixel, khoảng 8,7 triệu điểm ảnh. Ảnh màu 24 bit không nén: 8.699.840 × 3 byte, xấp xỉ 25 MB. Đọc tới đây thì hiểu luôn vì sao ảnh JPEG cùng kích thước chỉ nặng vài trăm KB.

Lỗi hay gặp: lẫn bit và byte, lẫn KB và KiB, quên nhân số kênh. Cả ba đều là lỗi đơn vị, không phải lỗi hiểu bài.

Python: chạy được chưa chắc đã đúng

Đây là chỗ mình thấy nhiều bạn tự tin nhất và cũng dễ mất điểm nhất.

Bài tập quen thuộc: viết hàm đếm số ước của n. Bạn viết vòng lặp từ 1 đến n, đếm ước, thử với n = 12 ra 6. Đúng. Nộp.

Nhưng chương trình đó với n = 0 trả về 1, trong khi 0 có vô số ước — đề thường quy ước trả 0. Với n âm thì vòng lặp không chạy lần nào, trả 0, cũng sai. Với n = 1 trả 1, đúng nhưng thường không được kiểm tra. Ba test biên đó chưa bao giờ xuất hiện trong đầu bạn lúc viết.

Bản sửa không dài hơn: kiểm tra điều kiện đầu vào trước, dùng abs(n), và chạy tới int(n**0.5) thay vì tới n.

Chuyện hàm cũng vậy. Học sinh lớp 10 thường viết một hàm main dài 60 dòng rồi gỡ lỗi bằng cách in ra giữa. Tách thành hàm nhỏ thì mỗi hàm test được riêng, mà đề thi HSG hay chấm theo kiểu "viết hàm này, không cần in gì". Ai quen viết hàm sạch sẽ có lợi thế rõ rệt, không phải vì giỏi thuật toán hơn, mà vì ít lỗi vặt hơn.

Còn một bẫy nữa: range() không tính cận trên, // với số âm làm tròn xuống chứ không phải về 0, input() luôn trả chuỗi. Ba cái đó mà không nhớ thì mất điểm oan.

Kiểm thử và gỡ lỗi — chương ít người đọc nhất

Không ai thích đọc về kiểm thử. Nhưng đây là kỹ năng quyết định trong phòng thi, vì bạn không có giáo viên ngồi cạnh báo "em sai rồi".

Một quy trình đủ dùng trong 5 phút: viết xong code, tự nghĩ ra 5 bộ dữ liệu — nhỏ nhất, lớn nhất trong giới hạn đề, giá trị đặc biệt (0, 1, số âm, chuỗi rỗng), một bộ bình thường, một bộ dễ gây tràn. Chạy tay bằng giấy. Chỉ khi cả 5 bộ đúng mới tin bài mình.

Nghe chậm. Nhưng nếu bạn từng nộp bài tự tin rồi về nhà phát hiện sai ở test n = 1, bạn sẽ thấy 5 phút đó rẻ.

Thông báo lỗi của Python cũng cần đọc cho quen. IndentationError khác TypeError, khác IndexError. Đọc dòng cuối trước, dòng đó nói loại lỗi; đọc dòng có số thứ tự để biết vị trí. Nhiều bạn xóa cả bài viết lại chỉ vì không đọc dòng cuối.

Inkscape, mạng, robot: phần "học chay" khó nhớ

Ba phần này có đặc điểm chung: đọc thì hiểu, đến lúc làm thì lúng túng, vì chúng cần thao tác chứ không chỉ lý thuyết.

Với Inkscape, thứ đáng nhớ không phải tên từng công cụ mà là sự khác nhau giữa vector và raster — và hệ quả của nó: phóng to ảnh vector không vỡ, raster thì vỡ. Đề hay hỏi đúng chỗ đó. Ngoài ra nên biết đường dẫn (path) là gì, vì mọi thao tác đẹp nhất trong Inkscape đều xoay quanh nó.

Với mạng và an toàn thông tin, câu hỏi dạng tình huống chiếm phần lớn: nhận diện email lừa đảo, phân biệt bản quyền phần mềm với bản quyền tác phẩm, hiểu vì sao HTTPS không đồng nghĩa với "trang web đáng tin". Học thuộc định nghĩa không giúp gì mấy ở đây.

Robot giáo dục thì nên học bằng sơ đồ. Vẽ tay một robot có hai cảm biến, viết ra quy tắc "nếu cả hai thấy vạch thì đi thẳng, nếu chỉ bên trái thấy thì rẽ phải". Viết được bằng lời là hiểu. Đừng học thuộc khối lệnh.

Song ngữ: đọc bản tiếng Anh khi nào

Một tài liệu song ngữ Việt–Anh có ích nhất ở hai chỗ: thuật ngữ và đề bài.

Thuật ngữ thì nên tra theo cặp. "Two's complement" là bù hai. "Floating point" là dấu phẩy động. "Lossless compression" là nén không mất dữ liệu. Học theo cặp như vậy, bạn đọc được cả đề tiếng Việt lẫn tài liệu tiếng Anh sau này, và đi thi thì không bị bối rối khi đề dùng cách gọi khác sách giáo khoa.

Nhưng đừng đọc song song cả hai bản từ đầu đến cuối. Mất thời gian gấp đôi. Đọc bản tiếng Việt trước để nắm nội dung, chỉ mở bản tiếng Anh ở đúng đoạn có thuật ngữ mới hoặc đoạn bạn thấy mơ hồ.

Chia lịch thực tế cho tám tuần

Giả sử bạn có tám tuần trước kỳ thi cấp tỉnh, mỗi ngày 90 phút. Đừng chia đều chín chương.

Bốn tuần đầu: nhị phân và dữ liệu đa phương tiện, mỗi ngày một dạng bài, tuần thứ ba và tư chuyển sang Python cơ bản. Mục tiêu không phải làm hết bài tập mà là làm đúng 100% dạng đã học. Tuần thứ năm và sáu: luyện đề theo đúng thời gian, bấm đồng hồ, kể cả khi chưa làm xong. Hai tuần cuối: chỉ sửa lỗi sai trong các đề đã làm, không học thêm kiến thức mới.

Cái bẫy của tuần thứ năm là làm đề xong rồi cất đi. Sửa đề mới là phần học. Mỗi bài sai, ghi ra một dòng: sai vì kiến thức, sai vì đọc đề, hay sai vì bất cẩn. Sau mười đề, nhìn lại danh sách đó là biết mình cần vá chỗ nào.

Còn nếu chỉ còn hai tuần? Khi đó đừng học chương mới. Làm lại đề cũ, học thuộc bảng công thức, và luyện đúng những dạng đã từng làm đúng.

Tài liệu này làm được gì, và không làm được gì

Cuốn Tin học 10 cho Gà chọi — Việt/Anh là bản PDF song ngữ 408 trang, chia chín chương, gồm cả phần chương trình Python chạy thật kèm kết quả, đề tự luyện ba mức có hướng dẫn chấm, ba đề luyện thi và bảng thuật ngữ Việt–Anh. Giá 99.000đ, thanh toán chuyển khoản trong nước, nhận file trong vòng 24 giờ. Trước khi mua thì xem được 5 trang xem trước miễn phí để biết văn phong và độ khó có hợp với mình không.

Nói thẳng chỗ hạn chế, để bạn khỏi mua rồi thất vọng.

Nó không thay giáo trình của trường, không phải sách giáo khoa và không bám sát từng tiết trên lớp. Không có video bài giảng, không có hệ thống chấm tự động — bạn tự chấm bằng hướng dẫn in trong tài liệu. Phần song ngữ cũng không phải để luyện nghe tiếng Anh. Và quan trọng nhất: nó là tài liệu để bạn ngồi làm, không phải để đọc qua một lượt rồi để đó. Nếu bạn cần ai đó theo sát, nhắc nhở, kèm từng bài thì một cuốn PDF không làm được việc đó.

Nó hợp với bạn nào đã có nền lớp 10, muốn một lộ trình có thứ tự, có đề để tự đo mình đang ở mức nào, và cần phần thực hành Python đủ để tự chạy — không phải để đọc.

Xem thử Tin học 10 cho Gà chọi — Việt/Anh tại tailieuso.vin, mở 5 trang đầu trước đã. Nếu thấy nhịp trình bày khớp với cách bạn học, phần còn lại của 408 trang mới có ích.

💬