Python Intensive Course syllabus

Chương trình thiết kế để học mỗi tuần 2 buổi, mỗi buổi 45 phút. Lưu ý kiến thức khá nhiều, học viên cần tập trung và cố gắng. Tổng thời lượng là 29 tuần.

Sách tham khảo: https://docs.google.com/document/d/1axJt68SFMv__GRGnSHxIIEowAuTac7dSyGmEKamgJJQ/edit?usp=sharing

Tuần 1: Variables, Data types; Operators; Loops; Conditional statements; Random và List trong Python

Mục tiêu:

  • Nắm được các kiến thức cơ bản về Python, bao gồm biến, kiểu dữ liệu, toán tử, vòng lặp, câu lệnh điều kiện và danh sách Python.

  • Có khả năng viết các chương trình Python đơn giản để giải quyết các bài toán cơ bản.

Buổi 1 (45 phút):

1. Giới thiệu về Python (5 phút)

  • Ứng dụng của Python.

  • Đặc điểm nổi bật của Python so với các ngôn ngữ lập trình khác.

2. Biến (15 phút)

  • Khái niệm biến, cách khai báo và sử dụng biến.

  • Các quy tắc đặt tên biến.

  • Kiểu dữ liệu của biến: số nguyên, số thực, chuỗi, Boolean.

  • Phép gán giá trị cho biến.

3. Toán tử (10 phút)

  • Các loại toán tử: toán tử số học, toán tử so sánh, toán tử logic, toán tử gán.

  • Cách sử dụng các toán tử trong Python.

  • Quy tắc ưu tiên toán tử.

4. Bài tập (15 phút)

  • Viết chương trình để tính tổng, hiệu, tích, thương của hai số.

  • Viết chương trình để so sánh hai số và in ra kết quả so sánh.

  • Viết chương trình để kiểm tra xem một số có phải là số nguyên tố hay không.

Buổi 2 (45 phút):

1. Vòng lặp (15 phút)

  • Khái niệm vòng lặp, mục đích sử dụng vòng lặp.

  • Các loại vòng lặp trong Python: for, while.

  • Cấu trúc cú pháp của các vòng lặp.

  • Sử dụng vòng lặp để lặp lại một khối mã nhiều lần.

2. Câu lệnh điều kiện (15 phút)

  • Khái niệm câu lệnh điều kiện, mục đích sử dụng câu lệnh điều kiện.

  • Cấu trúc cú pháp của câu lệnh điều kiện if-else.

  • Sử dụng câu lệnh điều kiện để kiểm tra điều kiện và thực thi các khối mã tương ứng.

3. Danh sách Python (10 phút)

  • Khái niệm danh sách Python, cách tạo và truy cập các phần tử trong danh sách.

  • Thay đổi giá trị của các phần tử trong danh sách.

  • Xóa phần tử khỏi danh sách.

  • Sử dụng các hàm built-in để làm việc với danh sách: len(), append(), insert(), remove(), index().

4. Bài tập (15 phút)

  • Viết chương trình để in ra các số chẵn từ 1 đến 20.

  • Viết chương trình để tìm số lớn nhất trong một danh sách số.

Lưu ý:

Các bài tập có thể thay đổi, thêm/bớt tuỳ vào nhu cầu và tình hình học tập của học viên.

Quiz ôn tập tuần 1:https://www.quizne.vn/quiz/python-intensive-course-quiz-1

Tuần 2: Tuple, Dictionary, Function (Function đơn giản, function với parameter, function có return), Scope của biến Python

Mục tiêu:

  • Nắm được các kiến thức nâng cao hơn về Python, bao gồm Tuple, Dictionary, Function và Scope của biến Python.

  • Có khả năng viết các chương trình Python phức tạp hơn để giải quyết các bài toán thực tế.

Buổi 1 (45 phút):

1. Tuple (15 phút)

  • Khái niệm Tuple, cách tạo và truy cập các phần tử trong Tuple.

  • Thay đổi giá trị của các phần tử trong Tuple (nếu được phép).

  • Xóa phần tử khỏi Tuple (nếu được phép).

  • Sử dụng các hàm built-in để làm việc với Tuple: len(), index(), count().

2. Dictionary (20 phút)

  • Khái niệm Dictionary, cách tạo và truy cập các phần tử trong Dictionary.

  • Thay đổi giá trị của các phần tử trong Dictionary.

  • Xóa phần tử khỏi Dictionary.

  • Sử dụng các hàm built-in để làm việc với Dictionary: len(), keys(), values(), items().

3. Bài tập (10 phút)

  • Viết chương trình để tạo một Tuple lưu trữ thông tin cá nhân của một người (tên, tuổi, email).

  • Viết chương trình để tạo một Dictionary lưu trữ thông tin liên lạc của các thành viên trong gia đình.

  • Viết chương trình để tìm kiếm một từ trong một chuỗi sử dụng Dictionary.

Buổi 2 (45 phút):

1. Function (15 phút)

  • Khái niệm Function, cách khai báo và sử dụng Function.

  • Function đơn giản không có tham số và không có return.

  • Function có tham số và không có return.

  • Function có tham số và có return.

2. Scope của biến Python (20 phút)

  • Khái niệm Scope của biến Python: Global scope, Local scope, Function scope.

  • Cách sử dụng biến trong các Scope khác nhau.

  • Sử dụng Global keyword và Nonlocal keyword để thay đổi Scope của biến.

3. Bài tập (10 phút)

  • Viết chương trình để tính tổng hai số sử dụng Function.

  • Viết chương trình để kiểm tra xem một số có phải là số nguyên tố hay không sử dụng Function.

  • Viết chương trình để tìm giá trị lớn nhất trong một danh sách số sử dụng Function.

Quiz ôn tập tuần 2:https://www.quizne.vn/quiz/python-intensive-course-quiz-2

Project thực hành cho học viên:

Làm game Hangman và Blackjack

Hướng dẫn Làm game Hangman Hangman: https://inventwithpython.com/bigbookpython/project34.html

Blackjack: https://inventwithpython.com/bigbookpython/project4.html

Tuần 3: Ôn tập kiến thức tuần 1 & 2, Kỹ năng debug

Mục tiêu:

  • Ôn tập kiến thức đã học trong 2 tuần đầu về biến, kiểu dữ liệu, toán tử, vòng lặp, câu lệnh điều kiện, Tuple, Dictionary, Function và Scope của biến Python.

  • Nâng cao kỹ năng debug chương trình Python.

Buổi 1 (45 phút):

1. Ôn tập kiến thức tuần 1 (20 phút)

  • Biến, kiểu dữ liệu, toán tử.

  • Vòng lặp for, while.

  • Câu lệnh điều kiện if-else.

2. Ôn tập kiến thức tuần 2 (20 phút)

  • Tuple: cách tạo, truy cập, thay đổi, xóa phần tử.

  • Dictionary: cách tạo, truy cập, thay đổi, xóa phần tử.

  • Function: Function đơn giản, Function có tham số, Function có return.

  • Scope của biến Python: Global scope, Local scope, Function scope.

3. Bài tập (5 phút)

  • Viết chương trình để tính tổng hai số sử dụng vòng lặp for.

  • Viết chương trình để kiểm tra xem một số có phải là số nguyên tố hay không sử dụng câu lệnh điều kiện if-else.

  • Viết chương trình để tìm giá trị lớn nhất trong một danh sách số sử dụng Tuple và Function.

Buổi 2 (45 phút):

1. Kỹ năng debug (40 phút)

  • Khái niệm debug.

  • Các công cụ debug cơ bản: print(), breakpoint, debugger.

  • Cách sử dụng các công cụ debug để xác định và sửa lỗi trong chương trình.

  • Kỹ năng debug nâng cao: sử dụng logging, exception handling.

2. Bài tập (5 phút)

  • Debug một chương trình có lỗi cú pháp.

  • Debug một chương trình có lỗi logic.

  • Debug một chương trình có lỗi ngoại lệ.

Tuần 4: Sets, Turtle & GUI, làm việc với file

Mục tiêu:

  • Nắm vững các kiến thức nâng cao hơn về Sets, Turtle & GUI, làm việc với file trong Python.

  • Có khả năng sử dụng các kiến thức đã học để giải quyết các bài toán thực tế phức tạp hơn.

Buổi 1 (45 phút):

1. Sets (15 phút)

  • Khái niệm Sets, cách tạo và truy cập các phần tử trong Set.

  • Các phép toán trên Sets: hợp, giao, hiệu, bổ sung.

  • Sử dụng Sets để giải quyết các bài toán thực tế.

2. Turtle & GUI (20 phút)

  • Giới thiệu về thư viện Turtle và GUI trong Python.

  • Sử dụng Turtle để vẽ hình học trên màn hình.

  • Sử dụng GUI để tạo giao diện người dùng đồ họa cho chương trình Python.

3. Bài tập (10 phút)

  • Viết chương trình để sử dụng Sets để loại bỏ các phần tử trùng lặp trong một danh sách.

  • Viết chương trình để sử dụng Turtle để vẽ một hình vuông, hình tam giác và hình tròn.

  • Viết chương trình để tạo một giao diện người dùng đồ họa đơn giản bằng GUI.

Buổi 2 (45 phút):

1. Làm việc với file (30 phút)

  • Mở, đọc, ghi file trong Python.

  • Xử lý dữ liệu trong file.

  • Sử dụng các hàm built-in để làm việc với file: open(), read(), write(), close().

2. Bài tập (15 phút)

  • Viết chương trình để đọc dữ liệu từ một file văn bản và in ra màn hình.

  • Viết chương trình để ghi dữ liệu vào một file văn bản.

  • Viết chương trình để xử lý dữ liệu trong một file CSV.

Project cho học viên

Mục tiêu:

  • Ôn tập kiến thức về Sets, Turtle & GUI, làm việc với file trong Python.

  • Rèn luyện kỹ năng sử dụng các kiến thức đã học để giải quyết bài toán thực tế.

  • Nâng cao khả năng tư duy logic và lập trình.

Đề bài:

1. Quản lý danh sách học viên:

  • Tạo một chương trình để quản lý danh sách học viên của một lớp học.

  • Sử dụng Sets để lưu trữ danh sách học viên, đảm bảo không có học viên nào bị trùng lặp.

  • Cho phép người dùng thực hiện các chức năng sau:

    • Thêm học viên mới.

    • Xóa học viên khỏi danh sách.

    • Tìm kiếm học viên theo tên hoặc mã số học viên.

    • In ra danh sách học viên hiện tại.

    • Lưu danh sách học viên vào file CSV.

