# Lập trình App Producer

## Tổng quan lộ trình

💡 <mark style="color:red;">**App Producer**</mark> là lộ trình học gồm 3 khóa học từ cơ bản đến nâng cao để khám phá khả năng mạnh mẽ của ngôn ngữ lập trình Python để xây dựng ứng dụng và giao diện đồ họa sử dụng Qt Designer.&#x20;

Qt Designer là một công cụ hữu ích cho việc thiết kế giao diện đồ họa, và khi kết hợp với Python, chúng ta có thể tạo ra các ứng dụng chuyên nghiệp với giao diện tương tác hấp dẫn. Đặc biệt, khóa học cung cấp cho học viên các bài tập thực tế và dự án cuối khóa để áp dụng kiến thức đã học vào việc tạo ra các ứng dụng thực tế, tăng cường kỹ năng lập trình của mình.

{% tabs %}
{% tab title="Level" %} <img src="https://2157902150-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2imXTLzYOm6RrXuhyoWW%2Fuploads%2FKzaeE8n02rkTUG4RmQqe%2Fimage.png?alt=media&#x26;token=7ae1a437-dea3-476e-9535-ccd76e259f9d" alt="" data-size="line"> 3 LEVEL: BASIC - ADVANCED - INTENSIVE
{% endtab %}

{% tab title="TỔNG SỐ BUỔI HỌC CỦA LỘ TRÌNH" %}
📖 42 BUỔI HỌC

Tương ứng: 14 BUỔI HỌC / 1 KHÓA
{% endtab %}

{% tab title="TỔNG SỐ GIỜ HỌC" %} <img src="https://2157902150-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2imXTLzYOm6RrXuhyoWW%2Fuploads%2F57Kg6KuxyMFAK1geWLVf%2Fimage.png?alt=media&#x26;token=f5cfc210-9543-4996-a8a0-f84763c7cb03" alt="" data-size="line">84 GIỜ HỌC

Tương ứng: 2 GIỜ/BUỔI
{% endtab %}

{% tab title="TỔNG SỐ HỌC VIÊN" %} <img src="https://2157902150-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2imXTLzYOm6RrXuhyoWW%2Fuploads%2F6TTSmF0GxrwibsIbAFHU%2Fimage.png?alt=media&#x26;token=c71f37e3-b3e1-4ae8-b2d8-7f4242d2f1cc" alt="" data-size="line">Số học viên: 8 - 10 bạn
{% endtab %}
{% endtabs %}

## Mục tiêu lộ trình

<details>

<summary>Tư duy logic</summary>

Học sinh biết phân tích và giải quyết các vấn đề phức tạp trở nên đơn giản và hiệu quả.

</details>

<details>

<summary>Tư duy lập trình</summary>

Học sinh nắm được các **khái niệm trong lập trình** thông qua quá trình phát triển ứng dụng trên smartphone và kiến thức về UI UX.

</details>

<details>

<summary>Kỹ năng mềm</summary>

Học sinh tự tin giao tiếp, thuyết trình trước đám đông. Tích cực, hoà đồng và có trách nhiệm.

</details>

<details>

<summary>Tạo ra sản phẩm</summary>

Học sinh có thể **tự làm ra những ứng dụng tiện ích**, với giao diện đẹp, dễ dàng thao tác sử dụng.

</details>

## Ai phù hợp với khóa học này?

* Độ tuổi: Trung học cơ sở.
* Thành thạo các thao tác cơ bản với máy tính, tiếng anh cơ bản.
* Không bị các khiếm khuyết (Khiếm thính, tự kỷ, tăng động, ...)
* Có tư duy phân tích về lập trình cơ bản

## Hình thức học tập

Mô hình học tập và phương pháp giảng dạy của mindX vô cùng đổi mới và sáng tạo nhưng vẫn giữ lại những ưu điểm to lớn của mô hình học tập truyền thống dựa theo hai yếu tố chính: **project-driven, mentor sessions (Mentorship)**.

{% tabs %}
{% tab title="Projects" %}
Tại mindX, học sinh sẽ được học tập và tiếp thu kiến thức bằng việc thực hành dựa trên các dự án, bài tập mẫu vô cùng dễ hiểu và trực quan, giúp học sinh dễ dàng tiếp cận và thực sự hiểu vấn đề, tránh nhắc tới những khái niệm lập trình khô khan và khó hiểu bằng cách trực quan hoá thông qua dự án mẫu.
{% endtab %}

