Danh mục:
Làm sao để có được kết quả tốt khi tham gia các cuộc thi ICPC/OLP hoặc Hackathon, bạn cần dành thời gian chuẩn bị kỹ càng về chuyên môn lẫn kỹ năng. Vậy hãy xem là mình cần chuẩn bị tốt những gì ở bài viết này. Dưới đây là lộ trình học tập chi tiết để chuẩn bị thi ICPC, OLP và Hackathon, dành cho sinh viên CNTT từ cơ bản đến nâng cao. Mình sẽ chia theo 2 nhánh chính:
LỘ TRÌNH THUẬT TOÁN – dành cho ICPC / OLP
Mục tiêu: Giỏi thuật toán + code nhanh để thi cá nhân (OLP) hoặc đội nhóm (ICPC)
Giai đoạn 1: Cơ bản (1–2 tháng)
- Kỹ năng cần nắm:
- Cấu trúc dữ liệu cơ bản:
+ Array, String, Stack, Queue, Linked List
+ Set, Map (Hash)
- Thuật toán cơ bản:
+Duyệt tuyến tính, tìm kiếm nhị phân
+Đệ quy, Backtracking đơn giản
+ Sorting (Bubble, Insertion, Merge, Quick...)
- Nền tảng luyện tập:
- CSES Problem Set (Introductory Problems)
- Leetcode: Easy + một số Medium
- Codeforces Rating < 1000
Giai đoạn 2: Trung bình (2–3 tháng)
- Kỹ năng cần nắm:
- Cấu trúc nâng cao:
+ Heap/Priority Queue, Deque
+ DSU, Trie, Segment Tree cơ bản
- Thuật toán quan trọng:
+ BFS, DFS, Dijkstra
+ Quy hoạch động (DP)
+ Đệ quy nhánh cận (Branch & Bound)
+ Kỹ thuật two-pointer, sliding window
- Nền tảng luyện tập:
- Codeforces (Div 3 hoặc Div 2 C, D)
- VNOJ / SPOJ bài tập OLP, ICPC archive
- Luyện đề ICPC khu vực Việt Nam những năm trước
Giai đoạn 3: Nâng cao (3–6 tháng+)
- Kỹ năng cần nắm:
- Segment Tree, BIT nâng cao
- Lập trình đồ thị nâng cao: Bellman-Ford, Floyd, SCC, TopoSort
- DP nâng cao (DP bitmask, DP trên đồ thị, tree)
- Kỹ năng phân tích bài + tối ưu lời giải
- Luyện tập:
- Codeforces Div 2/1 C, D, E
- AtCoder Beginner → Regular → Grand
- Luyện theo chủ đề: Tree, Graph, DP, Geometry...
Nguồn học thuật toán:
- CP-Algorithms
- USACO Guide
- Sách: "Competitive Programming" của Steven Halim
LỘ TRÌNH DỰ THI HACKATHON
Mục tiêu: Biết teamwork, phát triển sản phẩm thực tế trong 24–48h
Giai đoạn 1: Kỹ năng nền tảng (1–2 tháng)
- Cần học:
- Git & GitHub cơ bản (làm nhóm)
- Frontend: HTML, CSS, JS hoặc React
- Backend: Node.js, Express / Python Flask / Firebase
- Cơ sở dữ liệu: MongoDB, Firebase, MySQL
- Đề xuất học qua các khóa free:
- The Odin Project
- FreeCodeCamp
Giai đoạn 2: Build project mini (2–3 tháng)
- Mục tiêu: Làm vài project như:
- To-do App
- Chat App đơn giản
- App đặt lịch học / thời khóa biểu
- Web quản lý sinh viên / sản phẩm
- Sử dụng Figma để thiết kế UI nhanh, sử dụng React/Firebase để build nhanh MVP.
Giai đoạn 3: Tham gia hackathon
- Tìm team (3–4 người: 1 Frontend, 1 Backend, 1 UI/UX, 1 Leader)
- Lên ý tưởng giải quyết vấn đề thực tế (edu, health, environment…)
- Biết thuyết trình, làm video demo, báo cáo Pitch Deck
So sánh mục tiêu:
- Với ICPC/OLP: Với thời gian làm trong 5 tiếng/thuật toán. Mục tiêu là giải thuật toán đúng và nhanh, kỹ năng chính vẫn là tư duy thuật toán, clean code. Ngôn ngữ thường dùng là C++, Java, Python
- Với Hackathon: từ 24-48h làm sản phẩm, phải có ý nghĩa thực tế. Phát huy kỹ năng Teamwork, UI/UX, backend/frontend. Ngôn ngữ thường dùng là JavaScript, Python, React, Firebase
Bạn nên chọn hoặc kết hợp cả hai hướng:
- Thi ICPC/OLP: phát triển tư duy logic cực tốt → giúp phỏng vấn tech company.
- Hackathon: tăng trải nghiệm thực tế, làm dự án + thuyết trình → phù hợp startup, product.
Chúc bạn có kỳ thi thành công!