2. Phân tích dữ liệu bán hàng:

  • Đọc dữ liệu từ một file CSV chứa thông tin về các đơn hàng bán hàng.

  • Sử dụng Sets để tính toán số lượng sản phẩm đã bán được cho từng loại sản phẩm.

  • Ghi kết quả phân tích vào một file văn bản.

Tuần 5: Pygame & OOP

Mục tiêu:

  • Nắm vững các kiến thức về Pygame và lập trình hướng đối tượng (OOP) trong Python.

  • Có khả năng sử dụng Pygame để tạo các trò chơi và ứng dụng đồ họa.

  • Hiểu rõ các khái niệm cơ bản của OOP và áp dụng chúng vào lập trình Python.

Buổi 1 (45 phút):

1. Pygame (30 phút)

  • Giới thiệu về thư viện Pygame.

  • Cài đặt và cấu hình Pygame.

  • Các thành phần cơ bản của Pygame: màn hình, hình ảnh, âm thanh, sự kiện.

  • Viết chương trình Pygame đơn giản để hiển thị một hình ảnh trên màn hình.

2. Bài tập (15 phút)

Buổi 2 (45 phút):

1. Lập trình hướng đối tượng (OOP) (30 phút)

  • Khái niệm cơ bản về OOP: Module, package, class, constructor, self, pass.

  • Kế thừa và đa kế thừa

  • Đóng gói

  • Đa hình

  • Trừu tượng

  • Method overloading

  • Method overriding

  • Interface & Abstract Class

  • @classmethod

  • @staticmethod

  • Descriptor

  • Decorator

  • String conversion in OOP

  • Data class

  • Metaclass

2. Bài tập (15 phút)

  • Tạo một Class Point để biểu diễn một điểm trong không gian 2D.

  • Tạo một Class Circle để biểu diễn một hình tròn.

Tuần 6: Error, exception handling, format string, datetime

Mục tiêu:

  • Hiểu cách Python xử lý các lỗi gặp phải khi chạy chương trình (errors) và cách áp dụng Exception Handling.

  • Có thể sử dụng format strings và xử lý dữ liệu ngày tháng (datetime).

Buổi 1 (45 phút):

1. Errors and Exception Handling (30 phút)

  • Hiểu sự khác biệt giữa các loại lỗi (Errors) trong Python (SyntaxError, NameError, TypeError, etc.)

  • Khái niệm Exception Handling, khối try...except.

  • Làm quen với các Exception thường gặp (ZeroDivisionError, ValueError, IndexError, etc).

  • Tự tạo Exception (custom exception)

  • Các phần finallyelse trong khối Exception Handling

2. Bài tập (15 phút)

  • Viết chương trình cố tình gây ra các lỗi cơ bản, ví dụ chia cho 0 rồi bắt lỗi (Exception) để xử lý.

  • Viết một hàm tính giai thừa có sử dụng Exception Handling phù hợp.

Buổi 2 (45 phút):

1. Format Strings (20 phút)

  • Format strings trong Python: Cú pháp truyền thống %

  • Cách làm việc với f-strings: nhanh gọn và linh hoạt

  • Ứng dụng của format strings cho việc xuất dữ liệu với cấu trúc mong muốn

2. Module Datetime (20 phút)

  • Làm việc với đối tượng ngày tháng: date, time, datetime

  • Các phương thức thường dùng: strftime(), strptime(), timedelta()

  • Tính hiệu giữa các ngày, cộng thêm thời gian vào ngày tháng...

3. Bài tập (5 phút)

  • Viết chương trình yêu cầu nhập ngày sinh nhật, tính toán ra tuổi hiện tại.

  • Sử dụng f-string để xuất thông tin của một người với format đẹp mắt và dễ chỉnh sửa

Tuần 7: Module, package, Json data, Tkinter và Pandas căn bản

Mục tiêu:

  • Nắm vững các kiến thức về Module, Package, JSON data, Tkinter và Pandas căn bản trong Python.

  • Có khả năng sử dụng các kiến thức đã học để giải quyết các bài toán thực tế liên quan đến quản lý dữ liệu và tạo giao diện người dùng.

Buổi 1 (45 phút):

1. Module và Package (20 phút)

  • Khái niệm về Module và Package trong Python.

  • Cách import và sử dụng Module, Package.

  • Tự tạo Module và Package cho dự án Python.

  • Lợi ích của việc sử dụng Module và Package.

2. JSON data (20 phút)

  • Giới thiệu về JSON data format.

  • Cấu trúc dữ liệu JSON: Object, Array, Number, String, Boolean.

  • Chuyển đổi dữ liệu Python sang JSON và ngược lại.

  • Sử dụng thư viện json để thao tác với dữ liệu JSON.

3. Bài tập (5 phút)

  • Viết chương trình sử dụng Module để tính toán diện tích, chu vi của hình vuông, hình chữ nhật.

  • Tạo Package chứa các Module để quản lý danh sách học viên, bao gồm các chức năng thêm, xóa, sửa, tìm kiếm.

  • Đọc dữ liệu JSON từ một file, hiển thị ra màn hình và lưu trữ dữ liệu JSON mới vào file.

Buổi 2 (45 phút):

1. Tkinter (25 phút)

  • Giới thiệu về thư viện Tkinter để tạo giao diện người dùng đồ họa (GUI) trong Python.

  • Các thành phần cơ bản của Tkinter: Window, Frame, Label, Button, Entry, Textbox, Canvas, etc.

  • Xây dựng một giao diện GUI đơn giản với Tkinter.

2. Pandas (20 phút)

  • Giới thiệu về thư viện Pandas để thao tác với dữ liệu dạng bảng (DataFrame).

  • Đọc dữ liệu từ file CSV, Excel vào DataFrame.

  • Xử lý dữ liệu trong DataFrame: lọc, sắp xếp, tổng hợp, v.v.

  • Hiển thị dữ liệu trong DataFrame bằng các biểu đồ trực quan.

3. Bài tập (10 phút)

  • Tạo giao diện GUI đơn giản với Tkinter để nhập thông tin cá nhân (họ tên, tuổi, quê quán) và lưu trữ vào file JSON.

  • Đọc dữ liệu CSV chứa thông tin về doanh thu bán hàng, sử dụng Pandas để tính toán doanh thu trung bình theo từng tháng, quý và hiển thị kết quả bằng biểu đồ.

Tuần 8: Ôn tập kiến thức

Mục tiêu:

  • Ôn tập toàn diện kiến thức đã học trong 7 tuần qua về Python.

  • Nâng cao kỹ năng lập trình và tư duy logic.

  • Áp dụng kiến thức đã học để phát triển một ứng dụng thực tế: Flashcard app.

Buổi 1 (45 phút):

1. Ôn tập kiến thức tuần 1 - 4 (30 phút)

  • Biến, kiểu dữ liệu, toán tử, vòng lặp, câu lệnh điều kiện.

  • Tuple, Dictionary, Function, Scope của biến Python.

  • Bài tập ôn tập:

    • Viết chương trình để tính tổng hai số sử dụng vòng lặp for.

    • Viết chương trình để kiểm tra xem một số có phải là số nguyên tố hay không sử dụng câu lệnh điều kiện if-else.

    • Viết chương trình để tìm giá trị lớn nhất trong một danh sách số sử dụng Tuple và Function.

    • Viết chương trình để sử dụng Sets để loại bỏ các phần tử trùng lặp trong một danh sách.

2. Ôn tập kiến thức tuần 5 - 7 (30 phút)

  • Pygame và lập trình hướng đối tượng (OOP).

  • Error, Exception Handling, format string, datetime.

  • Module, Package, JSON data, Tkinter và Pandas căn bản.

  • Bài tập ôn tập:

    • Viết chương trình Pygame để tạo một trò chơi Pong đơn giản.

    • Viết chương trình Pygame để phát một bản nhạc MP3.

    • Tạo một lớp Point để biểu diễn một điểm trong không gian 2D.

    • Tạo một lớp Circle để biểu diễn một hình tròn.

    • Sử dụng lớp Point để tạo các điểm và lớp Circle để tạo các hình tròn.

    • Viết chương trình để vẽ các hình tròn trên màn hình.

    • Viết chương trình cố tình gây ra các lỗi cơ bản, ví dụ chia cho 0 rồi bắt lỗi (Exception) để xử lý.

    • Viết một hàm tính giai thừa có sử dụng Exception Handling phù hợp.

    • Viết chương trình yêu cầu nhập ngày sinh nhật, tính toán ra tuổi hiện tại.

    • Sử dụng f-string để xuất thông tin của một người với format đẹp mắt và dễ chỉnh sửa.

Buổi 2 (45 phút):

1. Phát triển Flashcard app (45 phút)

  • Giới thiệu về Flashcard app và mục đích sử dụng.

  • Phân tích yêu cầu chức năng của Flashcard app.

  • Lập kế hoạch phát triển Flashcard app.

  • Viết mã code cho Flashcard app:

    • Giao diện người dùng (GUI) bằng Tkinter.

    • Xử lý dữ liệu flashcard (thẻ học) bằng JSON.

    • Thuật toán hiển thị flashcard và ghi nhớ kết quả học tập.

    • Lưu trữ dữ liệu flashcard và kết quả học tập.

Tuần 9: Recursion, Lambda operator, Generators, Closures, decorators, và Python unit test

Mục tiêu:

  • Nắm vững các khái niệm về đệ quy, toán tử lambda, generator, closure, decorator và unit test trong Python.

  • Có khả năng áp dụng các kiến thức đã học vào thực tế để giải quyết các vấn đề lập trình.

Thời lượng: 2 buổi, mỗi buổi 45 phút

Nội dung:

