TỔNG QUAN HỌC THUẬT VÀ NỘI DUNG GIÁO TRÌNH THUẬT TOÁN VÀ THIẾT KẾ THUẬT TOÁN


Tổng quan về giáo trình

Giáo trình Thuật toán và phân tích thuật toán (bao gồm các nội dung về đệ quy và chiến lược thiết kế thuật toán) là tài liệu học tập nền tảng thuộc khối kiến thức cơ sở ngành trong chương trình đào tạo Cử nhân và Kỹ sư các ngành Khoa học Máy tính, Kỹ thuật Phần mềm, Công nghệ Thông tin và Toán - Tin ứng dụng ở bậc đại học. Tài liệu cung cấp hệ thống lý thuyết về tính toán, phương pháp luận phân tích và các mô hình thuật toán kinh điển trong khoa học máy tính.

Mục tiêu học tập của giáo trình bao gồm:

  • Trang bị hệ thống khái niệm về bài toán, thuật toán và các đặc trưng hình thức theo lý thuyết tính toán.
  • Giúp người học làm chủ kỹ thuật biểu diễn thuật toán qua ngôn ngữ tự nhiên, sơ đồ khối (lưu đồ) và mã giả (pseudocode).
  • Cung cấp phương pháp phân tích độ phức tạp thời gian và không gian thông qua các ký pháp tiệm cận toán học ($O, \Omega, \Theta$).
  • Hệ thống hóa các lớp độ phức tạp tính toán ($P, NP, NP\text{-Hard}, NP\text{-Complete}, NPI, Co\text{-NPC}$).
  • Phát triển kỹ năng vận dụng 9 chiến lược thiết kế thuật toán để giải quyết các lớp bài toán tối ưu và tổ hợp.
  • Hướng dẫn quy trình 7 bước triển khai bài toán trên máy tính từ khâu mô hình hóa dữ liệu đến tối ưu hóa mã nguồn.

Cấu trúc giáo trình gồm 3 chương nội dung lý thuyết kết hợp bài tập thực hành, cùng 2 phần phụ lục chuyên sâu về công cụ phần mềm và đáp án chi tiết. Cách tiếp cận của tài liệu đi từ định nghĩa toán học hình thức, trực quan hóa bằng lưu đồ trên công cụ Flowgorithm, phân tích trường hợp tốt nhất - xấu nhất - trung bình, sau đó tổng quát hóa thành các chiến lược giải thuật tiêu chuẩn.

Điểm đặc thù của giáo trình là sự kết hợp chặt chẽ giữa phân tích toán học và thực hành mô phỏng trực quan: mọi thuật toán cơ sở đều được minh họa bằng lưu đồ khối trên phần mềm Flowgorithm, đồng thời phần bài tập bao gồm cả các bài toán nâng cao thuộc kỳ thi Olympic Tin học.


Nội dung kiến thức cốt lõi

Các chương/chủ đề chính

Cấu trúc nội dung giáo trình được phân bố theo tiến trình logic từ khái niệm cơ sở, phương pháp phân tích, tư duy đệ quy đến các chiến lược thiết kế thuật toán nâng cao:

[Chương 1: Thuật toán & Phân tích thuật toán]
   ├── Bản chất bài toán & 5 đặc trưng thuật toán (Knuth)
   ├── Biểu diễn: Ngôn ngữ tự nhiên, Lưu đồ (Flowchart), Mã giả
   ├── Ký pháp tiệm cận (O, Ω, Θ) & Phân lớp độ phức tạp (P, NP, NP-Hard, NPC)
   └── Quy trình 7 bước giải bài toán trên máy tính
          │
          ▼
[Chương 2: Đệ quy & Thuật toán đệ quy]
   ├── Cơ chế quy nạp, Cấu trúc hàm (Neo & Đệ quy)
   ├── Phân loại: Tuyến tính, Nhị phân, Hỗ tương, Phi tuyến
   ├── Cơ chế Call Stack, Hiện tượng StackOverflow, Kỹ thuật khử đệ quy
   └── Khảo sát bài toán: Fibonacci, Tháp Hà Nội, 8 con hậu, Mã đi tuần, f(x)=0
          │
          ▼
