🗓️ Tuần 1 – Tư Duy Thuật Toán & Độ Phức Tạp
🧑🏫 Buổi 1: Giới thiệu lập trình & tư duy giải bài toán
🎯 Mục tiêu:
-
Hiểu lập trình và thuật toán là gì
-
Làm quen quy trình giải quyết vấn đề: Input → Process → Output
📚 Nội dung:
-
Lý thuyết: khái niệm thuật toán, ví dụ thực tế
-
Biểu diễn thuật toán bằng lời, bằng code
🧠 Bài tập thực hành:
-
Viết thuật toán tính tổng từ 1 đến n (3 cách khác nhau)
🏠 Bài tập về nhà: Viết 3 bài toán thực tế và mô tả thuật toán giải quyết
🧑🏫 Buổi 2: Big-O và phân tích hiệu suất
🎯 Mục tiêu:
-
Hiểu Big O Notation
-
So sánh thuật toán tốt/xấu
📚 Nội dung:
-
Giới thiệu O(1), O(n), O(n²), O(log n)
-
Ví dụ thực tế: tìm phần tử trong mảng
🧠 Bài tập:
-
So sánh thời gian chạy giữa vòng lặp đơn và lồng nhau
🏠 Bài tập về nhà: Tự phân tích độ phức tạp của 3 thuật toán đã viết ở buổi trước
🗓️ Tuần 2 – Đệ Quy
🧑🏫 Buổi 3: Khái niệm đệ quy và stack lời gọi
🎯 Mục tiêu: Hiểu nguyên lý hoạt động của đệ quy
📚 Nội dung:
-
Giải thích stack gọi hàm
-
Cấu trúc hàm đệ quy: base case, recursive step
🧠 Bài tập:
-
Viết hàm tính giai thừa factorial(n)
-
Viết hàm tính tổng 1→n bằng đệ quy
🏠 Bài tập: Viết hàm tính dãy Fibonacci
🧑🏫 Buổi 4: Ứng dụng đệ quy
🎯 Mục tiêu: Sử dụng đệ quy giải bài toán thực tế
📚 Nội dung:
-
Đệ quy đảo chuỗi
-
Đệ quy tìm phần tử trong mảng
🧠 Bài tập:
-
Viết hàm đệ quy đảo ngược chuỗi
-
Viết hàm tìm tổng phần tử trong mảng
🏠 Bài tập: Viết hàm kiểm tra chuỗi đối xứng bằng đệ quy
🗓️ Tuần 3 – Mảng (Array)
🧑🏫 Buổi 5: Cấu trúc mảng và thao tác cơ bản
🎯 Mục tiêu: Nắm cách khai báo và xử lý mảng
📚 Nội dung:
-
Tạo mảng, truy cập phần tử
-
Các hàm push, pop, shift, unshift
🧠 Bài tập:
-
Tạo mảng điểm học sinh, tính tổng, trung bình
🏠 Bài tập: Viết chương trình tìm min/max trong mảng
🧑🏫 Buổi 6: Duyệt mảng & hàm mảng nâng cao
🎯 Mục tiêu: Biết sử dụng hàm hiện đại
📚 Nội dung:
-
map, filter, reduce, forEach
-
Bài toán Two Sum
🧠 Bài tập:
-
Lọc ra số chẵn, tính tổng số lẻ
🏠 Bài tập: Viết hàm nhân đôi mọi phần tử trong mảng
🗓️ Tuần 4 – Linked List
🧑🏫 Buổi 7: Khái niệm và cấu trúc
🎯 Mục tiêu: Hiểu khái niệm Node và con trỏ
📚 Nội dung:
-
Node {value, next}, cách tạo danh sách
🧠 Bài tập:
-
Tạo danh sách gồm 3 phần tử
🏠 Bài tập: Viết hàm duyệt và in danh sách
🧑🏫 Buổi 8: Thao tác trên Linked List
🎯 Mục tiêu: Biết thêm, xóa, đảo ngược danh sách
📚 Nội dung:
-
Thêm node vào đầu/cuối
-
Xóa node theo giá trị
-
Đảo ngược danh sách
🧠 Bài tập: Viết hàm thêm node cuối và đảo ngược danh sách
🏠 Bài tập: Tạo danh sách tên học sinh và xóa tên cụ thể
🗓️ Tuần 5 – Stack & Queue
🧑🏫 Buổi 9: Stack – LIFO
🎯 Mục tiêu: Hiểu cơ chế LIFO
📚 Nội dung:
-
Cài đặt stack bằng mảng
-
Ứng dụng kiểm tra ngoặc đúng
🧠 Bài tập:
-
Viết chương trình kiểm tra chuỗi ngoặc
🏠 Bài tập: Tạo stack lưu lịch sử thao tác
🧑🏫 Buổi 10: Queue – FIFO
🎯 Mục tiêu: Hiểu cơ chế FIFO
📚 Nội dung:
-
Cài đặt queue bằng mảng
-
Ứng dụng: mô phỏng hàng chờ
🧠 Bài tập:
-
Viết queue mô phỏng xếp hàng
🏠 Bài tập: Thêm chức năng đếm thời gian phục vụ
🗓️ Tuần 6 – String Algorithms
🧑🏫 Buổi 11: Xử lý chuỗi
🎯 Mục tiêu: Làm quen với thao tác chuỗi
📚 Nội dung:
-
Các hàm: length, split, replace, toUpperCase
🧠 Bài tập:
-
Đếm số ký tự trong tên
🏠 Bài tập: Viết hàm chuẩn hóa tên: “ nGuyEn vAn a” → “Nguyen Van A”
🧑🏫 Buổi 12: Bài toán chuỗi
🎯 Mục tiêu: Ứng dụng xử lý chuỗi nâng cao
📚 Nội dung:
-
Kiểm tra chuỗi đối xứng
-
Đếm số từ
🧠 Bài tập:
-
Kiểm tra palindrome
🏠 Bài tập: Đếm số lần xuất hiện của một ký tự trong chuỗi
🗓️ Tuần 7 – Tree
🧑🏫 Buổi 13: Cấu trúc cây
🎯 Mục tiêu: Hiểu cấu trúc phân cấp
📚 Nội dung:
-
Node, Parent, Child
-
Binary Tree
🧠 Bài tập:
-
Tạo cây đơn giản và duyệt preorder
🏠 Bài tập: Vẽ sơ đồ cây học sinh – lớp – trường
🧑🏫 Buổi 14: Binary Search Tree
🎯 Mục tiêu: Biết thao tác với BST
📚 Nội dung:
-
Chèn node, tìm kiếm node
-
Duyệt inorder
🧠 Bài tập:
-
Tạo BST từ mảng
🏠 Bài tập: Viết hàm tìm node lớn nhất/nhỏ nhất
🗓️ Tuần 8 – Graph
🧑🏫 Buổi 15: Đồ thị & biểu diễn
🎯 Mục tiêu: Hiểu cấu trúc quan hệ
📚 Nội dung:
-
Biểu diễn bằng danh sách kề
-
Khái niệm cạnh, đỉnh
🧠 Bài tập:
-
Mô phỏng mạng bạn bè
🏠 Bài tập: Đếm số kết nối
🧑🏫 Buổi 16: Duyệt đồ thị
🎯 Mục tiêu: Làm quen BFS & DFS
📚 Nội dung:
-
Cách hoạt động BFS, DFS
🧠 Bài tập:
-
Duyệt đồ thị bằng BFS
🏠 Bài tập: Viết chương trình kiểm tra đồ thị có liên thông
🗓️ Tuần 9 – Sorting & Searching
🧑🏫 Buổi 17: Sắp xếp
🎯 Mục tiêu: Hiểu cách tổ chức dữ liệu
📚 Nội dung:
-
Bubble, Selection, Insertion
🧠 Bài tập:
-
Cài đặt 3 thuật toán
🏠 Bài tập: So sánh hiệu suất giữa Bubble và Insertion
🧑🏫 Buổi 18: Tìm kiếm
🎯 Mục tiêu: Tìm dữ liệu nhanh hơn
📚 Nội dung:
-
Linear Search
-
Binary Search
🧠 Bài tập:
-
Tìm tên trong danh sách
🏠 Bài tập: Ứng dụng tìm kiếm điểm học sinh
🗓️ Tuần 10 – Ôn tập & Dự án cuối khóa
🧑🏫 Buổi 19: Ôn tập tổng hợp
🎯 Mục tiêu: Hệ thống kiến thức
📚 Nội dung:
-
Ôn tập Array, Stack, Queue, Tree
-
Giải bài tập tổng hợp
🧠 Bài tập:
-
Quản lý danh sách học sinh (thêm, xóa, sắp xếp)
🧑🏫 Buổi 20: Trình bày dự án
🎯 Mục tiêu: Ứng dụng toàn bộ kiến thức
📚 Dự án:
-
Quản lý học sinh
-
Ứng dụng Stack kiểm tra ngoặc
-
Ứng dụng BFS tìm đường đi
🎓 Đánh giá:
-
Logic code
-
Cách trình bày
-
Hiệu suất thuật toán