Buổi 1 (45 phút):

  • Giới thiệu (5 phút):

    • Giới thiệu ngắn gọn về các chủ đề chính của buổi học.

    • Nhấn mạnh tầm quan trọng của các chủ đề này trong lập trình Python.

  • Đệ quy (20 phút):

    • Định nghĩa đệ quy và giải thích cách thức hoạt động của nó.

    • Ví dụ về việc sử dụng đệ quy để giải quyết các bài toán.

    • Thảo luận về các trường hợp sử dụng phổ biến của đệ quy.

    • Bài tập thực hành: Viết một hàm đệ quy để tính giai thừa của một số.

  • Toán tử lambda (10 phút):

    • Giới thiệu toán tử lambda và cú pháp của nó.

    • Giải thích cách thức hoạt động của toán tử lambda.

    • Ví dụ về việc sử dụng toán tử lambda để tạo các hàm ẩn danh.

    • Thảo luận về các trường hợp sử dụng phổ biến của toán tử lambda.

    • Bài tập thực hành: Sử dụng toán tử lambda để tạo một hàm sắp xếp danh sách theo thứ tự tăng dần.

  • Generator (10 phút):

    • Giới thiệu generator và giải thích cách thức hoạt động của nó.

    • Ví dụ về việc sử dụng generator để tạo các chuỗi lặp vô tận.

    • Thảo luận về các trường hợp sử dụng phổ biến của generator.

    • Bài tập thực hành: Sử dụng generator để tạo một chuỗi Fibonacci.

Buổi 2 (45 phút):

  • Closure (15 phút):

    • Giới thiệu closure và giải thích cách thức hoạt động của nó.

    • Ví dụ về việc sử dụng closure để tạo các hàm có trạng thái bên trong.

    • Thảo luận về các trường hợp sử dụng phổ biến của closure.

    • Bài tập thực hành: Sử dụng closure để tạo một hàm đếm số lần nhấp chuột vào một nút.

  • Decorator (15 phút):

    • Giới thiệu decorator và giải thích cách thức hoạt động của nó.

    • Ví dụ về việc sử dụng decorator để thêm chức năng vào các hàm hiện có.

    • Thảo luận về các trường hợp sử dụng phổ biến của decorator.

    • Bài tập thực hành: Sử dụng decorator để ghi nhật ký thời gian thực thi của một hàm.

  • Python unit test (15 phút):

    • Giới thiệu Python unit test và tầm quan trọng của nó.

    • Giải thích cách viết các unit test bằng using the unittest module.

    • Ví dụ về việc viết unit test cho các hàm đệ quy, lambda, generator và closure.

    • Thảo luận về các best practices cho việc viết unit test.

    • Bài tập thực hành: Viết unit test cho các bài tập thực hành từ buổi 1.

Tuần 10: Python memory management & Regex, XML, giới thiệu khái niệm API

Mục tiêu:

  • Nắm vững các kiến thức về quản lý bộ nhớ, dọn rác, reference counting, lập trình động, đối tượng mutable và immutable, memory profiling, deep copy và shallow copy, tối ưu hóa mã Python, cách Python lưu số nguyên trong bộ nhớ, Regex, XML và API.

  • Rèn luyện kỹ năng phân tích hồ sơ bộ nhớ, sao chép dữ liệu, viết mã hiệu quả và sử dụng các công cụ lập trình.

Thời lượng: 3 buổi, mỗi buổi 45 phút

Buổi 1 (45 phút):

  • Quản lý bộ nhớ cơ bản (20 phút)

    • Vòng đời của đối tượng trong Python: Khởi tạo, sử dụng, hủy.

    • Cách bộ nhớ được cấp phát và giải phóng.

    • Các kỹ thuật quản lý bộ nhớ của Python.

    • Bài tập thực hành: Phân tích vòng đời của đối tượng trong một chương trình Python đơn giản.

  • Reference counting (15 phút)

    • Reference counting là gì, cơ chế hoạt động.

    • Ví dụ cụ thể về reference counting trong Python.

    • Ưu nhược điểm của reference counting.

    • Bài tập thực hành: Theo dõi reference counting của các đối tượng trong một chương trình Python.

  • Garbage Collection (10 phút)

    • Thế nào là garbage collection (dọn rác)?

    • Cơ chế hoạt động của các thuật toán dọn rác thế hệ (generational garbage collection) trong Python.

    • Các công cụ thu gom rác tự động.

    • Bài tập thực hành: Sử dụng công cụ garbage collection để kiểm tra và dọn dẹp bộ nhớ trong Python.

Buổi 2 (45 phút):

  • Lập trình động (dynamic typing) (15 phút)

    • Định nghĩa, sự khác biệt so với lập trình tĩnh (static typing).

    • Ví dụ phân biệt các kiểu dữ liệu động trong Python.

    • Ưu điểm và nhược điểm của lập trình động.

    • Bài tập thực hành: Xác định các kiểu dữ liệu động trong một chương trình Python và giải thích cách hoạt động của chúng.

  • Đối tượng mutable vs. immutable (15 phút)

    • Định nghĩa và cách hoạt động của các đối tượng mutable và immutable.

    • Các kiểu dữ liệu mutable và immutable phổ biến trong Python.

    • Tác động của tính mutable/immutable đến việc sử dụng, truyền tham số và hiệu năng.

    • Bài tập thực hành: Phân biệt và sử dụng các đối tượng mutable và immutable trong một chương trình Python.

  • Memory Profiling (15 phút)

    • Memory profiling: Định nghĩa, mục đích, các công cụ.

    • Các phương pháp profiling bộ nhớ phổ biến (ví dụ: line profiling, object allocation profiling).

    • Sử dụng công cụ profiling để xác định các điểm nóng bộ nhớ trong chương trình Python.

    • Bài tập thực hành: Sử dụng công cụ profiling để phân tích việc sử dụng bộ nhớ trong một chương trình Python.

Buổi 3 (45 phút):

  • Deep Copy vs Shallow Copy (15 phút)

    • Khái niệm shallow copy và deep copy, sự khác biệt.

    • Khi nào thì sử dụng deep copy hoặc shallow copy.

    • Hậu quả của việc sử dụng shallow copy không đúng cách.

    • Bài tập thực hành: Thực hiện deep copy và shallow copy của các đối tượng trong Python và so sánh kết quả.

  • Optimization Tips for Python Code (15 phút)

    • Các kỹ thuật tối ưu hóa mã Python phổ biến (ví dụ: sử dụng thư viện hiệu quả, tối ưu hóa vòng lặp, sử dụng data structure phù hợp).

    • Công cụ phân tích mã tĩnh để phát hiện các lỗi tiềm ẩn và tối ưu hóa mã.

    • Lựa chọn phiên bản Python phù hợp cho dự án.

    • Bài tập thực hành: Tối ưu hóa một chương trình Python đơn giản để cải thiện hiệu suất.

  • How Python store the integers in the memory? (10 phút)

    • Cách Python lưu trữ số nguyên trong bộ nhớ (ví dụ: fixed-length integers, variable-length integers).

    • Ưu nhược điểm của các phương pháp lưu trữ số nguyên khác nhau.

    • Ảnh hưởng của việc lưu trữ số nguyên đến hiệu năng chương trình.

    • Bài tập thực hành: Phân tích cách Python lưu trữ số nguyên trong một chương trình cụ thể.

  • Regex (15 phút)

    • Cú pháp cơ bản của Regex: ký tự, pattern, quantifiers.

    • Sử dụng Regex để tìm kiếm và xử lý văn bản trong Python.

    • Các trường hợp sử dụng phổ biến của Regex (ví dụ: kiểm tra dữ liệu đầu vào, trích xuất thông tin từ văn bản).

    • Bài tập thực hành:

      • Viết Regex để tìm kiếm tất cả các số điện thoại trong một đoạn văn bản ngắn.

      • Viết Regex để trích xuất email từ một chuỗi ký tự đơn giản.

  • XML (15 phút)

    • Cấu trúc XML: thẻ, thuộc tính, nội dung.

    • Xử lý XML với Python:

      • Đọc dữ liệu từ một file XML đơn giản bằng thư viện xml.etree.ElementTree.

      • Hiển thị thông tin cơ bản từ file XML ra màn hình.

    • Đọc và ghi dữ liệu XML bằng Python.

    • Bài tập thực hành: Phân tích và xử lý dữ liệu XML trong một tập tin XML đơn giản.

  • Giới thiệu API (15 phút)

      • Khái niệm API và các loại API phổ biến (REST, SOAP).

        * Giao tiếp với API bằng HTTP requests và thư viện requests trong Python.

        * Lấy dữ liệu từ API và xử lý dữ liệu JSON.

        * Ứng dụng API trong thực tế:

        * Tích hợp dữ liệu từ các nguồn bên ngoài vào ứng dụng Python.

        * Tạo các ứng dụng web và mobile sử dụng API.

        * Tự động hóa các tác vụ và thu thập thông tin từ các dịch vụ web.

        * Bài tập:

        * Gọi API của OpenWeatherMap để lấy thông tin thời tiết cho một thành phố cụ thể.

        * Sử dụng API của Google Maps để tìm kiếm địa điểm và hiển thị thông tin trên bản đồ. (Có thể bỏ qua nếu thời gian không đủ)

Tuần 11: Ôn tập kiến thức

Mục tiêu:

  • Ôn tập toàn diện kiến thức đã học trong 9 tuần qua về Python.

  • Nâng cao kỹ năng lập trình và tư duy logic.

  • Chuẩn bị cho bài kiểm tra cuối khóa.

Lưu ý: Do mỗi tuần chỉ có 2 buổi, mỗi buổi 45 phút, nên syllabus này sẽ được điều chỉnh để phù hợp với thời lượng học tập.

Buổi 1 (45 phút):

1. Ôn tập kiến thức tuần 1 - 4 (30 phút)

  • Biến, kiểu dữ liệu, toán tử, vòng lặp, câu lệnh điều kiện.

  • Tuple, Dictionary, Function, Scope của biến Python.

  • Bài tập ôn tập:

    • Viết chương trình để tính tổng hai số sử dụng vòng lặp for.

    • Viết chương trình để kiểm tra xem một số có phải là số nguyên tố hay không sử dụng câu lệnh điều kiện if-else.

    • Viết chương trình để tìm giá trị lớn nhất trong một danh sách số sử dụng Tuple và Function.

    • Viết chương trình để sử dụng Sets để loại bỏ các phần tử trùng lặp trong một danh sách.

2. Ôn tập kiến thức tuần 5 - 7 (15 phút)

  • Pygame và lập trình hướng đối tượng (OOP).

  • Error, Exception Handling, format string, datetime.

  • Module, Package, JSON data, Tkinter và Pandas căn bản.

  • Bài tập ôn tập:

    • Viết chương trình Pygame để tạo một trò chơi Pong đơn giản.

    • Viết chương trình Pygame để phát một bản nhạc MP3.

    • Tạo một lớp Point để biểu diễn một điểm trong không gian 2D.

    • Tạo một lớp Circle để biểu diễn một hình tròn.

    • Sử dụng lớp Point để tạo các điểm và lớp Circle để tạo các hình tròn.

    • Viết chương trình để vẽ các hình tròn trên màn hình.

    • Viết chương trình cố tình gây ra các lỗi cơ bản, ví dụ chia cho 0 rồi bắt lỗi (Exception) để xử lý.

    • Viết một hàm tính giai thừa có sử dụng Exception Handling phù hợp.

    • Viết chương trình yêu cầu nhập ngày sinh nhật, tính toán ra tuổi hiện tại.

    • Sử dụng f-string để xuất thông tin của một người với format đẹp mắt và dễ chỉnh sửa.