[Chương 3: Một số chiến lược thiết kế thuật toán]
   ├── 1. Vét cạn (Tìm kiếm tuần tự, Người bán hàng)
   ├── 2. Chiến lược sinh (Sinh chuỗi nhị phân, Tập con k phần tử)
   ├── 3. Phương pháp tham lam (Xếp ba lô, Tô màu đồ thị)
   ├── 4. Quay lui (Sudoku, 8 con hậu)
   ├── 5. Chia để trị (Tìm kiếm nhị phân, Tìm Min-Max)
   ├── 6. Quy hoạch động (Dãy con tăng dài nhất)
   ├── 7. Nhánh và cận (Dãy ABC, Bài toán người du lịch)
   ├── 8. Chiến lược ngẫu nhiên (Tính gần đúng, Phần tử đa số)
   └── 9. Chiến lược xấp xỉ nhanh (ε-xấp xỉ tuyệt đối, ε-xấp xỉ)
          │
          ▼
[Phụ lục A & B: Thực hành Flowgorithm & Đáp án / Bài tập Olympic]
  • Chương 1: Thuật toán và phân tích thuật toán (Trang 7–38): Trình bày khái niệm bài toán (Input/Output) theo quan điểm xử lý thông tin; phân biệt giữa định lý (Theorem) và bài toán (Problem) theo quan điểm Pitago; định nghĩa thuật toán theo lý thuyết tính toán và Từ điển Oxford; 5 đặc trưng thuật toán của Donald Knuth (Input, Output, Tính xác định, Tính khả thi, Tính kết thúc/dừng) cùng tính phổ dụng; 3 cấu trúc điều khiển (tuần tự, rẽ nhánh, lặp); 3 phương pháp diễn tả thuật toán (ngôn ngữ tự nhiên, lưu đồ khối, mã giả); quy trình 3 bước phân tích thuật toán; ký pháp tiệm cận ($O, \Omega, \Theta$) và các hàm tăng trưởng chuẩn ($O(1), O(\log n), O(n), O(n\log n), O(n^2), O(n^3), O(2^n), O(n!)$); quy tắc hằng số, quy tắc tổng, quy tắc nhân; phân lớp độ phức tạp ($P, NP, NP\text{-Hard}, NP\text{-Complete}, \text{Strong } NP\text{-Hard}, NPI, Co\text{-NPC}$) với định lý Ladner (1975) và chứng minh Cook - Karp (1971); thiết kế thuật toán số học cơ bản (tính $n!$, tổng dãy số, ước số, số nguyên tố), thuật toán sắp xếp chọn ($Selection\ Sort$ với $n(n-1)/2$ phép so sánh), tìm kiếm giá trị lớn nhất ($amax$ với chi phí Best $n-1$, Worst $2n-2$); tổng quan ngôn ngữ lập trình (ngôn ngữ máy, hợp ngữ, ngôn ngữ bậc cao FORTRAN, ALGOL, COBOL, BASIC, C/C++, Java, Python); quy trình 7 bước giải bài toán trên máy tính và tiến trình biên dịch (phân tích từ vựng, phân tích cú pháp, tối ưu hóa mã, mô-đun đối tượng).

  • Chương 2: Đệ quy và thuật toán đệ quy (Trang 39–57): Định nghĩa đệ quy và nguyên lý quy nạp toán học (bước cơ sở và bước quy nạp); cấu trúc giải thuật đệ quy gồm phần suy biến (neo/Anchor) và phần quy nạp; phân loại 4 mô hình đệ quy (đệ quy tuyến tính, đệ quy nhị phân, đệ quy hỗ tương, đệ quy phi tuyến); ưu nhược điểm của đệ quy; quy trình 3 bước xây dựng hàm đệ quy (thông số hóa, tìm thuật giải tổng quát, tìm trường hợp suy biến); cơ chế ngăn xếp hệ thống (Call Stack), cây đệ quy (Recursive Tree) và lỗi tràn ngăn xếp (StackOverflow); bản chất của kỹ thuật khử đệ quy; phân tích chi tiết các bài toán kinh điển:

    1. Dãy Fibonacci: So sánh giải thuật đệ quy cây nhị phân độ phức tạp $O(2^n)$ với phương pháp lặp khử đệ quy $O(n)$.
    2. Tháp Hà Nội: Chứng minh hệ thức truy hồi $T(n) = 2T(n-1) + 1 \Rightarrow T(n) = 2^n - 1$, dẫn đến độ phức tạp $O(2^n)$.
    3. Tám con hậu (Eight Queens): Lược sử từ Max Bezzel (1848), Gauss, Franz Nauck (1850) đến Gunther và J. Glaisher; thiết lập điều kiện số học trên bàn cờ $n \times n$ qua đường chéo tổng $(i+j)$ và đường chéo hiệu $(i-j)$; 92 lời giải (12 lời giải đơn vị) và thuật toán đệ quy quay lui $O(n!)$.
    4. Mã đi tuần (Knight's Tour): Không gian 26.064 hành trình đóng, quy về bài toán đường đi Hamilton trên đồ thị thuộc lớp $NP\text{-Complete}$; giải thuật đệ quy quay lui có đánh dấu trạng thái.
    5. Chuyển đổi hệ thập phân sang nhị phân: Đệ quy chia nguyên và lấy phần dư.
    6. Tìm nghiệm xấp xỉ của phương trình $f(x)=0$: Giải thuật chia đôi đệ quy trên đoạn $[a_0, b_0]$ với sai số $\varepsilon$.
  • Chương 3: Một số chiến lược thiết kế thuật toán (Trang 58–106): Phân tích 9 chiến lược thuật toán lớn:

    1. Chiến lược vét cạn (Exhaustive Search): Tìm kiếm tuần tự, bài toán Người bán hàng.
    2. Chiến lược sinh (Generation Strategy): Sinh dãy nhị phân độ dài $n$, liệt kê tập con $k$ phần tử.
    3. Phương pháp tham lam (Greedy Method): Bài toán xếp ba lô (Knapsack), bài toán tô màu đồ thị.
    4. Chiến lược quay lui (Backtracking): Trò chơi Sudoku, bài toán 8 con hậu.
    5. Chiến lược chia để trị (Divide and Conquer): Tìm kiếm nhị phân ($Binary\ Search$), tìm kiếm phần tử cực trị (Min-Max).
    6. Chiến lược quy hoạch động (Dynamic Programming): Bài toán dãy con đơn điệu tăng dài nhất (LIS).
    7. Chiến lược nhánh và cận (Branch and Bound): Bài toán tạo dãy ABC, bài toán Người du lịch (TSP).
    8. Chiến lược ngẫu nhiên (Randomized Algorithms): Tính toán gần đúng, tìm phần tử đa số.
    9. Chiến lược xấp xỉ nhanh (Approximation Algorithms): Thuật toán $\varepsilon$-xấp xỉ tuyệt đối, thuật toán $\varepsilon$-xấp xỉ.
  • Phụ lục A và B (Trang 107–184):

    • Phụ lục A: Hướng dẫn cài đặt, quy ước ký hiệu và thực thi lưu đồ thuật toán trên phần mềm Flowgorithm.
    • Phụ lục B: Cung cấp đáp án và hướng dẫn giải chi tiết cho hệ thống bài tập Chương 1, Chương 2, Chương 3 (vét cạn, sinh, tham lam, đệ quy/quay lui, chia để trị, quy hoạch động, nhánh và cận) và các bài tập nâng cao thuộc kỳ thi Olympic Tin học.

Kiến thức nền tảng được xây dựng

Giáo trình xây dựng hệ thống tri thức dựa trên các nền tảng khoa học:

  • Cơ sở toán học rời rạc và lý thuyết tập hợp: Ứng dụng quy nạp toán học, phép đếm tổ hợp, quan hệ logic, và các cấu trúc ma trận/đồ thị vào mô hình hóa dữ liệu bài toán.
  • Lý thuyết tiệm cận toán học: Thiết lập định nghĩa hình thức cho cận trên tiệm cận $O(g(n))$, cận dưới tiệm cận $\Omega(g(n))$ và cận chặt tiệm cận $\Theta(g(n))$, phục vụ việc đánh giá thời gian chạy của thuật toán độc lập với phần cứng.
  • Lý thuyết độ phức tạp tính toán: Phân định ranh giới giữa bài toán giải được trong thời gian đa thức (Lớp P) và bài toán khó giải thời gian hàm mũ (NP, NP-Hard, NPC) dựa trên cơ sở lý thuyết của Cook, Karp và Ladner.
  • Nguyên lý kiến trúc máy tính và ngăn xếp: Phân tích bản chất của việc thực thi chương trình qua bộ nhớ Call Stack, sự chuyển đổi từ ngôn ngữ bậc cao sang ngôn ngữ máy thông qua phân tích từ vựng và cú pháp.

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical skills): Viết mã giả chuẩn hóa; sử dụng thành thạo phần mềm Flowgorithm để vẽ và chạy mô phỏng lưu đồ thuật toán; cài đặt thuật toán bằng các ngôn ngữ lập trình bậc cao (C/C++, Java, Python, Pascal); thao tác chuyển đổi giải thuật đệ quy sang giải thuật lặp (khử đệ quy).
  • Kỹ năng phân tích (Analytical skills): Phân tích và chứng minh tính dừng, tính đúng đắn của thuật toán; tính toán số lượng phép toán cơ bản trong các trường hợp tốt nhất (Best-case), tồi nhất (Worst-case) và trung bình (Average-case); nhận diện lớp độ phức tạp của bài toán để lựa chọn chiến lược thiết kế thích hợp.
  • Kỹ năng thực hành giải quyết vấn đề (Practical competencies): Áp dụng quy trình 7 bước để giải quyết bài toán tin học; phát hiện và sửa 3 loại lỗi lập trình (lỗi cú pháp, lỗi cài đặt, lỗi thuật toán); kỹ năng thiết kế các bộ dữ liệu kiểm thử (test cases) từ kích thước nhỏ, trường hợp biên đặc biệt đến bộ test tải lớn; vận dụng kỹ thuật tinh chế từng bước (stepwise refinement) để tối ưu hóa chương trình.

