Đề cương khóa học
Ngày 1 — Nền tảng Python vững chắc & Công cụ
Các tính năng Python hiện đại và Phân loại kiểu dữ liệu
- Cơ bản về phân loại kiểu, generic, Protocols và TypeGuard
- Dataclasses, dataclasses đóng băng (frozen dataclasses) và tổng quan về attrs
- Trò khớp hoa văn (Pattern matching - PEP 634+) và cách sử dụng thông dụng (idiomatic)
Chất lượng mã nguồn và Công cụ
- Trình định dạng mã và trình kiểm tra lỗi (linters): black, isort, flake8, ruff
- Kiểm tra kiểu tĩnh với MyPy và pyright
- Các hook pre-commit và quy trình làm việc của nhà phát triển
Quản lý dự án và Đóng gói
- Quản lý phụ thuộc với Poetry và môi trường ảo (virtual environments)
- Bố cục gói, điểm vào (entry points) và các thực hành tốt nhất về phiên bản hóa (versioning)
- Xây dựng và xuất bản gói lên PyPI và các registry riêng tư
Ngày 2 — Mẫu thiết kế & Thực hành kiến trúc
Mẫu thiết kế trong Python
- Mẫu sáng tạo (Creational patterns): Factory, Builder, Singleton (biến thể theo phong cách Python)
- Mẫu cấu trúc (Structural patterns): Adapter, Facade, Decorator, Proxy
- Mẫu hành vi (Behavioral patterns): Strategy, Observer, Command
Nguyên lý kiến trúc
- Nguyên lý SOLID áp dụng cho các cơ sở mã Python
- kiến trúc Hexagonal/Clean và các ranh giới (boundaries)
- Các mẫu tiêm phụ thuộc (dependency injection) và quản lý cấu hình
Độ module hóa và Tái sử dụng
- Thiết kế mã thư viện so với mã ứng dụng
- API, giao diện ổn định và phiên bản hóa ngữ nghĩa (semantic versioning)
- Xử lý cấu hình, thông tin bí mật (secrets) và cài đặt cụ thể theo môi trường
Ngày 3 — Đồng thời, IO bất đồng bộ và Hiệu suất
Đồng thời và Song song
- Nền tảng lập trình luồng (threading) và các tác động của GIL
- Multiprocessing và các pool tiến trình cho các tác vụ ràng buộc CPU
- Khi nào nên sử dụng concurrent.futures so với multiprocessing
Lập trình bất đồng bộ với asyncio
- Các mẫu async/await, vòng lặp sự kiện (event loop) và hủy bỏ (cancellation)
- Thiết kế thư viện bất đồng bộ và khả năng tương tác với mã đồng bộ (sync)
- Các mẫu ràng buộc IO, áp suất ngược (backpressure) và giới hạn tốc độ (rate limiting)
Lấy hồ sơ (Profiling) và Tối ưu hóa
- Công cụ lấy hồ sơ: cProfile, pyinstrument, perf, memory_profiler
- Tối ưu hóa các đường nóng (hot paths) và sử dụng các phần mở rộng C/Numba khi phù hợp
- Đo độ trễ, thông lượng và mức độ sử dụng tài nguyên
Ngày 4 — Kiểm thử, CI/CD, Quan sát tính (Observability) và Triển khai
Chiến lược kiểm thử và Tự động hóa
- Kiểm thử đơn vị và fixtures với pytest; tổ chức kiểm thử
- Kiểm thử dựa trên thuộc tính với Hypothesis và kiểm thử hợp đồng (contract testing)
- Mô phỏng (mocking), monkeypatching và kiểm thử mã bất đồng bộ
CI/CD, Phát hành và Giám sát
- Tích hợp kiểm thử và cổng chất lượng (quality gates) vào GitHub Actions/GitLab CI
- Xây dựng các container có thể tái lập với Docker và các bước xây dựng nhiều giai đoạn (multi-stage builds)
- Quan sát tính của ứng dụng: nhật ký có cấu trúc (structured logging), chỉ số Prometheus và theo dõi (tracing)
Bảo mật, Gia cố và Thực hành tốt nhất
- Thẩm định phụ thuộc, cơ bản về SBOM và quét lỗ hổng
- Các thực hành lập trình an toàn cho xác thực đầu vào và quản lý thông tin bí mật
- Gia cố thời gian chạy: giới hạn tài nguyên, quyền người dùng và bảo mật container
Dự án tổng kết (Capstone) & Rút kinh nghiệm
- Phòng lab nhóm: thiết kế và triển khai một dịch vụ nhỏ sử dụng các mẫu từ khóa học
- Kiểm thử, kiểm tra kiểu, đóng gói và pipeline CI cho dự án
- Rút kinh nghiệm cuối cùng, phê bình mã và kế hoạch cải thiện có thể thực hiện được
Tổng kết và Các bước tiếp theo
Yêu cầu
- Kinh nghiệm lập trình Python ở cấp độ trung cấp vững chắc
- Quen thuộc với lập trình hướng đối tượng và kiểm thử cơ bản
- Kinh nghiệm sử dụng dòng lệnh và Git
Đối tượng tham gia
- Lập trình viên Python cấp cao
- Kỹ sư phần mềm chịu trách nhiệm về chất lượng mã và kiến trúc Python
- Trưởng nhóm kỹ thuật và kỹ sư MLOps/DevOps làm việc với các cơ sở mã (codebases) Python
Đánh giá (2)
mọi thứ đều hoàn hảo
Florin Vrincianu
Khóa học - Python Programming Fundamentals
Dịch thuật bằng máy
Các bài tập thực hành liên quan đến nội dung thực sự giúp hiểu rõ hơn về mỗi chủ đề. Ngoài ra, phong cách bắt đầu lớp học bằng bài giảng và tiếp tục với các bài tập thực hành là tốt và hữu ích để liên kết với nội dung đã được trình bày trước đó.
Nazeera Mohamad - Ministry of Science, Technology and Innovation
Khóa học - Introduction to Data Science and AI using Python
Dịch thuật bằng máy