Buổi 2 (45 phút):

1. Ôn tập kiến thức tuần 8 - 9 (45 phút)

  • Đệ quy (Recursion) và các trường hợp sử dụng.

  • Phân tích và giải quyết bài toán bằng đệ quy.

  • Các vấn đề thường gặp và cách tránh khi sử dụng đệ quy.

  • Bài tập ôn tập:

    • Viết chương trình tính giai thừa của một số bằng đệ quy.

    • Viết chương trình đệ quy để tìm tổng các phần tử trong một mảng số.

    • Viết chương trình đệ quy để kiểm tra xem một chuỗi có đối xứng hay không.

  • Unit test trong Python và áp dụng vào thực tế.

  • Viết test case cho các hàm đơn giản trong Python.

  • Sử dụng unit test để kiểm tra lỗi và nâng cao chất lượng code.

  • Bài tập ôn tập:

    • Viết unit test cho chương trình tính giai thừa của một số.

    • Viết unit test cho chương trình tìm tổng các phần tử trong một mảng số.

    • Viết unit test cho chương trình kiểm tra xem một chuỗi có đối xứng hay không.

Tuần 12: HTML

Mục tiêu:

  • Nâng cao kỹ năng sử dụng HTML để tạo ra các trang web đẹp mắt, tương tác và hiệu quả.

  • Thành thạo các kiến thức HTML cơ bản và nâng cao.

  • Có khả năng tự tin xây dựng các trang web HTML phức tạp mà không cần sử dụng quá nhiều CSS.

Buổi 1 (45 phút):

1. Ôn tập kiến thức HTML cơ bản (30 phút)

  • Cấu trúc HTML cơ bản: Doctype, HTML, Head, Body.

  • Các thẻ HTML phổ biến: Heading, Paragraph, Lists, Images, Links, Tables.

  • Thuộc tính HTML: id, class, style.

  • Bài tập ôn tập:

    • Tạo một trang web HTML đơn giản với các thẻ Heading, Paragraph, Lists, Images, Links và Tables.

    • Sử dụng thuộc tính id, class và style để định dạng và tạo bố cục cho trang web.

2. HTML Forms (15 phút)

  • Khái niệm về HTML Forms và vai trò của chúng.

  • Các loại thẻ Form cơ bản: <input>, <select>, <textarea>, <button>.

  • Thuộc tính của các thẻ Form: type, name, value, checked, disabled, required.

  • Xử lý dữ liệu Form bằng phương thức GET và POST.

  • Bài tập ôn tập:

    • Tạo một Form HTML đơn giản để thu thập thông tin từ người dùng.

    • Xử lý dữ liệu Form bằng phương thức GET hoặc POST.

Buổi 2 (45 phút):

1. HTML Semantic Elements (30 phút)

  • Khái niệm về HTML Semantic Elements và lợi ích của việc sử dụng chúng.

  • Các loại Semantic Elements phổ biến: <header>, <nav>, <aside>, <article>, <section>, <footer>.

  • Sử dụng Semantic Elements để cải thiện cấu trúc và khả năng truy cập của trang web.

  • Bài tập ôn tập:

    • Thay thế các thẻ HTML thông thường bằng Semantic Elements trong bài tập 1.

    • Kiểm tra cấu trúc trang web bằng các công cụ validator HTML.

2. HTML5 Features (15 phút)

  • Các tính năng mới của HTML5: SVG, Audio, Video, Canvas, Geolocation, Web Storage.

  • Bài tập ôn tập:

    • Thêm các tính năng HTML5 vào bài tập 1 để tạo website đa phương tiện và tương tác hơn.

Lưu ý:

Tuần 13: CSS

Mục tiêu:

  • Nắm vững kiến thức CSS cơ bản và nâng cao trong thời gian ngắn nhất.

  • Có khả năng áp dụng CSS để tạo giao diện web cơ bản và responsive.

  • Rèn luyện kỹ năng tư duy logic và giải quyết vấn đề trong lập trình CSS.

Buổi 1 (45 phút):

1. Ôn tập nhanh CSS cơ bản (20 phút)

  • Nhắc lại các khái niệm cơ bản về CSS: cấu trúc tệp CSS, cú pháp viết CSS, selector.

  • Ôn tập các thuộc tính CSS phổ biến: định dạng văn bản, hình ảnh, bố cục trang.

  • Luyện tập viết CSS đơn giản để định dạng một trang web HTML.

2. Bắt đầu CSS nâng cao (25 phút)

  • Giới thiệu các kỹ thuật CSS nâng cao: descendant selectors, child selectors, sibling selectors, universal selector.

  • Sử dụng CSS preprocessors (ví dụ: Sass, LESS) để viết CSS hiệu quả hơn.

  • Áp dụng CSS variables và CSS custom properties để quản lý giá trị CSS linh hoạt.

Bài tập về nhà:

  • Ôn tập lại kiến thức CSS cơ bản.

  • Hoàn thành bài tập thực hành: Sử dụng CSS preprocessors để viết CSS cho một trang web đơn giản.

Buổi 2 (45 phút):

1. Hoàn thành CSS nâng cao (25 phút)

  • Nắm vững CSS animation và CSS transitions: tạo hiệu ứng chuyển động mượt mà cho các phần tử HTML.

  • Giới thiệu các thư viện CSS phổ biến: Bootstrap, Foundation, Tailwind CSS.

  • Tìm hiểu cách sử dụng các thành phần và giao diện UI có sẵn trong thư viện CSS.

2. Thực hành CSS nâng cao (20 phút)

  • Yêu cầu học viên thực hành tạo giao diện web phức tạp bằng CSS và các thư viện CSS.

  • Cung cấp hướng dẫn và hỗ trợ khi cần thiết.

  • Đánh giá kết quả thực hành và chia sẻ kinh nghiệm học tập.

Bài tập về nhà:

  • Hoàn thành bài tập thực hành: Tạo giao diện web responsive cho một trang web đơn giản bằng CSS và thư viện CSS.

  • Ôn tập toàn bộ kiến thức CSS đã học trong tuần 13.

Lưu ý:


Tuần 14: Kiến trúc client - server

Mục tiêu:

  • Nâng cao hiểu biết về kiến trúc Client-Server và cách thức hoạt động của World Wide Web.

  • Phân tích các mô hình Client-Server phổ biến và ứng dụng thực tế của chúng.

  • Khám phá các giao thức mạng và phương thức giao tiếp trong môi trường Client-Server.

  • Nhận thức về các vấn đề bảo mật và hiệu suất trong hệ thống Client-Server.

Tuần 14:

Buổi 1 (45 phút):

1. Ôn tập kiến thức cơ bản về Web (30 phút)

  • Giới thiệu về các thành phần chính của Web: Client, Server, Network, Protocol.

  • Mô tả sơ lược về quy trình truy cập trang web.

  • Vai trò của HTML, CSS và JavaScript trong việc xây dựng website.

2. Giới thiệu về Kiến trúc Client-Server (15 phút)

  • Khái niệm về kiến trúc Client-Server và mô hình hoạt động của nó.

  • So sánh kiến trúc Client-Server với các mô hình khác như Peer-to-Peer.

  • Ưu điểm và nhược điểm của kiến trúc Client-Server.

  • Ví dụ về các ứng dụng Client-Server phổ biến (Web, Email, File Sharing, v.v.).

Buổi 2 (45 phút):

1. Các mô hình Client-Server phổ biến (30 phút)

  • Mô hình Client-Server hai lớp (2-tier): Giải thích chi tiết cấu trúc và hoạt động.

  • Mô hình Client-Server ba lớp (3-tier): Giải thích chi tiết cấu trúc và hoạt động.

  • Mô hình Client-Server n-tầng (N-tier): Giải thích chi tiết cấu trúc và hoạt động.

  • Lựa chọn mô hình Client-Server phù hợp cho từng trường hợp cụ thể.

2. Giao thức mạng trong môi trường Client-Server (15 phút)

  • Giới thiệu về các giao thức mạng phổ biến: HTTP, FTP, SMTP, v.v.

  • Vai trò của các giao thức mạng trong việc truyền tải dữ liệu giữa Client và Server.

  • Giải thích chi tiết về giao thức HTTP: GET, POST, Request, Response, Headers, Status Codes.

Ngoài ra, học viên có thể tham khảo thêm các tài liệu sau:

Tuần 15: Database và SQL: PostgreSQL

Mục tiêu:

  • Nắm vững kiến thức toàn diện về Database và SQL: PostgreSQL, bao gồm cả cơ bản và nâng cao.

  • Thành thạo các kỹ thuật Javascript, bao gồm cả kiến thức cơ bản và nâng cao, để tạo ra các trang web tương tác và dynamic.

  • Có khả năng kết hợp Database, SQL: PostgreSQL và Javascript để xây dựng ứng dụng web hoàn chỉnh.

Lưu ý: Syllabus này được thiết kế với 2 buổi học mỗi tuần, tập trung vào kiến thức cốt lõi và ứng dụng thực tế của Database, SQL: PostgreSQL, Javascript. Việc hoàn thành toàn bộ chương trình đòi hỏi học viên phải có kiến thức nền tảng về HTML, CSS, Python và sẵn sàng dành thời gian luyện tập sau mỗi buổi học.

Tuần 15:

Buổi 1 (45 phút):

1. SQL cơ bản (10 phút)

  • Khái niệm về Database và vai trò của nó trong lưu trữ và quản lý dữ liệu.

  • Các loại Database phổ biến: Relational Database, NoSQL Database.

  • Giới thiệu về hệ quản trị cơ sở dữ liệu PostgreSQL.

  • Lợi ích sử dụng PostgreSQL: miễn phí, mã nguồn mở, hiệu suất cao, bảo mật tốt.

  • Hướng dẫn cài đặt PostgreSQL trên hệ điều hành đang sử dụng.

  • Giới thiệu giao diện dòng lệnh psql để thao tác với PostgreSQL.

  • Tạo và kết nối với database PostgreSQL.

  • Các lệnh SQL cơ bản: CREATE, READ, UPDATE, DELETE.