{% tab title="Mentorship" %}
Những buổi học tại trung tâm, học sinh nhận được sự hỗ trợ nhiệt tình, cẩn thận và tỉ mì từ chính giảng viên lớp học. Ngoài ra, tính kết nối còn nhân lên thông qua các kênh giao tiếp (group trao đổi, group chat) giúp học sinh và giảng viên dễ dàng trao đổi và nắm bắt tình hình học tập, cải thiện kiến thức.
{% endtab %}
{% endtabs %}

## Nội dung lộ trình

{% tabs %}
{% tab title="App Producer Basic" %}
Làm quen và phát triển các ứng dụng cơ bản với Thunkable

### **Mục tiêu khóa học**

✓ Hiếu được quy trình vận hành hệ thống&#x20;

✓ Phát triển tư duy lập trình thông qua ngôn ngữ lập trình bậc cao Python&#x20;

✓ Kiểm soát đầu vào và hồi đáp giữa các thành phần&#x20;

✓ Xây dựng các module nhỏ trong hệ thống

### Chất lượng khoá học

* **Khá**
  * Làm quen với máy tính
    * Học sinh biết cách sử dụng máy tính cơ bản như:
      * Có thể tải về, cài đặt cũng như kiểm tra thông tin các phần mềm có an toàn hay không.
      * Cách gõ nhiều ngón để tăng tốc độ gõ phím.
      * Biết thư điện tử là gì, có thể đăng ký tài khoản học tập trên App Inventor, đưa dự án lên mạng.
* **Tốt**
  * Phân tích một ứng dụng như thế nào?
    * Học sinh biết được cách phân tách các thành phần chính bắt buộc phải có trong ứng dụng:
      * Biết được bối cảnh xảy ra ở đâu, khi nào.
      * Nắm bắt được toàn bộ các bố cục, các thành phần, các tính năng bắt buộc phải có để có thể tạo nên một ứng dụng.
    * Học sinh tự phân tích được các chức năng cần có để khiến ứng dụng trở nên bắt mắt và thu hút người dùng:
      * Tự xây dựng các tính năng, giao diện và thuộc tính của mỗi ứng dụng.
      * Nắm bắt được các kiến thức về toàn học, vật lý và tư duy logic trong lập trình.
      * Biết được mỗi một vật thể đều có rất nhiều thuộc tính khác nhau và phải biết sử dụng mỗi thuộc tính vào đúng chỗ trong bài lập trình của mình để vật thể phát huy tác dụng.
    * Học sinh biết được các khối lệnh trong phần Blocks.
      * Học sinh hiểu rõ được chức năng của từng câu lệnh và biết sử dụng đúng cách
      * Biết rõ được cách lắp ghép các câu lệnh đúng vị trí với nhau để bài lập trình có thể chạy được và không bị lỗi.
* **Xuất sắc**
  * Sáng Tạo
    * Học sinh làm chủ được các kỹ thuật lập trình ở mục 1, 2 ở mức khá trở lên. Từ đó sáng tạo dựa trên hiểu biết để xây dựng các ứng dụng khác.
      {% endtab %}

{% tab title="App Producer Advanced" %}
Thiết kế ứng dụng đẹp, thân thiện và nhiều tính năng phục vụ cho người dùng

### **Mục tiêu khóa học**

✓ Hiểu được các tiêu chuẩn của hệ thống số phức tạp

✓ Đảm bảo hiệu năng của sản phẩm bằng cách tối ưu quy trình giữa các mô-đun

✓ Hiểu được tính tùy biến và tương tác thông qua việc thực hành xây dựng giao diện đáp ứng được nhu cầu và gây hứng thú với người dùng, đảm bảo các thông tin được tổ chức tốt, đưa vào hệ thống một cách dễ dàng

### Chất lượng khoá học

* **Khá**
  * Làm quen với máy tính
    * Học sinh biết cách sử dụng máy tính cơ bản như:
      * Có thể tải về, cài đặt cũng như kiểm tra thông tin các phần mềm có an toàn hay không.
      * Cách gõ nhiều ngón để tăng tốc độ gõ phím.
      * Biết thư điện tử là gì, có thể đăng ký tài khoản học tập trên App Thunkable, đưa dự án lên mạng.
