Nền tảng
11 bài lý thuyết, không code. Đọc theo thứ tự dưới đây. Mỗi thử thách đều ghi rõ cần ôn bài nào.
- 01
Ký hiệu Big-O và các lớp tăng trưởng
Nguồn gốc ký hiệu Bachmann, định nghĩa chặn trên, chặn khít và chặn lỏng, các quy tắc rút gọn và bốn lớp tăng trưởng nền tảng.
~45 phút đọc
- 02
Độ phức tạp thời gian và không gian
Hai trục phân tích độ phức tạp, ba kịch bản best-worst-average, ba kiểu vòng lặp hội tụ-phân kỳ-phẳng và nguyên tắc ước lượng chi phí.
~45 phút đọc
- 03
Mô hình RAM và chi phí tính toán
Các giả định của mô hình RAM, cách đếm bước trừu tượng, bậc tăng trưởng và ý nghĩa của việc bỏ qua hằng số.
~40 phút đọc
- 04
Thuật toán và môi trường phát triển
Định nghĩa thuật toán, các pha phát triển và triển khai, yêu cầu chức năng và phi chức năng, môi trường học tập và môi trường vận hành.
~45 phút đọc
- 05
Chiều dữ liệu và chiều tính toán
Ba họ thuật toán theo đặc trưng bài toán, mô hình 3V của dữ liệu, chiều tính toán và logic chọn thuật toán phù hợp.
~40 phút đọc
- 06
Thiết kế và kiểm chứng thuật toán
Ba mối quan tâm thiết kế, phân biệt exact-approximate-randomized, kiểm chứng bằng độ đo và tính giải thích được của thuật toán.
~45 phút đọc
- 07
P, NP và độ khó bài toán
Thuật toán đa thức, chứng chỉ, quan hệ P là tập con của NP, NP-complete, NP-hard và chiến lược ứng phó với bài toán khó.
~40 phút đọc
- 08
Đệ quy: tư duy và cái giá
Đệ quy đơn giản, điều kiện dừng, cạm bẫy tính lại, ghi nhớ kết quả, đệ quy đuôi và đệ quy tương hỗ ở mức lý thuyết và trace bằng lời.
~40 phút đọc
- 09
Giải thuật ngẫu nhiên và độ chính xác
Bài toán quyết định, Las Vegas và Monte Carlo, ba độ đo accuracy-precision-recall và quan hệ đánh đổi giữa chúng.
~40 phút đọc
- 10
Nguyên lý thiết kế hướng đối tượng
Chín nguyên lý thiết kế phần mềm, SOLID, quan hệ HAS-A và IS-A cùng tư duy ghép lỏng.
~45 phút đọc
- 11
Nhập môn design patterns
Mẫu thiết kế là gì, từ vựng chung, cấu trúc của một mẫu, cách học và dùng mẫu đúng, cùng siêu nhận thức về học tập.
~40 phút đọc