2. Giới thiệu SQL nâng cao (25 phút)

  • Các kiểu dữ liệu nâng cao trong PostgreSQL: ARRAY, JSON, etc.

  • Khóa chính (Primary Key) và khóa ngoại (Foreign Key) trong quan hệ bảng.

  • Các truy vấn SQL phức tạp hơn: JOIN, GROUP BY, HAVING, ORDER BY, LIMIT.

  • Giới thiệu về Stored Procedure và Function trong PostgreSQL.

3. Javascript cơ bản (10 phút)

  • Giới thiệu về Javascript và vai trò của nó trong lập trình web.

  • Cú pháp viết Javascript cơ bản: biến, kiểu dữ liệu, toán tử, điều kiện, vòng lặp.

Bài tập về nhà:

  • Ôn tập kỹ các kiến thức SQL cơ bản.

  • Hoàn thành bài tập thực hành: Viết các truy vấn SQL nâng cao để thao tác với dữ liệu phức tạp hơn.

  • Tham khảo tài liệu hướng dẫn SQL và Javascript để tìm hiểu thêm.

Buổi 2 (45 phút):

1. Javascript nâng cao (20 phút)

  • Lập trình Javascript với các hàm và đối tượng.

  • Tương tác với DOM (Document Object Model) để thao tác với các phần tử HTML.

  • Giới thiệu các thư viện Javascript phổ biến: jQuery, React, Vue.js.

2. Kết nối Database với Javascript (15 phút)

  • Giới thiệu các thư viện Javascript để kết nối với database.

  • Sử dụng AJAX (Asynchronous JavaScript and XML) để truy xuất và thao tác dữ liệu từ database.

3. Thực hành ứng dụng web (10 phút)

  • Yêu cầu học viên thực hành xây dựng ứng dụng web đơn giản sử dụng Database, SQL: PostgreSQL và Javascript.

  • Cung cấp hướng dẫn và hỗ trợ khi cần thiết.

Bài tập về nhà:

  • Hoàn thành bài tập thực hành: Xây dựng ứng dụng web hoàn chỉnh sử dụng Database, SQL: PostgreSQL và Javascript.

  • Ôn tập toàn bộ kiến thức SQL và Javascript đã học trong tuần 15.

  • Tham khảo tài liệu hướng dẫn SQL, Javascript và thư viện Javascript để tìm hiểu thêm.

Ngoài ra, học viên có thể tham khảo thêm các tài liệu sau:

Tuần 16: Ôn tập kiến thức (tuần 12 - 15) & Kết nối Python với cơ sở dữ liệu

Mục tiêu:

  • Ôn tập kiến thức đã học trong các tuần 12 - 15 (HTML, CSS, Kiến trúc Client-Server, Database & SQL).

  • Giới thiệu về cách kết nối Python với cơ sở dữ liệu PostgreSQL sử dụng thư viện Psycopg2.

  • Thực hành các thao tác cơ bản với dữ liệu trong PostgreSQL bằng Python.

Lưu ý: Syllabus này giả định rằng học viên đã có kiến thức cơ bản về HTML, CSS, Database và SQL. Do thời gian học tập hạn chế, việc ôn tập và học kết nối Python với PostgreSQL trong 2 buổi mỗi tuần sẽ cần sự tập trung cao độ từ học viên.

Tuần 16:

Buổi 1 (45 phút):

1. Ôn tập kiến thức HTML & CSS (25 phút)

  • Review nhanh các thẻ HTML phổ biến: Heading, Paragraph, Lists, Images, Links, Tables.

  • Ôn tập các thuộc tính HTML cơ bản: id, class, style.

  • Review các CSS Selectors: Element Selectors, Class Selectors, ID Selectors.

  • Ôn tập các CSS Properties cơ bản: Font, Text, Colors, Background, Borders, Padding, Margin.

2. Giới thiệu kết nối Python với PostgreSQL (20 phút)

  • Cài đặt thư viện Psycopg2 trong Python.

  • Khái niệm về kết nối database trong lập trình.

  • Bước cơ bản để kết nối Python với PostgreSQL sử dụng Psycopg2.

Buổi 2 (45 phút):

1. Ôn tập kiến trúc Client-Server & Database (25 phút)

  • Tóm tắt các mô hình Client-Server phổ biến (2-tier, 3-tier, N-tier).

  • Ôn tập các giao thức mạng cơ bản (HTTP, FTP, SMTP).

  • Review các khái niệm cơ bản về Database: Entity, Relationship, Table, Schema.

  • Ôn tập các lệnh SQL cơ bản (CREATE, READ, UPDATE, DELETE).

2. Thực hành kết nối Python với PostgreSQL (20 phút)

  • Viết code Python để kết nối với database PostgreSQL.

  • Thực hiện các thao tác CRUD (Create, Read, Update, Delete) với dữ liệu trong PostgreSQL bằng Python.

  • Giải quyết các lỗi kết nối database thường gặp.

Lưu ý:


Tuần 17 & 18 & 19 & 20 & 21: Flask; Flask Model & Flask template

Mục tiêu:

  • Giới thiệu về Flask, một framework Python nhẹ và phổ biến để phát triển ứng dụng web.

  • Tạo ứng dụng web Flask cơ bản với các chức năng xử lý request, trả về response và định tuyến URL.

  • Sử dụng Flask Model để tương tác với database và quản lý dữ liệu.

  • Tìm hiểu về Flask Templates để render giao diện người dùng (UI) cho ứng dụng web.

  • Mở rộng kiến thức với các chức năng nâng cao của Flask: Forms, Validation, Authentication, Error Handling, Deployment, Caching, Background Tasks, Testing.

Tuần 17:

Buổi 1 (45 phút):

1. Giới thiệu về Flask Framework (25 phút)

  • Lịch sử và lợi ích sử dụng Flask Framework.

  • Cài đặt Flask và cấu trúc project Flask cơ bản.

  • Khái niệm về request, response và định tuyến URL trong Flask.

2. Tạo ứng dụng web Flask cơ bản (20 phút)

  • Viết code Flask để tạo ứng dụng web chào mừng đơn giản.

  • Xử lý request GET và trả về response HTML.

  • Định tuyến URL cho các trang khác nhau trong ứng dụng web.

Buổi 2 (45 phút):

1. Flask Model và tương tác database (25 phút)

  • Giới thiệu về Flask-SQLAlchemy, một extension Flask phổ biến để tương tác với database.

  • Tạo model dữ liệu trong Flask-SQLAlchemy.

  • Thực hiện các thao tác CRUD (Create, Read, Update, Delete) với dữ liệu trong database.

2. Flask Templates và render giao diện người dùng (20 phút)

  • Giới thiệu về Flask Templates và cú pháp Jinja2.

  • Tạo template HTML cơ bản cho ứng dụng web Flask.

  • Render template HTML với dữ liệu động từ Flask.

Tuần 18:

Buổi 1 (45 phút):

1. Forms và Validation trong Flask (25 phút)

  • Giới thiệu về Flask-WTF, một extension Flask phổ biến để tạo và xử lý forms.

  • Tạo form HTML với các trường dữ liệu khác nhau.

  • Xử lý form submit và validate dữ liệu người dùng.

2. Authentication và Authorization trong Flask (20 phút)

  • Giới thiệu về Flask-Login, một extension Flask phổ biến để quản lý authentication và authorization.

  • Thực hiện user registration và login/logout trong ứng dụng web Flask.

  • Kiểm soát quyền truy cập vào các trang và chức năng khác nhau dựa trên vai trò người dùng.

Buổi 2 (45 phút):

1. Error Handling trong Flask (25 phút)

  • Giới thiệu về cách xử lý lỗi trong Flask.

  • Sử dụng các handler lỗi mặc định của Flask.

  • Tạo custom error handler để xử lý các lỗi cụ thể.

2. Deployment ứng dụng web Flask (20 phút)

  • Giới thiệu về các phương pháp deployment phổ biến cho ứng dụng web Flask.

  • Deploy ứng dụng web Flask lên hosting platform (ví dụ: Heroku, PythonAnywhere).

  • Cấu hình ứng dụng web Flask cho môi trường production.

Tuần 19:

Buổi 1 (45 phút):

1. Caching trong Flask (25 phút)

  • Giới thiệu về caching và lợi ích của caching trong ứng dụng web.

  • Sử dụng Flask-Caching, một extension Flask phổ biến để implement caching.

  • Cache dữ liệu tĩnh và dữ liệu động trong ứng dụng web Flask.

  • Khám phá các chiến lược caching nâng cao trong Flask.

  • Sử dụng cache để lưu trữ dữ liệu thường truy cập và cải thiện hiệu suất ứng dụng.

  • Tìm hiểu về các công cụ caching phổ biến khác như Memcached và Redis.

2. Background Tasks trong Flask (20 phút)

  • Giới thiệu về background tasks và lợi ích của background tasks.

  • Sử dụng Celery, một task queue phổ biến để implement background tasks trong Flask.

  • Chạy các task nặng nhọc trong background để không ảnh hưởng đến hiệu suất của ứng dụng web.

  • Xây dựng các task queue phức tạp hơn với Celery.

  • Sử dụng chaining và groups để xử lý các chuỗi task liên quan.

  • Giám sát và quản lý background tasks hiệu quả.

Buổi 2 (45 phút):

1. Testing trong Flask (25 phút)

  • Giới thiệu về unit testing và integration testing trong ứng dụng web.

  • Sử dụng unittest và pytest để viết unit test cho code Flask.

  • Viết integration test để kiểm tra tương tác giữa các phần khác nhau của ứng dụng web Flask.

  • Sử dụng công cụ như pytest-flask để đơn giản hóa quá trình testing.

  • Tự động hóa việc chạy test để đảm bảo chất lượng code.

2. Deployment nâng cao cho ứng dụng Flask (20 phút)

  • Triển khai ứng dụng Flask trên nền tảng cloud như AWS Elastic Beanstalk hoặc Google Cloud Platform.

  • Sử dụng containerization với Docker để đóng gói và triển khai ứng dụng hiệu quả hơn.

  • Tự động hóa quy trình deployment bằng CI/CD tools.

Tuần 20: Xây dựng dự án Flask thực tế

Tuần này tập trung vào củng cố kiến thức đã học bằng cách tạo ra một dự án lớn hơn.