Phương pháp giảng dạy và học tập

Giáo trình được thiết kế theo phương pháp tiếp cận sư phạm kết hợp chặt chẽ giữa lý thuyết suy diễn và thực nghiệm mô phỏng. Tiến trình truyền thụ nội dung tuân thủ cấu trúc: Định nghĩa hình thức $\rightarrow$ Mô hình hóa toán học $\rightarrow$ Trực quan hóa bằng lưu đồ $\rightarrow$ Phân tích độ phức tạp $\rightarrow$ Cài đặt mã giả $\rightarrow$ Mở rộng sang bài toán thực tế.

[Khái niệm / Định nghĩa toán học] 
       │
       ▼
[Mô hình hóa Input / Output]
       │
       ▼
[Mô phỏng trực quan bằng Flowgorithm]
       │
       ▼
[Đánh giá tiệm cận & Độ phức tạp (O, Ω, Θ)]
       │
       ▼
[Cài đặt Mã giả (Pseudocode) / Tinh chế từng bước]
       │
       ▼
[Kiểm thử đa tầng (Test Cases) & Tối ưu hóa mã nguồn]

Hệ thống câu hỏi và bài tập trong giáo trình được phân bố đa dạng, bao gồm:

  • Câu hỏi lý thuyết: Tập trung củng cố bản chất các định nghĩa, so sánh ưu nhược điểm giữa các cấu trúc điều khiển, giải thích cơ chế ngăn xếp và phân tích hàm tăng trưởng tiệm cận (như hàm Ackermann, quan hệ truy hồi).
  • Bài tập thực hành tính toán và cài đặt: Hệ thống hơn 75 bài tập cụ thể ở cuối các chương, bao gồm:
    • Bài toán số học và đại số: Tính $n!$, tính tổng chuỗi $S$, tính xấp xỉ số $\pi$ theo chuỗi Leibniz với độ chính xác $\varepsilon$, khai triển chuỗi $e^x$, tìm số Armstrong ($abc = a^3 + b^3 + c^3$), tổ hợp $C_n^k$, công thức Horner tính giá trị đa thức $P(x)$, tìm ước số chung lớn nhất (Euclide).
    • Bài toán xử lý mảng và chuỗi: Kiểm tra tính đối xứng, đảo ngược chuỗi ký tự, đếm từ, trích xuất mã ASCII, kiểm tra mảng tăng/giảm, tách số âm/dương, tìm phần tử bằng trung bình cộng các phần tử còn lại, tìm kiếm nhị phân.
    • Thuật toán sắp xếp: Xây dựng và phân tích độ phức tạp của Selection Sort, Insertion Sort, Bubble Sort.
    • Bài toán tổ hợp và dân gian: Bài toán bốc diêm, bài toán đổi tiền (các mệnh giá 500đ, 200đ, 50đ), bài toán dân gian "Trăm bò trăm cỏ", bài toán Tháp Hà Nội, bài toán 8 con hậu, bài toán Mã đi tuần.
    • Bài tập nâng cao Olympic Tin học: Các bài toán tối ưu hóa tổ hợp phức tạp được phân loại theo từng chiến lược ở Phụ lục B.