* **Tốt**
  * Phân tích một ứng dụng như thế nào?
    * Học sinh biết được cách phân tách các thành phần chính bắt buộc phải có trong ứng dụng:
      * Biết được bối cảnh xảy ra ở đâu, khi nào.
      * Nắm bắt được toàn bộ các bố cục, các thành phần, các tính năng bắt buộc phải có để có thể tạo nên một ứng dụng.
    * Học sinh tự phân tích được các chức năng cần có để khiến ứng dụng trở nên bắt mắt và thu hút người dùng:
      * Tự xây dựng các tính năng, giao diện và thuộc tính của mỗi ứng dụng.
      * Nắm bắt được các kiến thức về toàn học, vật lý và tư duy logic trong lập trình.
      * Biết được mỗi một vật thể đều có rất nhiều thuộc tính khác nhau và phải biết sử dụng mỗi thuộc tính vào đúng chỗ trong bài lập trình của mình để vật thể phát huy tác dụng.
    * Học sinh biết được các khối lệnh trong phần Blocks.
      * Học sinh hiểu rõ được chức năng của từng câu lệnh và biết sử dụng đúng cách
      * Biết rõ được cách lắp ghép các câu lệnh đúng vị trí với nhau để bài lập trình có thể chạy được và không bị lỗi.
* **Xuất sắc**
  * Sáng Tạo
    * Học sinh làm chủ được các kỹ thuật lập trình ở mục 1, 2 ở mức khá trở lên. Từ đó sáng tạo dựa trên hiểu biết để xây dựng các ứng dụng khác.
      {% endtab %}

{% tab title="App Producer Intensive" %}
Phát triển ứng dụng có ảnh hướng đến cộng đồng và xã hội

### **Mục tiêu khóa học**

✓ Hiểu được các tiêu chuẩn của một sản phẩm số

✓ Hiểu được các nguyên tắc phát triển sản phẩm số

✓ Thực hành xây dựng các sản phẩm số có khả năng nâng cấp và bảo hành trong trung hạn

### Chất lượng khoá học

* **Khá**
  * Làm quen với máy tính
    * Học sinh biết cách sử dụng máy tính cơ bản như:
      * Có thể tải về, cài đặt cũng như kiểm tra thông tin các phần mềm có an toàn hay không.
      * Cách gõ nhiều ngón để tăng tốc độ gõ phím.
      * Biết thư điện tử là gì, có thể đăng ký tài khoản học tập trên App Thunkable, đưa dự án lên mạng.
* **Tốt**
  * Phân tích một ứng dụng như thế nào?
    * Học sinh biết được cách phân tách các thành phần chính bắt buộc phải có trong ứng dụng:
      * Biết được bối cảnh xảy ra ở đâu, khi nào.
      * Nắm bắt được toàn bộ các bố cục, các thành phần, các tính năng bắt buộc phải có để có thể tạo nên một ứng dụng.
    * Học sinh tự phân tích được các chức năng cần có để khiến ứng dụng trở nên bắt mắt và thu hút người dùng:
      * Tự xây dựng các tính năng, giao diện và thuộc tính của mỗi ứng dụng.
      * Nắm bắt được các kiến thức về toàn học, vật lý và tư duy logic trong lập trình.
      * Biết được mỗi một vật thể đều có rất nhiều thuộc tính khác nhau và phải biết sử dụng mỗi thuộc tính vào đúng chỗ trong bài lập trình của mình để vật thể phát huy tác dụng.
    * Học sinh biết được các khối lệnh trong phần Blocks.
      * Học sinh hiểu rõ được chức năng của từng câu lệnh và biết sử dụng đúng cách
      * Biết rõ được cách lắp ghép các câu lệnh đúng vị trí với nhau để bài lập trình có thể chạy được và không bị lỗi.
    * Nắm được kiến thức về API:
      * Sử dụng và lấy được thông tin từ API.