Buổi 1 (45 phút):

  • Chọn lựa dự án và Lập kế hoạch chi tiết

    • Xác định mục tiêu và phạm vi của dự án Flask thực tế.

    • Phân chia dự án thành các nhiệm vụ nhỏ hơn và tạo timeline cụ thể.

    • Lựa chọn công nghệ và thư viện Flask phù hợp cho dự án.

Buổi 2 (45 phút):

  • Phát triển dự án (Phần 1)

    • Bắt đầu triển khai các tính năng cốt lõi của dự án đã chọn.

    • Sử dụng kiến thức về Flask Model, Flask Templates, Forms, Validation, Authentication, v.v.

    • Hướng dẫn và hỗ trợ từ giảng viên khi cần thiết.

Tuần 21: Hoàn thiện và trình bày dự án Flask

Buổi 1 (45 phút):

  • Phát triển dự án (Phần 2)

    • Hoàn thiện các tính năng còn lại của dự án và đảm bảo chức năng hoạt động trơn tru.

    • Thực hiện testing kỹ lưỡng để đảm bảo chất lượng code.

    • Đánh bóng giao diện người dùng (UI) và trải nghiệm người dùng (UX) của dự án.

Buổi 2 (45 phút):

  • Trình bày dự án và Giải đáp thắc mắc (30 phút)

    • Mỗi nhóm học viên trình bày dự án của mình, giới thiệu tính năng, giải thích cách thức hoạt động và demo.

    • Trả lời các câu hỏi từ giảng viên và các nhóm khác.

    • Chia sẻ kinh nghiệm và bài học học được trong quá trình phát triển dự án.

    • Cung cấp tài liệu tham khảo và hướng dẫn học tập thêm cho học viên.

Lưu ý bổ sung:

  • Độ phức tạp dự án: Điều chỉnh độ phức tạp của dự án dựa trên kỹ năng hiện có của học viên

Tuần 22: Ôn tập Flask, bootstrap, cắt ghép giao diện HTML

Mục tiêu:

  • Ôn tập và củng cố kiến thức về Flask Framework đã học trong các tuần trước.

  • Giới thiệu và làm quen với Bootstrap, một framework CSS phổ biến để thiết kế giao diện web responsive.

  • Rèn luyện kỹ năng cắt ghép giao diện HTML bằng cách áp dụng Bootstrap và kỹ thuật responsive design.

Buổi 1 (45 phút):

1. Ôn tập Flask Framework (25 phút)

  • Nhắc lại các khái niệm quan trọng trong Flask: request, response, routing, templates, models, forms, authentication, deployment.

  • Giải đáp các thắc mắc và củng cố kiến thức Flask của học viên.

  • Chia sẻ mẹo và thủ thuật hữu ích để phát triển ứng dụng web Flask hiệu quả.

2. Giới thiệu Bootstrap (20 phút)

  • Tìm hiểu về Bootstrap và lợi ích của việc sử dụng Bootstrap cho thiết kế web.

  • Khám phá các cấu trúc cơ bản của Bootstrap: grid system, typography, components, utilities.

  • Tập làm quen với cú pháp CSS của Bootstrap và cách áp dụng vào trang web.

Buổi 2 (45 phút):

1. Cắt ghép giao diện HTML với Bootstrap (25 phút)

  • Sử dụng Bootstrap để tạo bố cục trang web responsive.

  • Xây dựng các thành phần giao diện như menu, navbar, cards, buttons, forms, v.v.

  • Áp dụng các style CSS của Bootstrap để định dạng giao diện đẹp mắt và thống nhất.

2. Thực hành cắt ghép giao diện HTML (20 phút)

  • Yêu cầu học viên thực hành cắt ghép giao diện HTML cho một trang web đơn giản (ví dụ: trang giới thiệu, trang blog, trang sản phẩm).

Lưu ý:

  • Khuyến khích học viên tự học hỏi thêm về Bootstrap và các kỹ thuật cắt ghép giao diện HTML responsive.

  • Tham khảo tài liệu hướng dẫn và các ví dụ thực tế để nâng cao kỹ năng.

  • Luyện tập thường xuyên để thành thạo việc sử dụng Bootstrap và tạo ra giao diện web đẹp mắt, hiệu quả.

Tuần 23: Tạo API bằng python

Mục tiêu:

  • Rèn luyện kỹ năng phát triển API bằng Python qua các bài thực hành đa dạng.

  • Khám phá các thư viện và công cụ phổ biến để xây dựng API RESTful hiệu quả.

  • Nâng cao khả năng thiết kế và triển khai API đáp ứng các yêu cầu khác nhau.

Buổi 1 (45 phút):

1. Giới thiệu về API RESTful (25 phút)

  • Khái niệm về API RESTful và các nguyên tắc thiết kế REST.

  • Phân biệt các phương thức HTTP (GET, POST, PUT, DELETE) và cách sử dụng chúng trong API.

  • Tìm hiểu về định dạng dữ liệu JSON và cách sử dụng nó để trao đổi dữ liệu giữa API và client.

2. Thư viện Flask-RESTful cho Python API (20 phút)

  • Giới thiệu về Flask-RESTful, một thư viện Python phổ biến để xây dựng API RESTful.

  • Tạo API RESTful đơn giản với Flask-RESTful: định nghĩa resource, endpoints, methods, và xử lý request/response.

  • Thực hành ví dụ API để lấy, tạo, cập nhật và xóa dữ liệu.

Buổi 2 (45 phút):

1. Thực hành API với các thư viện khác (25 phút)

  • Khám phá các thư viện Python khác để xây dựng API: FastAPI, Starlette, Masonite.

  • So sánh điểm mạnh và điểm yếu của các thư viện API khác nhau.

  • Thực hành ví dụ API sử dụng các thư viện này để đa dạng hóa kỹ năng.

2. Thực hành API với các trường hợp sử dụng thực tế (20 phút)

  • Yêu cầu học viên thực hành xây dựng API cho các trường hợp sử dụng thực tế (ví dụ: quản lý danh sách, quản lý tài khoản, API bán hàng).

  • Cung cấp hướng dẫn và hỗ trợ khi cần thiết.

  • Đánh giá kết quả thực hành và chia sẻ kinh nghiệm học hỏi.

Lưu ý:

  • Khuyến khích học viên tự học hỏi thêm về các thư viện API khác nhau và cách sử dụng chúng hiệu quả.

  • Tham khảo tài liệu hướng dẫn và các ví dụ thực tế để nâng cao kỹ năng phát triển API.

  • Luyện tập thường xuyên để thành thạo việc xây dựng API đáp ứng các yêu cầu đa dạng.

Tuần 24: Crawl và web scraping

Mục tiêu:

  • Giới thiệu các khái niệm và kỹ thuật cơ bản về crawl và web scraping.

  • Rèn luyện kỹ năng sử dụng các công cụ phổ biến để trích xuất dữ liệu từ trang web.

  • Khám phá ứng dụng thực tế của crawl và web scraping trong các lĩnh vực khác nhau.

Buổi 1 (45 phút):

1. Giới thiệu về Crawl và Web Scraping (25 phút)

  • Khái niệm về crawl và web scraping.

  • Phân biệt crawl và web scraping với các kỹ thuật khác như data mining và data extraction.

  • Lợi ích và ứng dụng thực tế của crawl và web scraping trong các lĩnh vực khác nhau.

2. Các công cụ Crawl và Web Scraping phổ biến (20 phút)

  • Giới thiệu các công cụ crawl và web scraping phổ biến: Beautiful Soup, Scrapy, Selenium.

  • So sánh điểm mạnh và điểm yếu của các công cụ khác nhau.

  • Thực hành ví dụ đơn giản để trích xuất dữ liệu từ trang web bằng các công cụ này.

Buổi 2 (45 phút):

1. Crawl và Web Scraping nâng cao (25 phút)

  • Kỹ thuật xử lý dữ liệu sau khi crawl và web scraping: làm sạch dữ liệu, lưu trữ dữ liệu, phân tích dữ liệu.

  • Khắc phục các vấn đề thường gặp khi crawl và web scraping (ví dụ: chặn IP, thay đổi cấu trúc trang web).

  • Luật pháp và đạo đức liên quan đến crawl và web scraping.

2. Thực hành crawl và web scraping với các trường hợp sử dụng thực tế (20 phút)

  • Yêu cầu học viên thực hành crawl và web scraping cho các trường hợp sử dụng thực tế (ví dụ: thu thập giá cả sản phẩm, phân tích thị trường, theo dõi sentiment).

  • Cung cấp hướng dẫn và hỗ trợ khi cần thiết.

  • Đánh giá kết quả thực hành và chia sẻ kinh nghiệm học hỏi.

Lưu ý:

  • Khuyến khích học viên tự học hỏi thêm về các công cụ crawl và web scraping khác nhau và cách sử dụng chúng hiệu quả.

  • Tham khảo tài liệu hướng dẫn và các ví dụ thực tế để nâng cao kỹ năng crawl và web scraping.

  • Luyện tập thường xuyên để thành thạo việc trích xuất dữ liệu từ trang web một cách hiệu quả và có đạo đức.

Tuần 25 & 26: Một số thuật toán Python thường gặp

Mục tiêu:

  • Giới thiệu và rèn luyện kỹ năng áp dụng các thuật toán Python phổ biến để giải quyết các vấn đề thực tế.

  • Nâng cao khả năng phân tích và lựa chọn thuật toán phù hợp cho từng bài toán.

  • Phát triển tư duy logic và lập trình hiệu quả thông qua thực hành các thuật toán.

Tuần 25:

Buổi 1 (45 phút):

  1. Giới thiệu về thuật toán và độ phức tạp thời gian, không gian (20 phút)
  • Khái niệm về thuật toán và vai trò của thuật toán trong lập trình. Phân loại thuật toán dựa trên độ phức tạp thời gian và không gian (O(1), O(log n), O(n), O(n^2), v.v.). Phân tích độ phức tạp của các thuật toán đơn giản.

  • khái niệm "best case", "worst case" và "average case" trong phân tích độ phức tạp.

  • Giới thiệu về khái niệm "Big O notation", "Omega notation" và "Theta notation".

  1. Thuật toán tìm kiếm cơ bản (15 phút)
  • Thuật toán tìm kiếm tuyến tính (Linear Search) và ứng dụng. Thuật toán tìm kiếm nhị phân (Binary Search) và ứng dụng. So sánh hiệu quả của các thuật toán tìm kiếm khác nhau.

  • Thuật toán tìm kiếm nội suy (Interpolation Search) và so sánh hiệu quả của nó với các thuật toán tìm kiếm khác.

  • Kỹ thuật đệ quy (Recursion) và ứng dụng trong thiết kế thuật toán.

  • Khái niệm về "Divide and Conquer" (Chia để trị) và ứng dụng của nó trong một số thuật toán như Quick Sort, Merge Sort, v.v.

  1. Giới thiệu về các cấu trúc dữ liệu cơ bản như mảng (Array), danh sách liên kết (Linked List), ngăn xếp (Stack), hàng đợi (Queue) và cách chúng liên quan đến việc thiết kế và phân tích thuật toán. (10 phút)