Về phương pháp kiểm tra đánh giá, giáo trình hỗ trợ đánh giá người học đa chiều: kiểm tra lý thuyết phân tích độ phức tạp, đánh giá kỹ năng thiết kế sơ đồ khối trên Flowgorithm, và đánh giá tính chính xác của chương trình thông qua hệ thống bộ test đa dạng (bộ test nhỏ làm bằng tay, bộ test giá trị biên đặc biệt và bộ test quy mô lớn).

Đối với hoạt động tự học, tài liệu cung cấp hướng dẫn từng bước: người học xây dựng thuật toán từ mã giả, vẽ và thực thi thử nghiệm trên Flowgorithm theo chỉ dẫn tại Phụ lục A, sau đó đối chiếu lời giải với đáp án chi tiết tại Phụ lục B.


Điểm nổi bật và cập nhật của tài liệu

  1. Chuẩn hóa công cụ mô phỏng trực quan Flowgorithm: Khác với các tài liệu thuần túy lý thuyết toán học, giáo trình dành riêng Phụ lục A và tích hợp xuyên suốt các sơ đồ khối được chuẩn hóa trên môi trường Flowgorithm. Điều này giúp sinh viên quan sát trực quan luồng điều khiển, rẽ nhánh và cơ chế lặp của thuật toán trước khi bước vào giai đoạn viết mã bằng một ngôn ngữ cụ thể.

  2. Hệ thống hóa toàn diện 9 chiến lược thiết kế thuật toán: Giáo trình không dừng lại ở các phương pháp truyền thống (tham lam, chia để trị, quy hoạch động, quay lui, nhánh và cận) mà mở rộng bao quát cả các chiến lược thuật toán hiện đại gồm:

    • Chiến lược ngẫu nhiên (Randomized Algorithms): Giải quyết các bài toán tính gần đúng và tìm phần tử đa số.
    • Chiến lược xấp xỉ nhanh (Approximation Algorithms): Bao gồm thuật toán $\varepsilon$-xấp xỉ tuyệt đối và thuật toán $\varepsilon$-xấp xỉ, cung cấp giải pháp khả thi cho các bài toán thuộc lớp NP-Hard trong thực tế.
  3. Tính chính xác về lịch sử và cơ sở toán học hình thức: Nội dung giáo trình trích dẫn và liên kết chặt chẽ với các công trình khoa học kinh điển:

    • Phân loại bài toán của Pitago.
    • 5 tiêu chuẩn thuật toán của Donald Knuth.
    • Chứng minh về lớp bài toán NP-Hard của Stephen Cook và Richard Karp (1971).
    • Định lý Ladner (1975) về sự tồn tại của lớp bài toán trung gian $NPI$.
    • Lịch sử phát triển bài toán 8 quân hậu từ Max Bezzel (1848), Gauss, Franz Nauck (1850) đến Gunther và J. Glaisher.
  4. Quy trình kỹ thuật phần mềm 7 bước gắn liền với thực tiễn: Tài liệu đưa ra quy trình chuẩn hóa gồm 7 giai đoạn giải bài toán trên máy tính, phân loại chi tiết 3 nhóm lỗi lập trình (cú pháp, cài đặt, thuật toán) và hướng dẫn phương pháp tinh chế từng bước (Stepwise Refinement), giúp người học hình thành phương pháp luận lập trình có cấu trúc thay vì viết mã ngẫu nhiên.


