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 4sắp có

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

fopen, fclose, fprintf, fscanf, fread, fwrite, fseek, ftell.

Phần 9Level 4sắp có

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 5sắp có

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 22. Stack

Cài bằng mảng và bằng danh sách liên kết, ứng dụng tính biểu thức.

Chương 23. Queue

Hàng đợi, hàng đợi vòng, deque, hàng đợi ưu tiên.

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.

Chương 25. Hash Table

Hàm băm, va chạm, chaining, open addressing, rehash.

Phần 11Level 5sắp có

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 26. Searching

Tìm tuyến tính, tìm nhị phân và độ phức tạp.

Chương 27. Sorting

Sáu 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 6sắp có

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 30. Generic Programming

void*, generic swap, container tổng quát, qsort, bsearch, _Generic.

Chương 31. Bit Manipulation

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

Chương 32. volatile, const, restrict

Ba từ khóa quyết định khi làm hệ thống và hệ nhúng.

Phần 13Level 6sắp có

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 6sắp có

Build System

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

Chương 36. GCC chuyên sâu

Các nhóm cờ cảnh báo, tối ưu, gỡ lỗi, sanitizer, gia cố bảo mật.

Chương 37. Makefile

Mục tiêu, phụ thuộc, biến, quy tắc ngầm, theo dõi header tự động.

Chương 38. CMake

CMakeLists, target, thư viện, build type, testing.

Phần 15Level 6sắp có

Static và Dynamic Library

Đóng gói code thành thư viện dùng lại được, hiểu linking và ABI.

Chương 39. Library

Thư viện tĩnh, thư viện động, symbol, ABI, dlopen.

Phần 16Level 7sắp có

Linux System Programming

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

Chương 40. Linux Process

PID, fork, exec, wait, zombie và orphan.

Chương 41. File Descriptor

open, read, write, close, dup2 và chuyển hướng.

Chương 42. System Call

Ranh giới user space và kernel, errno, strace, mmap.

Chương 43. Pipe

Pipe, named pipe, giao tiếp giữa các tiến trình.

Chương 44. Signal

SIGINT, SIGTERM, sigaction và quy tắc viết handler.

Chương 45. Thread

pthread, mutex, đua dữ liệu, deadlock, biến điều kiện.

Phần 17Level 7sắp có

Network Programming

Viết được server và client TCP, UDP.

Chương 46. Socket

TCP/IP, socket API, server, client, UDP, select và epoll.

Phần 18Level 7sắp có

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.

Chương 48. Register Programming

Đọc datasheet, mẫu thao tác thanh ghi, trường bit.

Chương 49. Interrupt

Bảng vector, NVIC, quy tắc viết ISR, vùng tới hạn.

Chương 50. Embedded Project

Bảy dự án từ điều khiển LED đến mini RTOS.

Phần 19Level 6sắp có

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.

Chương 51. C Standard

C89 đến C23, cách đọc tài liệu chuẩn, tính khả chuyển.

Chương 52. Advanced Memory Model

Vòng đời đối tượng, alignment, strict aliasing, effective type.

Chương 53. Struct Memory Layout

Padding, alignment, offsetof, packed struct.

Chương 54. Advanced Preprocessor

Macro biến đối số, nối token, chuỗi hóa, X Macro.

Chương 55. Generic Data Structures

Thư viện container hoàn chỉnh bằng void* và con trỏ hàm.

Phần 20Level 8sắp có

Software Engineering với C

Viết code người khác đọc được, sửa được, tin được.

Chương 56. Code Quality

Đặt tên, quy ước, chia module, đóng gói, xử lý lỗi.

Chương 57. Testing

Unit test, integration test, mock, độ phủ, tích hợp liên tục.

Chương 58. Static Analysis

Cảnh báo trình biên dịch, clang-tidy, cppcheck, fanalyzer.

Chương 59. Security

Tràn bộ đệm, chuỗi định dạng, tràn số, use after free, gia cố.

Phần 21Level 8sắp có

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.