Buổi 2 (45 phút):

1. I. Thuật toán Sắp xếp (25 phút):

  1. Giới thiệu về sắp xếp:

    • Khái niệm, phân loại (so sánh, không so sánh), các tiêu chí đánh giá thuật toán sắp xếp (ổn định, tại chỗ).
  2. Các thuật toán sắp xếp cơ bản:

    • Bubble Sort: Ý tưởng, cài đặt, phân tích độ phức tạp, ứng dụng.

    • Selection Sort: Ý tưởng, cài đặt, phân tích độ phức tạp, ứng dụng.

    • Insertion Sort: Ý tưởng, cài đặt, phân tích độ phức tạp, ứng dụng.

    • So sánh hiệu quả của ba thuật toán trên (thời gian chạy, bộ nhớ sử dụng, tính ổn định).

  3. Các thuật toán sắp xếp nâng cao:

    • Merge Sort: Ý tưởng (chia để trị), cài đặt, phân tích độ phức tạp, ứng dụng.

    • Quick Sort: Ý tưởng (chia để trị, pivot), cài đặt (các chiến lược chọn pivot), phân tích độ phức tạp (trường hợp tốt nhất, xấu nhất, trung bình), ứng dụng.

    • Heap Sort: Cấu trúc dữ liệu heap, ý tưởng sắp xếp, cài đặt, phân tích độ phức tạp, ứng dụng.

  4. Các thuật toán sắp xếp khác:

    • Counting Sort, Radix Sort, Bucket Sort: Ý tưởng, cài đặt, phân tích độ phức tạp, ứng dụng, so sánh với các thuật toán trước.
  5. Phân tích chuyên sâu:

    • Độ phức tạp thời gian (trường hợp tốt nhất, xấu nhất, trung bình) và độ phức tạp không gian của từng thuật toán.

    • Ưu nhược điểm của từng thuật toán trong các tình huống thực tế (dữ liệu đã sắp xếp một phần, dữ liệu lớn, yêu cầu tính ổn định).

    • So sánh và lựa chọn thuật toán phù hợp cho từng bài toán cụ thể.

II. Thuật toán Đệ quy (20 phút):

  1. Khái niệm cơ bản:

    • Định nghĩa đệ quy, tư duy đệ quy, các yếu tố cần thiết của một hàm đệ quy (trường hợp cơ sở, bước đệ quy).
  2. Các ví dụ đơn giản:

    • Tính giai thừa, tính tổng dãy số, dãy Fibonacci.

    • Cài đặt, phân tích độ phức tạp.

  3. Các ví dụ nâng cao:

    • Tháp Hà Nội: Mô tả bài toán, cài đặt đệ quy, giải thích cách hoạt động.

    • Duyệt cây nhị phân (tiền thứ tự, trung thứ tự, hậu thứ tự): Cài đặt đệ quy, ứng dụng.

    • Tìm kiếm trong không gian trạng thái (ví dụ: bài toán 8 quân hậu).

  4. Kỹ thuật tối ưu đệ quy:

    • Ghi nhớ (memoization): Ý tưởng, cài đặt, phân tích hiệu quả.

    • Đệ quy đuôi (tail recursion): Ý tưởng, chuyển đổi đệ quy thường sang đệ quy đuôi, lợi ích.

  5. Vấn đề liên quan:

    • Tràn ngăn xếp (stack overflow): Nguyên nhân, cách phòng tránh và xử lý.

    • So sánh đệ quy và lặp: Ưu nhược điểm của từng phương pháp.

    • Đệ quy tương hỗ: Khái niệm, ví dụ, ứng dụng.

III. Chủ đề chuyên sâu (tùy chọn):

  1. Độ phức tạp thuật toán:

    • Big O notation, Omega notation, Theta notation.

    • Phân tích độ phức tạp thời gian và không gian chi tiết hơn.

    • Master Theorem (để phân tích độ phức tạp của các thuật toán chia để trị).

  2. Cấu trúc dữ liệu và giải thuật:

    • Các cấu trúc dữ liệu cơ bản (mảng, danh sách liên kết, stack, queue, cây, đồ thị).

    • Các thuật toán cơ bản trên các cấu trúc dữ liệu đó (tìm kiếm, duyệt, sắp xếp).

  3. Lập trình động:

    • Ý tưởng, các bài toán kinh điển (dãy con chung dài nhất, bài toán cái túi, quy hoạch tuyến tính).

    • So sánh với đệ quy, ứng dụng để tối ưu các thuật toán đệ quy.

Tuần 26:

Buổi 1 (45 phút):

1. Cấu trúc Dữ liệu Cơ bản

  • Tổng quan về Cấu trúc Dữ liệu:

    • Định nghĩa, phân loại (tuyến tính, phi tuyến), ứng dụng của cấu trúc dữ liệu.

    • Các khái niệm cơ bản: ADT (Abstract Data Type), interface, implementation.

    • Phân tích độ phức tạp thuật toán (Big O notation).

  • Cấu trúc Dữ liệu Tuyến tính:

    • Mảng (Array):

      • Định nghĩa, cách khai báo và sử dụng mảng trong lập trình.

      • Ưu nhược điểm của mảng.

      • Các thao tác cơ bản với mảng: truy cập, thêm, xóa, tìm kiếm phần tử.

    • Danh sách liên kết (Linked List):

      • Định nghĩa, các loại danh sách liên kết (đơn, đôi, vòng).

      • Cấu trúc node, cách cài đặt danh sách liên kết.

      • Ưu nhược điểm so với mảng.

      • Các thao tác cơ bản: thêm đầu/cuối, xóa đầu/cuối, duyệt danh sách.

    • Ngăn xếp (Stack) và Hàng đợi (Queue):

      • Định nghĩa, nguyên lý hoạt động (LIFO, FIFO).

      • Cài đặt bằng mảng và danh sách liên kết.

      • Các thao tác cơ bản: push, pop (stack), enqueue, dequeue (queue).

      • Ứng dụng của stack và queue.

  • Thực hành:

    • Cài đặt các cấu trúc dữ liệu trên bằng ngôn ngữ lập trình (ví dụ: C++, Java, Python).

    • Giải các bài tập đơn giản để củng cố kiến thức.

2. Cấu trúc Dữ liệu Nâng cao

  • Cấu trúc Dữ liệu Phi tuyến:

    • Cây (Tree):

      • Khái niệm cơ bản: node, cạnh, root, leaf, độ sâu, chiều cao.

      • Các loại cây: cây nhị phân, cây tìm kiếm nhị phân (BST), cây AVL, cây đỏ đen.

      • Cài đặt cây nhị phân, duyệt cây (tiền thứ tự, trung thứ tự, hậu thứ tự).

      • Các thao tác cơ bản trên BST: tìm kiếm, thêm, xóa node.

    • Đồ thị (Graph):

      • Khái niệm cơ bản: đỉnh, cạnh, đồ thị vô hướng, đồ thị có hướng.

      • Cách biểu diễn đồ thị (ma trận kề, danh sách kề).

      • Các thuật toán duyệt đồ thị (DFS, BFS).

      • Ứng dụng của đồ thị.

    • Bảng băm (Hash Table):

      • Khái niệm, hàm băm, xử lý va chạm.

      • Cài đặt bảng băm.

      • Ưu nhược điểm, ứng dụng.

  • Các chủ đề nâng cao khác (nếu thời gian cho phép):

    • Cây Heap: Cấu trúc, các thao tác cơ bản, ứng dụng (Heap Sort).

    • Cây Trie: Cấu trúc, ứng dụng (lưu trữ từ điển, tìm kiếm).

    • Cấu trúc dữ liệu phân tán.

  • Thực hành:

    • Cài đặt các cấu trúc dữ liệu nâng cao.

    • Giải các bài tập phức tạp hơn, áp dụng các thuật toán đã học.

Buổi 2 (45 phút):

I. Thuật toán Xử lý Chuỗi:

  1. Giới thiệu về chuỗi:

    • Khái niệm, biểu diễn chuỗi trong ngôn ngữ lập trình.

    • Các phép toán cơ bản với chuỗi: độ dài, truy cập phần tử, duyệt chuỗi.

  2. Các thao tác cơ bản với chuỗi:

    • Cắt chuỗi (substring, slice).

    • Nối chuỗi (concatenate).

    • Tìm kiếm trong chuỗi (indexOf, find, contains).

    • So sánh chuỗi (compare, equals).

  3. Thuật toán xử lý chuỗi nâng cao:

    • Đếm số lần xuất hiện ký tự (count).

    • Tìm kiếm mẫu trong chuỗi (indexOf, find, contains, regular expression).

    • So sánh chuỗi không phân biệt hoa thường (equalsIgnoreCase, toLowerCase/toUpperCase).

    • Xử lý chuỗi Unicode và các vấn đề liên quan đến encoding.

    • Các hàm xử lý chuỗi khác (split, replace, trim).

  4. Chủ đề chuyên sâu:

    • Biểu thức chính quy (Regular Expression): tìm hiểu cú pháp và ứng dụng trong tìm kiếm, thay thế chuỗi.

    • Thuật toán tìm kiếm chuỗi: Knuth-Morris-Pratt (KMP), Boyer-Moore, Rabin-Karp.

    • Xử lý văn bản lớn: các kỹ thuật xử lý và phân tích dữ liệu văn bản lớn.

    • Phân tích cú pháp và ngữ nghĩa của ngôn ngữ tự nhiên (Natural Language Processing - NLP).