Đối tượng sử dụng giáo trình

  • Sinh viên đại học: Tài liệu được biên soạn phục vụ trực tiếp cho sinh viên năm thứ nhất và năm thứ hai thuộc các ngành:
    • Khoa học Máy tính
    • Kỹ thuật Phần mềm
    • Công nghệ Thông tin
    • Hệ thống Thông tin
    • Toán - Tin học ứng dụng
  • Yêu cầu kiến thức tiên quyết (Prerequisites): Người học cần hoàn thành các học phần Toán rời rạc (nắm vững lý thuyết tập hợp, giải tích tổ hợp, logic mệnh đề và phương pháp quy nạp toán học) cùng học phần Cơ sở lập trình/Nhập môn lập trình (hiểu các cấu trúc dữ liệu cơ bản như mảng, chuỗi, và cú pháp của một ngôn ngữ bậc cao như C, C++, Pascal, Java hoặc Python).
  • Giảng viên chuyên ngành: Tài liệu đóng vai trò làm khung chương trình chuẩn để xây dựng đề cương chi tiết học phần Thuật toán và Cấu trúc dữ liệu, Thiết kế và Phân tích Thuật toán, cung cấp ngân hàng ví dụ mẫu và hệ thống bài tập thực hành phân cấp.
  • Người tự học và thí sinh thi học sinh giỏi, Olympic: Là tài liệu tham khảo cho việc tự ôn tập, bồi dưỡng kiến thức thuật toán chuyên sâu, chuẩn bị cho các kỳ thi Olympic Tin học sinh viên và các kỳ thi lập trình học thuật nhờ hệ thống bài tập phân loại tại Phụ lục B.

