Bỏ qua điều hướng, tới nội dung chính
Học C

Mục lục khóa học

Khóa học gồm 22 phần và 59 chương, chia theo 8 cấp độ. Các phần chưa mở sẽ được bổ sung dần. Bạn nên học tuần tự vì mỗi phần đều dựa trên phần trước.

Phần 0Level 14 bài

Làm quen với lập trình và ngôn ngữ C

Hiểu C là gì, cài được môi trường, biết chương trình biến thành file chạy như thế nào, và viết được chương trình đầu tiên.

Phần 1Level 124 bài

Cơ sở ngôn ngữ

Nắm cú pháp cơ bản, kiểu dữ liệu, nhập xuất, toán tử và rẽ nhánh.

Chương 3. Input / Output

printf, xâu định dạng, scanf, fgets và các lỗi nhập liệu thường gặp.

Chương 4. Toán tử

Số học, so sánh, logic, gán, tăng giảm và độ ưu tiên.

Chương 5. Cấu trúc điều khiển

if, else if, switch, break, continue, toán tử ba ngôi.

Phần 2Level 212 bài

Vòng lặp và tư duy thuật toán

Thành thạo ba loại vòng lặp và biết cách nghĩ ra thuật toán trước khi viết code.

Chương 6. Loop

while, do while, for, vòng lặp lồng nhau, điều khiển vòng lặp.

Chương 7. Tư duy giải thuật

Quy trình giải bài toán, mã giả, lưu đồ, độ phức tạp Big-O.

Phần 3Level 210 bài

Hàm

Chia chương trình thành hàm, hiểu khung ngăn xếp, nắm đệ quy.

Phần 4Level 224 bài

Array và String

Thành thạo mảng một và hai chiều, hiểu chuỗi C là mảng ký tự kết thúc bằng ký tự null.

Chương 9. Mảng một chiều

Khai báo, duyệt, tìm kiếm, min max, sắp xếp cơ bản.

Chương 10. Mảng hai chiều

Ma trận, cộng, nhân, chuyển vị, đường chéo.

Chương 11. String

Ký tự kết thúc chuỗi, thư viện string.h và tự cài lại các hàm.

Phần 5Level 316 bài

Pointer

Bước chuyển quan trọng nhất của C. Hiểu bộ nhớ, địa chỉ, con trỏ và con trỏ hàm.

Chương 12. Pointer cơ bản

Bộ nhớ, địa chỉ, giải tham chiếu, con trỏ với hàm và mảng.

Chương 13. Pointer nâng cao

Con trỏ tới con trỏ, mảng con trỏ, con trỏ hàm, callback, void*, const.

Phần 6Level 413 bài

Memory Management

Hiểu bản đồ bộ nhớ tiến trình, dùng đúng malloc và free, nhận diện bốn loại lỗi bộ nhớ.

Chương 14. Bộ nhớ

Stack, heap, vùng tĩnh, malloc, calloc, realloc, free và các lỗi kinh điển.

Phần 7Level 413 bài

Struct / Union / Enum

Gom dữ liệu thành kiểu mới, hiểu padding và alignment.

Chương 15. Struct

Khai báo, typedef, con trỏ struct, struct lồng nhau, cấp phát động.

Phần 8Level 412 bài

File và dữ liệu

Đọc ghi file văn bản và nhị phân, làm được ứng dụng có dữ liệu bền vững.

Chương 18. File I/O

Luồng và bộ đệm, mở đóng file, văn bản và nhị phân, truy cập ngẫu nhiên, định dạng tệp tự thiết kế, ghi an toàn.

Phần 9Level 413 bài

Preprocessor và tổ chức project

Hết viết tất cả trong một file. Chia dự án nhiều file và dùng preprocessor đúng cách.

Chương 19. Preprocessor

include, define, macro, biên dịch có điều kiện, header guard.

Chương 20. Multi-file project

Chia .c và .h, khai báo và định nghĩa, extern, static, liên kết.

Phần 10Level 528 bài

Data Structures

Tự cài các cấu trúc dữ liệu nền tảng bằng con trỏ và cấp phát động.

Chương 21. Linked List

Danh sách đơn, đôi, vòng. Thêm, xóa, tìm, đảo ngược.

Chương 24. Tree

Cây nhị phân, bốn kiểu duyệt, cây tìm kiếm nhị phân, AVL.

Phần 11Level 517 bài

Algorithms

Cài và phân tích các thuật toán nền tảng, biết chọn đúng thuật toán.

Chương 27. Sorting

Tám thuật toán sắp xếp, so sánh và cách chọn.

Chương 28. Algorithm nâng cao

Chia để trị, tham lam, quy hoạch động, quay lui, đồ thị.

Phần 12Level 621 bài

C nâng cao

Con trỏ hàm ở tầng thiết kế, lập trình tổng quát, thao tác bit và các từ khóa quyết định.

Chương 29. Function Pointer

Callback, bảng điều phối, máy trạng thái, mô phỏng đa hình, closure.

Chương 31. Bit Manipulation

Toán tử bit, set, clear, toggle, bitmask, thao tác thanh ghi.

Phần 13Level 620 bài

Undefined Behavior và C chuyên sâu

Phân biệt lập trình viên C nghiệp dư với chuyên nghiệp.

Chương 33. Undefined Behavior

UB, unspecified, implementation-defined, strict aliasing.

Chương 34. Memory Debugging

Valgrind, AddressSanitizer, UndefinedBehaviorSanitizer.

Chương 35. GDB

Điểm dừng, bước chạy, xem bộ nhớ, watchpoint, backtrace.

Phần 14Level 611 bài

Build System

Tự động hóa build, phân biệt debug và release, tích hợp kiểm thử.

Phần 15Level 612 bài

Static Library / Dynamic Library

Đóng gói mã thành thư viện dùng lại được, hiểu liên kết và ABI.

Chương 39. Library

Thư viện tĩnh, thư viện động, ký hiệu, ABI và hệ thống plugin.

Phần 16Level 721 bài

Linux System Programming

Nói chuyện trực tiếp với hệ điều hành.

Phần 17Level 710 bài

Network Programming bằng C

Viết được server và client TCP, UDP, hiểu socket API.

Phần 18Level 721 bài

Embedded C

Nhánh chuyên sâu cho STM32, ESP32 và các vi điều khiển.

Chương 47. Embedded C

Kiến trúc MCU, thanh ghi, GPIO, UART, SPI, I2C, ADC, PWM, DMA.

Phần 19Level 720 bài

C nâng cao nhất

Đọc được chuẩn C, hiểu mô hình bộ nhớ ở tầng chuẩn, làm chủ preprocessor và lập trình tổng quát.

Phần 20Level 716 bài

Software Engineering với C

Viết mã người khác đọc được, kiểm thử được, phân tích được và an toàn.

Phần 21Level 88 bài

Project tổng kết

Tám dự án theo cấp độ tăng dần, từ máy tính bỏ túi đến mini RTOS.