Dự án cuối 1: đặc tả và chia module

Khởi động dự án cuối khóa: chốt đề tài, viết đặc tả yêu cầu, chia module và hợp đồng giao tiếp giữa các nhóm.
Chuyên giaThuật toán ~120 phút

Ôn lại trước khi học

Giới thiệu

Bạn khởi động dự án cuối khóa. Viết rõ trước khi code.

Kiến thức cần nhớ

Chốt đề tài

  • Đề tài dùng ít nhất 3 kỹ thuật đã học.
  • Có dữ liệu thật hoặc giả lập thực tế.
  • Ví dụ đời thường: giống chọn món nấu được trong 4 ngày.
  • Demo được trong 10 phút.

Đặc tả yêu cầu

  • Yêu cầu hàm là hệ thống làm gì.
  • Yêu cầu phi hàm là nhanh và chịu tải bao nhiêu.
  • Ví dụ đời thường: giống đơn đặt hàng ghi món và giờ giao.
  • Mỗi yêu cầu có mã số để truy vết.

Chia module và kế hoạch

  • Chia thành module nhỏ có sơ đồ phụ thuộc.
  • Hợp đồng ghi rõ request và response mỗi cặp.
  • Ví dụ đời thường: giống chia việc bếp theo món.
  • Lập mốc kiểm chứng cho 3 ngày còn lại.
# ví dụ hợp đồng giữa hai module
hop_dong = {  # thỏa thuận giao tiếp
    "gui": {"user": "u1"},  # bên gửi tạo đúng
    "nhan": {"top10": []},  # bên nhận trả đúng
}

Ví dụ

  • 3 yêu cầu hàm -> mỗi yêu cầu truy tới module và ngày kiểm chứng.
  • Hai module kề nhau -> request mẫu đi qua cả hai phía đúng.

💻 Bài tập

Dự án cuối kéo dài 4 ngày (167-170). Hôm nay chỉ viết đặc tả và dựng khung. Nộp vào repo riêng final-project/.

Bài 1: Chọn đề và đặc tả

Đề tài phải dùng ít nhất 3 kỹ thuật đã học (ví dụ: trie + cache + rate limiter; đồ thị + heap + SA; recsys + MapReduce + stream). Gợi ý: công cụ tìm tài liệu nội bộ, hệ gợi ý bài tập, bản đồ giao hàng, chat có kiểm duyệt.

SPEC.md gồm:

MụcNội dung
Vấn đề3-5 câu, ai dùng, vì sao cần
Yêu cầu chức năngĐánh mã F1, F2..., mỗi cái kiểm chứng được
Yêu cầu phi chức năngĐánh mã N1, N2... với con số: độ trễ p95, thông lượng, bộ nhớ, kích thước dữ liệu
Ngoài phạm viNhững gì không làm
Dữ liệuNguồn, kích thước, cách sinh nếu giả lập
Tiêu chí demoKịch bản demo 10 phút

Bài 2: Kiến trúc và hợp đồng

  1. ARCHITECTURE.md: sơ đồ module (Mermaid), mỗi module 1 trách nhiệm, sơ đồ phụ thuộc không có vòng.
  2. Hợp đồng giữa các module: chữ ký hàm hoặc định dạng request/response, kèm ví dụ.
  3. Bảng truy vết: yêu cầu nào do module nào đảm nhận.

Bài 3: Khung dự án (nâng cao)

  1. Repo có cấu trúc thư mục theo module, build 1 lệnh, test 1 lệnh (dù chưa có test thật).
  2. CI chạy build và test mỗi lần push.
  3. Mỗi module có 1 test "khói" gọi hàm giả (stub) trả dữ liệu cố định.
  4. PLAN.md: mốc cho ngày 168, 169, 170, và rủi ro lớn nhất cùng cách giảm.

✅ Tiêu chí hoàn thành

  • SPEC.md đủ 6 mục, yêu cầu phi chức năng có con số.
  • ARCHITECTURE.md có sơ đồ và bảng truy vết.
  • Repo build và test 1 lệnh, CI xanh.
  • PLAN.md có mốc và rủi ro.

❓ Câu hỏi ôn tập

  1. Đề tài cần thỏa mấy điều kiện?
  2. Yêu cầu hàm khác phi hàm ở đâu?
  3. Hợp đồng module ghi gì?
  4. Vì sao cấm code sản phẩm hôm nay?

🌕 Bạn đã hoàn thành ngày 167. Làm hết bài tập phía trên rồi sang ngày tiếp theo.

Bớt paste mù, hiểu sâu từng dòng mình viết.

180 Days Challenge. 180 ngày cai nghiện vibe code.