* **Xuất sắc**
  * Sáng Tạo
    * Học sinh làm chủ được các kỹ thuật lập trình ở mục 1, 2 ở mức khá trở lên. Từ đó sáng tạo dựa trên hiểu biết để xây dựng các ứng dụng khác.
  * Kiến thức:
    * Có khả năng tự tìm hiểu thêm kiến thức về Json
      {% endtab %}
      {% endtabs %}

## Nội dung khóa học

{% tabs %}
{% tab title="Basic" %}

<table><thead><tr><th width="113.66666666666666">Buổi học</th><th width="409">Nội dung</th><th>Hình thức học tập</th></tr></thead><tbody><tr><td>Buổi 1</td><td><p><strong>Thế giới ngôn ngữ máy và xứ Python kỳ diệu</strong></p><p>Ngôn ngữ máy là gì? </p><p>Ngôn ngữ lập trình bậc cao là gì? </p><p>Giới thiệu và cài đặt môi trường lập trình python </p><p>Một số câu lệnh python đầu tiên</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 2</td><td><p><strong>Sức mạnh của biến và kiểu dữ liệu trong Python</strong> </p><p>Biến và lệnh gán </p><p>Kiểu dữ liệu </p><p>Từ khóa trong python </p><p>Quy tắc đặt tên biến</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 3</td><td><p><strong>Nói chuyện với máy tính</strong> </p><p>Câu lệnh vào ra </p><p>Toán tử </p><p>Chuyển đổi kiểu dữ liệu </p><p>Câu lệnh lồng</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 4</td><td><p><strong>Phân định đúng sai</strong> </p><p>Biểu thức logic </p><p>Câu điều kiện </p><p>Giới thiệu về thuật toán </p><p>Giới thiệu sơ đồ khối và cách vẽ</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 5</td><td><p><strong>Kiểm tra</strong></p><ul><li>Ôn tập lại kiến thức</li><li>Kiểm tra bao gồm:</li><li>Nhập xuất dữ liệu</li><li>Kiểm tra về kiểu dữ liệu</li><li>Thao tác xử lí biến số với toán tử</li><li>Thực hành xây dựng đoạn mã lập trình dựa trên sơ đồ khối</li></ul></td><td>Học tại lớp</td></tr><tr><td>Buổi 6</td><td><p><strong>Vòng lặp hữu hạn: chương trình sẽ làm việc bao nhiêu lần?</strong> </p><p>Vòng lặp for </p><p>Câu lệnh range </p><p>Thực hành viết thuật toán, vẽ sơ đồ khối</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 7</td><td><p><strong>Vòng lặp vô hạn: chương trình sẽ làm việc đến khi nào?</strong> </p><p>Câu lệnh while </p><p>Cấu trúc lập trình </p><p>Thực hành viết thuật toán, vẽ sơ đồ khối</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 8</td><td><p><strong>Danh sách được giải mã: Định nghĩa, truy cập phần tử danh sách</strong> </p><p>Danh sách là gì? Duyệt phần tử danh sách</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 9</td><td><p><strong>Danh sách và hơn thế nữa: Chỉnh sửa phần tử danh sách</strong> </p><p>Một số lệnh làm việc với danh sách </p><p>Thực hành thao tác thêm, xóa, sửa các phần tử trong danh sách</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 10</td><td><p><strong>Kiểm tra</strong></p><ul><li>Ôn tập kiến thức cũ</li><li>Kiểm tra kiến thức bao gồm:</li><li>Kiểm tra kiến thức về mảng</li><li>Thao tác với mảng</li><li>Xử lí dữ liệu trong mảng kết hợp câu điều kiện, vòng lặp</li></ul></td><td>Học tại lớp</td></tr><tr><td>Buổi 11</td><td><p><strong>Xâu (chuỗi) ký tự</strong> </p><p>Xâu (chuỗi) là gì? </p><p>Một số lệnh làm việc với xâu (chuỗi)</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 12</td><td><p><strong>Hàm: Chia nhỏ công việc</strong> </p><p>Hàm là gì? Thiết lập hàm không có giá trị trả về </p><p>Truyền tham số vào hàm và phạm vi của tham số</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 13</td><td><p><strong>Hàm với giá trị mang lại</strong> </p><p>Thiết lập hàm có giá trị trả về </p><p>Một số hàm thiết kế sẵn trong python</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 14</td><td><strong>Kiểm tra cuối khóa - Hackathon</strong></td><td>Tại lớp</td></tr></tbody></table>
{% endtab %}