Câu hỏi thường gặp

1. Giáo trình này phù hợp nhất với những ai?

Giáo trình được thiết kế cho sinh viên năm 1 và năm 2 khối ngành Công nghệ Thông tin, Khoa học Máy tính, Kỹ thuật Phần mềm, Toán - Tin, cũng như giảng viên giảng dạy học phần Thiết kế và Phân tích Thuật toán và sinh viên ôn luyện đội tuyển Olympic Tin học.

2. Người học cần trang bị kiến thức nền tảng nào trước khi tiếp cận tài liệu?

Người học cần có kiến thức cơ sở về Toán rời rạc (phép chứng minh quy nạp, đại số logic, tổ hợp cơ bản) và kỹ năng lập trình cơ bản trên một ngôn ngữ bậc cao (như C, C++, Java, Pascal hoặc Python) để hiểu mã giả và thực hiện cài đặt chương trình.

3. Điểm khác biệt của giáo trình này so với các tài liệu thuật toán thông thường là gì?

Tài liệu kết hợp song song giữa phân tích độ phức tạp hình thức toán học ($O, \Omega, \Theta$, phân lớp P/NP) và công cụ trực quan hóa lưu đồ Flowgorithm; đồng thời bao quát đầy đủ 9 chiến lược thuật toán (bao gồm cả thuật toán ngẫu nhiên và thuật toán xấp xỉ nhanh) và tích hợp hệ thống bài tập Olympic Tin học có lời giải.

4. Phương pháp tự học giáo trình như thế nào để đạt hiệu quả cao?

Người học nên tuân thủ tiến trình 4 bước:

  1. Đọc và nắm vững cơ sở lý thuyết, đặc biệt là các công thức đánh giá độ phức tạp và điều kiện dừng/neo.
  2. Vẽ và chạy thử nghiệm từng bước các thuật toán cơ sở trên phần mềm Flowgorithm (theo Phụ lục A).
  3. Tự cài đặt các thuật toán bằng mã giả hoặc một ngôn ngữ lập trình cụ thể dựa trên phương pháp tinh chế từng bước.
  4. Giải hệ thống bài tập cuối chương và đối chiếu phương pháp tối ưu tại Phụ lục B.

5. Giáo trình có tài liệu bổ trợ và lời giải bài tập kèm theo không?

Có. Giáo trình tích hợp trọn vẹn Phụ lục A (hướng dẫn chi tiết cài đặt và sử dụng phần mềm Flowgorithm) và Phụ lục B (cung cấp đáp án, thuật giải chi tiết cho toàn bộ bài tập Chương 1, Chương 2, Chương 3 và phần bài tập nâng cao Olympic Tin học).


Kết luận

Giáo trình Thuật toán và phân tích thuật toán là tài liệu học thuật hoàn chỉnh, cung cấp nền tảng lý thuyết tính toán vững chắc kết hợp phương pháp luận thiết kế thuật toán có hệ thống. Thông qua việc phân tích chuyên sâu các lớp độ phức tạp, cơ chế đệ quy/ngăn xếp và 9 chiến lược thiết kế giải thuật cốt lõi, tài liệu thiết lập lộ trình học tập logic: đi từ nguyên lý cơ bản $\rightarrow$ trực quan hóa lưu đồ trên Flowgorithm $\rightarrow$ cài đặt và kiểm thử chương trình $\rightarrow$ giải quyết các bài toán tối ưu hóa nâng cao. Cùng với hệ thống đáp án chi tiết và ngân hàng bài tập Olympic Tin học tại phần phụ lục, giáo trình là nguồn tài liệu chuẩn mực phục vụ hiệu quả cho công tác đào tạo đại học và nghiên cứu khoa học máy tính.