Học phần: Khung Tổng Quan Khóa Học

Cấu trúc khóa học

Cấu trúc khóa học

Chương 1: Nền Tảng Phân Tích Thuật Toán (Algorithm Analysis)

  • Bài 1.1: Tại sao cần Cấu trúc dữ liệu & Giải thuật? (Bài toán tối ưu bộ nhớ và thời gian).

  • Bài 1.2: Độ phức tạp thời gian (Time Complexity) & Độ phức tạp bộ nhớ (Space Complexity).

  • Bài 1.3: Ký hiệu Big-O ($O$), Big-Omega ($\Omega$), Big-Theta ($\Theta$) – Mối liên hệ với giới hạn hàm số và tăng trưởng đại số.

  • Bài 1.4: Phân tích vòng lặp, câu lệnh điều kiện và thuật toán đệ quy.

  • Sản phẩm/Bài tập: Phân tích độ phức tạp Big-O cho 5 đoạn mã Python thực tế.

Chương 2: Cấu Trúc Dữ Liệu Tuyến Tính Cơ Bản (Linear Data Structures)

  • Bài 2.1: Mảng (Array) & Mảng động (Dynamic Array / Python List).

  • Bài 2.2: Danh sách liên kết đơn (Singly Linked List) & Danh sách liên kết đôi (Doubly Linked List).

  • Bài 2.3: Ngăn xếp (Stack - LIFO) & Hàng đợi (Queue - FIFO).

  • Bài 2.4: Ứng dụng thực tế: Khôi phục thao tác (Undo/Redo), kiểm tra chuỗi ngoặc hợp lệ bằng Stack.

  • Sản phẩm/Bài tập: Tự cài đặt một LinkedList và Stack bằng class trong Python từ con số 0.

Chương 3: Thuật Toán Tìm Kiếm & Sắp Xếp (Searching & Sorting)

  • Bài 3.1: Tìm kiếm tuyến tính (Linear Search) vs Tìm kiếm nhị phân (Binary Search).

  • Bài 3.2: Nguyên lý "Chia để trị" (Divide and Conquer) trong Binary Search.

  • Bài 3.3: Các thuật toán sắp xếp cơ bản: Bubble Sort, Selection Sort, Insertion Sort ($O(n^2)$).

  • Bài 3.4: Các thuật toán sắp xếp nâng cao: Merge Sort, Quick Sort ($O(n \log n)$).

  • Sản phẩm/Bài tập: Cài đặt Merge Sort và so sánh thời gian chạy thực tế với Quick Sort trên mảng 100.000 phần tử.

Chương 4: Bảng Băm & Cấu Trúc Ánh Xạ (Hash Tables & Dictionaries)

  • Bài 4.1: Nguyên lý Bảng băm (Hash Table) & Hàm băm (Hash Function).

  • Bài 4.2: Xử lý đụng độ (Collision Resolution): Chaining (Danh sách liên kết) vs Open Addressing.

  • Bài 4.3: Ứng dụng Bảng băm để đạt độ phức tạp tìm kiếm $O(1)$.

  • Sản phẩm/Bài tập: Giải bài toán kinh điển Two Sum trên LeetCode với độ phức tạp $O(n)$ bằng Hash Table.

Chương 5: Cấu Trúc Dữ Liệu Dạng Cây (Tree Data Structures)

  • Bài 5.1: Định nghĩa Cây, Đỉnh (Node), Cạnh (Edge), Cây nhị phân (Binary Tree).

  • Bài 5.2: Cây tìm kiếm nhị phân (Binary Search Tree - BST): Quy tắc Trái < Gốc < Phải.

  • Bài 5.3: Các phép duyệt cây (Tree Traversals): In-order, Pre-order, Post-order, Level-order (BFS).

  • Bài 5.4: Giới thiệu Cây cân bằng (AVL Tree, Red-Black Tree) & Hàng đợi ưu tiên (Heap / Priority Queue).

  • Sản phẩm/Bài tập: Xây dựng một cây BST lưu trữ danh sách mã sản phẩm và viết hàm tìm kiếm nhanh.

Chương 6: Cấu Trúc Đồ Thị & Giải Thuật Duyệt Đồ Thị (Graph Theory & Algorithms)

  • Bài 6.1: Biểu diễn đồ thị trong máy tính: Ma trận kề (Adjacency Matrix) vs Danh sách kề (Adjacency List).

  • Bài 6.2: Thuật toán duyệt theo chiều rộng (Breadth-First Search - BFS) & Ứng dụng tìm đường đi ngắn nhất.

  • Bài 6.3: Thuật toán duyệt theo chiều sâu (Depth-First Search - DFS) & Ứng dụng phát hiện chu trình.

  • Bài 6.4: Thuật toán Dijkstra tìm đường đi ngắn nhất trên đồ thị có trọng số.

  • Sản phẩm/Bài tập: Lập trình thuật toán mô phỏng mạng lưới giao hàng giữa các kho bãi.

Chương 7: Đệ Quy & Quy Hoạch Động (Recursion & Dynamic Programming)

  • Bài 7.1: Tư duy Đệ quy (Base case & Recursive step) & Ngăn xếp gọi hàm (Call Stack).

  • Bài 7.2: Hiện tượng tính toán trùng lặp & Kỹ thuật Ghi nhớ (Memoization - Top-down).

  • Bài 7.3: Quy hoạch động (Dynamic Programming - Bottom-up): Dựng bảng phương án.

  • Bài 7.4: Các bài toán DP kinh điển: Dãy Fibonacci, Bài toán cái túi (Knapsack Problem).

  • Sản phẩm/Bài tập: Giải bài toán Cái túi (0/1 Knapsack) bằng cả hai cách: Đệ quy nhớ và Bảng quy hoạch động.

Chương 8: Ôn Tập & Thực Hành (Design & Practice)

  • Bài 8.1: Phương pháp tư duy 5 bước khi gặp bài toán DSA mới.

  • Bài 8.2: Thiết kế cấu trúc dữ liệu tùy chỉnh (ví dụ: LRU Cache).