II. Thuật toán Đồ thị:

  1. Giới thiệu về đồ thị:

    • Định nghĩa đồ thị: đỉnh, cạnh, đồ thị vô hướng, đồ thị có hướng, đồ thị có trọng số.

    • Các khái niệm liên quan: bậc của đỉnh, đường đi, chu trình, thành phần liên thông.

    • Cách biểu diễn đồ thị: ma trận kề, danh sách kề.

    • Phân loại đồ thị: cây, đồ thị đầy đủ, đồ thị hai phía.

  2. Thuật toán tìm kiếm đường đi:

    • Tìm kiếm theo chiều rộng (Breadth-First Search - BFS): ý tưởng, cài đặt, ứng dụng.

    • Tìm kiếm theo chiều sâu (Depth-First Search - DFS): ý tưởng, cài đặt, ứng dụng.

    • So sánh BFS và DFS.

  3. Thuật toán tìm cây khung nhỏ nhất:

    • Thuật toán Prim: ý tưởng, cài đặt, phân tích độ phức tạp.

    • Thuật toán Kruskal: ý tưởng, cài đặt (sử dụng Disjoint-set), phân tích độ phức tạp.

    • So sánh thuật toán Prim và Kruskal.

  4. Chủ đề chuyên sâu:

    • Các thuật toán tìm đường đi ngắn nhất: Dijkstra, Bellman-Ford, Floyd-Warshall.

    • Thuật toán tô màu đồ thị.

    • Bài toán đường đi Euler và đường đi Hamilton.

    • Lưu lượng cực đại và cắt cực tiểu trên đồ thị.

    • Ứng dụng của đồ thị trong các lĩnh vực khác nhau (mạng xã hội, hệ thống giao thông, trí tuệ nhân tạo).

Tuần 27: Thực hành các thuật toán học ở tuần 25 & 26

Mục tiêu:

  • Củng cố kiến thức về các thuật toán Python đã học trong tuần 25 & 26.

  • Rèn luyện kỹ năng áp dụng các thuật toán vào các bài toán thực tế.

  • Nâng cao khả năng giải quyết vấn đề và tư duy logic lập trình.

Buổi 1 (45 phút):

1. Ôn tập các thuật toán tìm kiếm cơ bản (20 phút)

  • Nhắc lại khái niệm và cách thức hoạt động của thuật toán tìm kiếm tuyến tính (Linear Search) và thuật toán tìm kiếm nhị phân (Binary Search).

  • Giải quyết các bài tập thực hành liên quan đến tìm kiếm trong mảng, danh sách, chuỗi.

  • So sánh hiệu quả của các thuật toán tìm kiếm khác nhau.

2. Thực hành thuật toán sắp xếp cơ bản (25 phút)

  • Viết chương trình áp dụng thuật toán Bubble Sort, Selection Sort, Insertion Sort để sắp xếp dữ liệu.

  • Phân tích độ phức tạp thời gian và không gian của các thuật toán sắp xếp.

  • Đánh giá hiệu quả và lựa chọn thuật toán sắp xếp phù hợp cho từng bài toán.

Buổi 2 (45 phút):

1. Thực hành thuật toán sắp xếp nâng cao (25 phút)

  • Viết chương trình áp dụng thuật toán Merge Sort và Quick Sort để sắp xếp dữ liệu.

  • Phân tích độ phức tạp thời gian và không gian của các thuật toán sắp xếp nâng cao.

  • So sánh hiệu quả và lựa chọn thuật toán sắp xếp phù hợp cho từng bài toán.

2. Thực hành thuật toán đệ quy (20 phút)

  • Viết các hàm đệ quy để giải quyết các bài toán thực tế (ví dụ: tính giai thừa, tính tổng các số trong dãy, đếm số lượng node trong cây).

  • Phân tích độ phức tạp của các thuật toán đệ quy.

  • Luyện tập viết các hàm đệ quy hiệu quả và tránh trường hợp đệ quy vô hạn.

Lưu ý:

  • Khuyến khích học viên tự sáng tạo các bài toán thực hành để áp dụng các thuật toán đã học.

  • Tham khảo tài liệu và các ví dụ thực tế để nâng cao kỹ năng giải quyết vấn đề bằng thuật toán Python.

Tuần 28 & 29 (Tuần cuối khoá học): Version control, git, cách viết file README cho project

Mục tiêu:

  • Giới thiệu các khái niệm cơ bản về quản lý phiên bản và tầm quan trọng của nó trong lập trình.

  • Rèn luyện kỹ năng sử dụng Git, công cụ quản lý phiên bản phổ biến nhất hiện nay.

  • Nâng cao khả năng cộng tác và chia sẻ dự án hiệu quả với Git.

  • Hướng dẫn cách viết file README để giới thiệu dự án một cách rõ ràng và chuyên nghiệp.

Lưu ý: Syllabus này giả định rằng học viên đã có kiến thức cơ bản về lập trình. Việc học quản lý phiên bản, Git và cách viết file README đòi hỏi sự tập trung cao độ, nỗ lực tự học hỏi thêm và thực hành thường xuyên từ học viên.

Tuần 28:

Buổi 1 (45 phút):

1. Giới thiệu về quản lý phiên bản (25 phút)

  • Khái niệm về quản lý phiên bản và lợi ích của việc sử dụng nó.

  • So sánh các công cụ quản lý phiên bản phổ biến: Git, Mercurial, SVN.

  • Giới thiệu Git, công cụ quản lý phiên bản được sử dụng rộng rãi nhất hiện nay.

2. Cài đặt và cấu hình Git cơ bản (20 phút)

  • Cài đặt Git trên hệ điều hành của học viên.

  • Tạo tài khoản Git và cấu hình Git cho người dùng.

  • Khởi tạo kho lưu trữ Git cho dự án.

Buổi 2 (45 phút):

1. Các lệnh Git cơ bản (25 phút)

  • Lệnh git status để kiểm tra trạng thái thay đổi của tệp tin trong dự án.

  • Lệnh git add để thêm tệp tin vào vùng dàn dựng (staging area).

  • Lệnh git commit để lưu trữ thay đổi và tạo phiên bản mới cho dự án.

  • Lệnh git log để xem lịch sử commit của dự án.

2. Giới thiệu về branching và merging (20 phút)

  • Khái niệm về branching và merging trong Git.

  • Tạo branch mới từ branch hiện tại bằng lệnh git branch.

  • Thay đổi branch bằng lệnh git checkout.

  • Gộp branch mới vào branch chính bằng lệnh git merge.

Tuần 29:

Buổi 1 (45 phút):

1. Thực hành các lệnh Git nâng cao (25 phút)

  • Lệnh git diff để xem sự khác biệt giữa các phiên bản của tệp tin.

  • Lệnh git reset để quay lại phiên bản trước đó của dự án.

  • Lệnh git rebase để thay đổi lịch sử commit của dự án.

  • Lệnh git tag để tạo tag cho các phiên bản quan trọng của dự án.

2. Giới thiệu về remote repository và pull requests (20 phút)

  • Khái niệm về remote repository và workflow Git cơ bản.

  • Tạo remote repository trên dịch vụ lưu trữ mã nguồn (ví dụ: GitHub, GitLab).

  • Chia sẻ dự án Git với người khác bằng lệnh git push.

  • Tạo pull request để đề xuất thay đổi cho remote repository.

Buổi 2 (45 phút):

1. Cách viết file README cho dự án (25 phút)

  • Tầm quan trọng của file README trong dự án.

  • Cấu trúc cơ bản của file README.

  • Viết nội dung cho file README: giới thiệu dự án, hướng dẫn cài đặt, sử dụng, cấu hình, giải quyết vấn đề thường gặp.

2. Thực hành viết file README cho dự án (20 phút)

  • Yêu cầu học viên thực hành viết file README cho dự án của mình.

  • Cung cấp hướng dẫn và hỗ trợ khi cần thiết.

  • Đánh giá kết quả thực hành và chia sẻ kinh nghiệm học hỏi.

Lưu ý:

  • Khuyến khích học viên tự học hỏi thêm về các tính năng nâng cao của Git, ví dụ như Git Flow, Git Large File Support.

  • Tham khảo tài liệu hướng dẫn và các ví dụ thực tế để nâng cao kỹ năng sử dụng Git và viết file README hiệu quả.

  • Luyện tập thường xuyên để thành thạo việc quản lý phiên bản cho dự án bằng Git và tạo file README chuyên nghiệp.

Tổng hợp quiz của 29 tuần:

  1. https://www.quizne.com/quiz/python-intensive-course-quiz-1

  2. https://www.quizne.com/quiz/python-intensive-course-quiz-2

  3. https://www.quizne.com/quiz/python-intensive-course-quiz-3

  4. https://www.quizne.com/quiz/python-intensive-course-quiz-4cii1v

  5. https://www.quizne.com/quiz/python-intensive-course-quiz-5

  6. https://www.quizne.com/quiz/python-intensive-course-quiz-6

  7. https://www.quizne.com/quiz/python-intensive-course-quiz-7

  8. https://www.quizne.com/quiz/python-intensive-course-quiz-8

  9. https://www.quizne.com/quiz/python-intensive-course-quiz-9

  10. https://www.quizne.com/quiz/python-intensive-course-quiz-10

  11. https://www.quizne.com/quiz/python-intensive-course-quiz-11

  12. https://www.quizne.com/quiz/html-lesson-python-intensive-couse-quiz-12

  13. https://www.quizne.com/quiz/css-lesson-python-intensive-course-quiz-13

  14. https://www.quizne.com/quiz/python-intensive-course-quiz-14

  15. https://www.quizne.com/quiz/python-intensive-course-quiz-15

  16. https://www.quizne.com/quiz/python-intensive-course-quiz-16

  17. https://www.quizne.com/quiz/python-intensive-course-quiz-17

  18. https://www.quizne.com/quiz/python-intensive-course-quiz-18

  19. https://www.quizne.com/quiz/python-intensive-course-quiz-19

  20. https://www.quizne.com/quiz/python-intensive-course-quiz-20

  21. https://www.quizne.com/quiz/python-intensive-course-quiz-21

  22. https://www.quizne.com/quiz/python-intensive-course-quiz-22

  23. https://www.quizne.com/quiz/python-intensive-course-quiz-23

  24. https://www.quizne.com/quiz/python-intensive-course-quiz-24

  25. https://www.quizne.com/quiz/python-intensive-course-quiz-25

  26. https://www.quizne.com/quiz/python-intensive-course-quiz-26

  27. https://www.quizne.com/quiz/python-intensive-course-quiz-27

  28. https://www.quizne.com/quiz/python-intensive-course-quiz-28

  29. https://www.quizne.com/quiz/python-intensive-course-quiz-29