{% tab title="Advanced" %}

<table><thead><tr><th width="117.66666666666666">Buổi học</th><th width="421">Nội dung</th><th>Hình thức học tập</th></tr></thead><tbody><tr><td>Buổi 1</td><td><strong>Ôn tập cú pháp Python</strong></td><td>Học tại lớp</td></tr><tr><td>Buổi 2</td><td><p><strong>Làm quen với Class và Object</strong> </p><p>Định nghĩa class và object </p><p>Tạo một class đơn giản và sử dụng nó để tạo ra một object</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 3</td><td><p><strong>Năng lực hóa Class với Phương thức và Thuộc tính</strong> </p><p>Phương thức và thuộc tính trong OOP </p><p>Tạo các phương thức và thuộc tính cho một class </p><p>Tạo các object từ class và sử dụng phương thức và thuộc tính</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 4</td><td><p><strong>Kế thừa - Tính chất vĩnh hằng trong OOP</strong> </p><p>Giới thiệu tính chất Inheritance (Kế thừa) </p><p>Giới thiệu cách tạo một class con từ một class cha </p><p>Override phương thức trong class con</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 5</td><td><p><strong>Đa dạng hóa với Đa hình trong OOP</strong> </p><p>Giới thiệu tính chất Polymorphism (Đa hình) </p><p>Giới thiệu cách sử dụng đa hình trong OOP</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 6</td><td><p><strong>Kiểm tra kiến thức Python và OOP</strong></p><ul><li>Phân tích đề bài xác định object và đối tượng class cha - con</li><li>Thực hành khởi tạo class và object</li><li>Sử dụng tính chất kế thừa và đa hình</li></ul></td><td>Học tại lớp</td></tr><tr><td>Buổi 7</td><td><p><strong>Phát triển phần mềm máy tính: Thiết kế giao diện (P1)</strong> </p><p>Giới thiệu về công cụ xây dựng giao diện cho app desktop </p><p>Cài đặt và thiết lập môi trường lập trình GUI </p><p>Hướng dẫn cách sử dụng công cụ để tạo giao diện</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 8</td><td><p><strong>Phát triển phần mềm số: Thiết kế giao diện (P2)</strong> </p><p>Hướng dẫn cách tạo các thành phần Widget trong thiết kế giao diện (P1) </p><p>Thực hành thiết kế giao diện với công cụ (P1)</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 9</td><td><p><strong>Phát triển phần mềm số: Thiết kế giao diện (P3)</strong> </p><p>Tìm hiểu về các thành phần layout trong thiết kế giao diện Thực hành thiết kế giao diện với công cụ (P2)</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 10</td><td><strong>Kết nối tinh tế giữa giao diện và mã nguồn Python</strong> Kết nối giao diện với mã Python Hướng dẫn cách kết nối các thành phần giao diện với mã Python bằng cách sử dụng tên biến Sự kiện và xử lí sự kiện trong Python</td><td>Học tại lớp</td></tr><tr><td>Buổi 11</td><td><p><strong>Lên ý tưởng sản phẩm cuối khóa</strong> </p><p>• Overview về buổi demo cuối khóa </p><p>• Hướng dẫn học sinh lên ý tưởng cuối khóa </p><p>• Phân tích, đánh giá từng sản phẩm </p><ul><li>Ưu, nhược điểm </li><li>Độ khả thi</li></ul></td><td>Tự thực hành tại nhà</td></tr><tr><td>Buổi 12-13</td><td><strong>Thực hành thiết kế giao diện phần mềm số</strong></td><td></td></tr><tr><td>Buổi 14</td><td><strong>Thuyết trình sản phẩm cuối khoá</strong></td><td>Tại lớp</td></tr></tbody></table>
{% endtab %}

{% tab title="Intensive" %}

