Khóa học lập trình thi đấu dành cho các bạn học sinh, sinh viên IT yêu thích thuật toán và có định hướng học thuật toán để thi đấu các kỳ thi học sinh giỏi, tin học trẻ, Olympic tin học sinh viên.
Nội dung của khóa học cũng giúp bạn dễ dàng vượt qua những bài phỏng vấn thuật toán khó khăn nhất tại các doanh nghiệp lớn.
Để tham gia được khóa học này bạn cần thành thạo ngôn ngữ lập trình C++ & STL, đã nắm vững các cấu trúc dữ liệu, giải thuật và đồ thị. Đặc biệt bạn cần có niềm đam mê với thuật toán và thi đấu lập trình.
Tổng quan khóa học
Khóa học gồm 65 buổi (130 giờ học) kéo dài trong 4 tháng, mỗi tuần học viên sẽ có 4 buổi học.
Khóa học dành cho các bạn sinh viên CNTT hoặc học sinh đam mê mảng thuật toán, lập trình thi đấu muốn học để thi đấu lập trình thuật toán.
Các contest trong khóa học được chuẩn bị và sử dụng nền tảng chấm bài tự động của Hackerrank, Codeforces để các bạn có thể nộp lời giải và tự đánh giá kết quả. Khóa học với 18-20 contest gồm 600 - 650 bài tập được chuẩn bị kỹ lưỡng là một trong những yếu tố nâng cao chất lượng giảng dạy. Toàn bộ bài tập trong contest sẽ được giáo viên giải chi tiết.
Thời lượng : 65 buổi học (130 giờ học)
Thời gian học : 4 tháng
Hình thức học: Video qua Google Drive
Số buổi trên tuần : 4 buổi (2h/buổi)
Số lượng contest : 18
Số lượng bài tập : 600 - 650
Yêu cầu đầu vào : C++, STL, Thành thạo các Cấu trúc dữ liệu & giải thuật
Bài 1 : Chữa contest đầu vào
- Set, Map
- Kiến thức toán trong lập trình
- Chữa contest đầu vào
- Giao contest 1 Codeforces
Bài 2 : Hướng dẫn contest 1
- Hướng dẫn giải bài tập contest 1
Bài 3 : Queue, Stack, Deque
Bài 4 : Hướng dẫn contest 1
Bài 5 : Sàng, Phân tích SNT, Phi hàm Euler, Tổ hợp
Bài 6 : Thuật Euclid mở rộng, Phương trình tuyến tính, Nghịch đảo modulo
Bài 7 : Hướng dẫn contest 2
Bài 8 : Duyệt: Brute Force (Trâu, Vét cạn), Thao tác bit (bitwise), Độ phức tạp (Time Complexity) - P1
- Giao contest 3
Bài 9 : Duyệt: Brute Force (Trâu, Vét cạn), Thao tác bit (bitwise), Độ phức tạp (Time Complexity) - P2
Bài 10 : Hướng dẫn contest 3
Bài 11 : Duyệt: Đệ quy, Backtracking (Quay lui), Nhánh cận - P1
- Giao contest 4
Bài 12 : Duyệt: Đệ quy, Backtracking (Quay lui), Nhánh cận - P2
- Giao contest định kỳ 1
Bài 13 : Hướng dẫn contest 4
Bài 14 : Mảng cộng dồn, Hai con trỏ
- Giao contest 5
Bài 15 : Tham lam
Bài 16 : Hướng dẫn contest 6
Bài 17 : Chặt nhị phân P1
- Giao contest 6
Bài 18 : Chặt nhị phân P2, Tam phân
Bài 19 : Hướng dẫn contest 6
Bài 20 : Lý thuyết đồ thị, DFS, BFS - P1
- Giao contest 7
Bài 21 : Lý thuyết đồ thị, DFS, BFS - P2
Bài 22 : Hướng dẫn contest 7
Bài 23 : Shortest Path (BFS 0 - 1, Dijkstra, Floydd, Bellmanford) - P1
- Giao contest 8
Bài 24 : Shortest Path (BFS 0 - 1, Dijkstra, Floydd, Bellmanford) - P2
Bài 25 : Hướng dẫn contest 8
- Giao contest định kỳ 2
Bài 26 : Hướng dẫn contest 8 phần 2
Bài 27 : Đệ quy có nhớ, QHD cơ bản P1 (Knapsack, LIS,...)
- Giao contest 9
Bài 28 : Quy hoạch động cơ bản P2
Bài 29 : Hướng dẫn contest 9 P1
Bài 30 : Hướng dẫn contest 9 P2
Bài 31 : Quy hoạch động chữ số
- Giao contest 10
Bài 32 : QHD nhân ma trận
Bài 33 : QHD trạng thái (Bitmask)
Bài 34 : Hướng dẫn contest 10
Bài 35 : DSU, MST (Kruskal, Primm) P1
- Giao contest 11
Bài 36 : DSU, MST (Kruskal, Primm) P2
Bài 37 : Hướng dẫn contest 11
Bài 38 : Fenwick tree
- Giao contest 12
Bài 39 : Segment tree P1
Bài 40 : Segment Tree P2 (lazy)
Bài 41 : Hướng dẫn contest 12
- Contest định kỳ 3
Bài 42 : DP trên cây (on Tree)
- Giao contest 13
Bài 43 : DP & CTDL
Bài 44 : DP nâng cao
Bài 45 : Hướng dẫn contest 13
Bài 46 : RMQ
- Giao contest 14
Bài 47 : LCA, BinLifting
Bài 48 : Hướng dẫn contest 14 phần 1
Bài 49 : Hướng dẫn contest 14 phần 2
Bài 50 : Thành phần liên thông mạnh : Kosaraju, Tarjan
- Giao contest 15
Bài 51 : Khớp & Cầu
Bài 52 : Hướng dẫn contest 15 phần 1
Bài 53 : Hướng dẫn contest 15 phần 2
Bài 54 : Hashing, Trie P1
- Giao contest 16
Bài 55 : KMP, Z function P2
Bài 56 : Hướng dẫn contest 16
Bài 57 : Euler tour, Segment Tree trên cây
- Giao contest 17
Bài 58 : Heavy Light Decomposition
Bài 59 : Hướng dẫn contest 17 phần 1
Bài 60 : Hướng dẫn contest 17 phần 2
Bài 61 : Chia căn P1
- Giao contest 18
Bài 62 : Chia căn P2
Bài 63 : Chia để trị
Bài 64 : Hướng dẫn contest 18
- Giao contest tổng kết cuối khóa
Bài 65 : Hướng dẫn contest tổng kết cuối khóa
Mục tiêu khóa học
Thành thạo CTDL & Giải thuật
Bạn sẽ thành thạo các cấu trúc dữ liệu, thuật toán và kỹ năng nâng cao trong lập trình sau khi hoàn thành khóa học.
Thi đấu lập trình, tin học
Có đủ khả năng tham gia các cuộc thi về lập trình thuật toán ở cấp học sinh, sinh viên hay trong các cuộc thi lập trình được tổ chức bởi các doanh nghiệp
Dành học bổng, làm đẹp CV
Kiến thức về thuật toán giúp bạn có thể đặt được học bổng tài trợ của công ty lớn như Samsung, Viettel, thành tích trong các cuộc thi về lập trình thi đấu sẽ giúp bạn có một CV đẹp hơn.
Trở thành nhân lực CNTT chất lượng cao
Sự khác biệt trong tư duy logic và khả năng giải quyết vấn đề sẽ giúp bạn có ưu thế cạnh tranh và dễ phát triển được sư nghiệp.
Kết quả khóa học
Kiến thức hoàn thiện
Hoàn thiện kiến thức về thuật toán & cấu trúc dữ liệu, một kỹ năng rất được quan tâm bởi các doanh nghiệp khi tuyển dụng lập trình viên.
Tư duy của lập trình viên giỏi & Code tối ưu
Bài tập đa dạng, phong phú, bám sát kỹ năng cần có của lập trình viên hiện đại và hệ thống chấm bài tự động sẽ giúp bạn cực kỳ nhiều trong việc phát triển tư duy. Bạn bắt buộc phải học code một các chính xác và tối ưu.
Hộ trợ việc học tập tại đại học & Phỏng vấn
Kiến thức và mức độ khó của bài tập trong khóa học phù hợp với mọi sinh viên các trường đại học sẽ hỗ trợ cho việc học lập trình và thuật toán của bạn dễ dàng và nhanh chóng hơn. Ngoài ra những kiến thức và kỹ năng trong khóa học cũng giúp bạn chuẩn bị tốt cho vòng phỏng vấn về tư duy lập trình, thuật toán.
Kỹ năng cho lập trình thi đấu
Đây là khóa học cung cấp cho bạn những kiến thức nâng cao cần có cho những bạn có mục tiêu thi đấu lập trình, tin học trẻ, học sinh giỏi, ICPC...
Kinh nghiệm giải bài với hệ thống chấm tự động
Có kinh nghiệm giải bài tập trên các nền tảng chấm bài online tự động như Codeforces, Hackerrank, SPOJ. Đây một bước chuẩn bị vững vàng với các bạn theo đuổi lập trình thi đấu hoặc đam mê với thuật toán. Các doanh nghiệp tuyển dụng cũng đang sử dụng hệ thống chấm tự động trong vòng phỏng vấn thuật toán.
Nền tảng & sự tự tin của lập trình viên
Để trở thành lập trình viên thì bạn cần phải học rất nhiều nhưng đầu tiên bạn cần biết code tốt đã, việc có nền tảng tốt sẽ giúp bạn tự tin và đi xa hơn trong tương lai. 28Tech luôn cố gắng giúp bạn lọt vào 30% lập trình viên có kỹ năng tốt nhất.