<table><thead><tr><th width="112.66666666666666">Buổi học</th><th width="401">Nội dung</th><th>Hình thức học tập</th></tr></thead><tbody><tr><td>Buổi 1</td><td><strong>Ôn tập cú pháp Python &#x26; kiến thức OOP</strong></td><td>Học tại lớp</td></tr><tr><td>Buổi 2</td><td><p><strong>Danh sách đối tượng trong Python</strong> </p><p>Ôn tập về mảng </p><p>Mảng object trong Python </p><p>Thực hành duyệt và xử lí phần tử trong mảng</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 3</td><td><p><strong>Xác định đối tượng</strong> </p><p>Phân tích đề bài và xác định đối tượng </p><p>Thực hành tạo class (class cha nếu có) </p><p>Thực hành tạo object</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 4</td><td><p></p><p><strong>Quản lí danh sách đối tượng</strong> </p><p>Ôn tập kiến thức hàm </p><p>Viết chương trình quản lí danh sách học sinh với điểm số</p><ul><li>Tạo mảng với mục đích chứa danh sách các học sinh</li><li>Duyệt qua các học sinh trong danh sách</li><li>Thêm học sinh vào trong mảng - thông tin nhập từ bàn phím bao gồm tên, điểm ố</li><li>Cập nhật lại thông tin học sinh trong danh sách</li><li>Xóa các học sinh trong danh sách</li></ul></td><td>Học tại lớp</td></tr><tr><td>Buổi 5</td><td><p><strong>Khám phá thế giới dữ liệu đa dạng</strong> </p><p>Khái niệm và chức năng của Json </p><p>Làm việc với Json trong Python</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 6</td><td><p><strong>Quản lí cùng Json</strong> </p><p>Thiết kế file chứa thông tin của đối tượng học sinh </p><p>Cập nhật lại chương trình quản lí học sinh:</p><ul><li>Tạo mảng và đọc các phần tử học sinh từ Json ghi vào mảng</li><li>Cập nhật và lưu lại Json sau khi có bất kì thao tác cập nhật nào đói với mảng</li></ul></td><td>Học tại lớp</td></tr><tr><td>Buổi 7</td><td><p><strong>Xây dựng giao diện</strong> </p><p>Ôn tập lại thành phần trong công cụ xây dựng giao diện </p><p>Xây dựng GUI cho hệ thống bao gồm các trang:</p><ul><li>Trang quản lí: Hiển thị danh sách đối tượng, các button insert, update, delete</li><li>Trang thông tin chi tiết của đối tượng: sử dụng để nhập thông tin đối tượng khi cần update và delete</li></ul></td><td>Học tại lớp</td></tr><tr><td>Buổi 8</td><td><p></p><p><strong>Xử lý sự kiện và tương tác với giao diện</strong></p><ul><li>Xử lý sự kiện và tương tác với giao diện thông qua thư viện của Python</li><li>Hướng dẫn cách xử lý sự kiện khi người dùng tương tác với các thành phần giao diện, như click button, chọn một item trong list view, v.v…</li></ul></td><td>Học tại lớp</td></tr><tr><td>Buổi 9</td><td><p><strong>Kết nối giao diện với ứng dụng</strong> </p><p>Kết nối phần giao diện và chương trình quản lí đối tượng thông qua sự kiện </p><p>Thêm validation các thông tin input vào cho hệ thống </p><p>Thêm chức năng xếp hạng điểm số trong ứng dụng</p></td><td>Học tại lớp</td></tr><tr><td>Buổi 10</td><td><p><strong>Lên ý tưởng sản phẩm cuối khóa</strong> </p><p>• Overview về buổi demo cuối khóa </p><p>• Hướng dẫn học sinh lên ý tưởng cuối khóa </p><p>• Phân tích, đánh giá từng sản phẩm</p><ul><li>Ưu, nhược điểm</li><li>Độ khả thi</li></ul></td><td>Học tại lớp</td></tr><tr><td>Buổi 11, 12</td><td><p><strong>Thực hành hoàn thiện sản phẩm cuối khoá</strong> </p><p>• Xây dựng tính năng cho sản phẩm</p></td><td>Tự thực hành tại nhà</td></tr><tr><td>Buổi 13</td><td><p><strong>Nghiệm thu sản phẩm</strong> </p><p>• Thiết kế slide thuyết trình sản phẩm </p><p>• Thuyết trình thử sản phẩm </p><p>• Góp ý sửa đổi</p></td><td></td></tr><tr><td>Buổi 14</td><td><strong>Thuyết trình sản phẩm cuối khoá</strong></td><td>Tại lớp</td></tr></tbody></table>
{% endtab %}
{% endtabs %}
