Syllabus học Java web trong 70 buổi
Table of contents
- Giai đoạn 1: Nền tảng Java (24 buổi)
- Buổi 1: Cài đặt môi trường và cú pháp cơ bản
- Buổi 2: Cấu trúc điều khiển và vòng lặp
- Buổi 3: Mảng và chuỗi
- Buổi 4: Lớp và đối tượng
- Buổi 5: Tính kế thừa và tính đa hình
- Buổi 6: Tính đóng gói và các thành phần của lớp
- Buổi 7: Collections Framework (List)
- Buổi 8: Collections Framework (Set và Map)
- Buổi 9: Generics và Exception Handling
- Buổi 10: Lambda Expressions và Stream API
- Buổi 11: File I/O và Regular Expressions
- Buổi 12: Date/Time API
- Giai đoạn 2: Phát triển Web Back-end (48 buổi)
- Buổi 13: Giới thiệu về Java Web và Servlet
- Buổi 14: Request và Response trong Servlet
- Buổi 15: Session và Cookie trong Servlet
- Buổi 16: Giới thiệu về JSP
- Buổi 17: JSP Expression Language (EL) và JSTL
- Buổi 18: MVC và Servlet Filter
- Buổi 19: Giới thiệu về JDBC
- Buổi 20: PreparedStatement và CallableStatement
- Buổi 21: Transaction trong JDBC
- Buổi 22: Giới thiệu về ORM và Hibernate
- Buổi 23: Hibernate Session và CRUD operations
- Buổi 24: Hibernate Query Language (HQL) và Criteria API
- Buổi 25: Hibernate Associations (One-to-One, One-to-Many, Many-to-Many)
- Buổi 26: Hibernate Caching
- Buổi 27: Giới thiệu về Spring Framework
- Buổi 28: Spring MVC
- Buổi 29: Spring Data JPA
- Buổi 30: Spring AOP (Aspect-Oriented Programming)
- Buổi 31: Spring Security
- Buổi 32: Spring Security nâng cao
- Buổi 33: RESTful API với Spring Boot
- Buổi 34: Giới thiệu về Microservices
- Buổi 35: Xây dựng Microservices với Spring Boot và Spring Cloud
- Buổi 36: Unit Testing và Integration Testing
- Buổi 37: Bảo mật ứng dụng web: OWASP Top 10
- Buổi 38: Spring Security cơ bản
- Buổi 39: Spring Security nâng cao
- Giai đoạn 3: Phát triển Front-end (36 buổi)
- Giai đoạn 3: Phát triển Front-end (36 buổi)
- Buổi 46: Giới thiệu về Angular
- Buổi 47: Components trong Angular
- Buổi 48: Data Binding trong Angular
- Buổi 49: Directives trong Angular
- Buổi 50: Services và Dependency Injection trong Angular
- Buổi 51: Routing và Navigation trong Angular
- Buổi 52: Forms và Validations trong Angular
- Buổi 53: HTTP Client và Communication với Backend
- Buổi 54: State Management trong Angular (NgRx)
- Buổi 55: State Management trong Angular (RxJS)
- Buổi 56: Unit Testing và E2E Testing trong Angular
- Buổi 57: Xây dựng ứng dụng Angular đơn giản
- Giai đoạn 4: Dự án thực tế và kiến thức chuyên sâu
- Buổi 58: Thiết kế cơ sở dữ liệu và xây dựng API (Phần 1)
- Buổi 59: Xây dựng API (Phần 2) và giao diện người dùng (Phần 1)
- Buổi 60: Hoàn thiện giao diện người dùng (Phần 2) và chức năng tìm kiếm
- Buổi 61: Thiết kế cơ sở dữ liệu và xây dựng API (Phần 1)
- Buổi 62: Xây dựng API (Phần 2) và giao diện người dùng (Phần 1) (tiếp theo)
- Buổi 63: Hoàn thiện giao diện người dùng (Phần 2) và các chức năng khác
- Kiến thức chuyên sâu (Buổi 64-69)
Giai đoạn 1: Nền tảng Java (24 buổi)
Buổi 1: Cài đặt môi trường và cú pháp cơ bản
Cài đặt JDK, IntelliJ IDEA (hoặc Eclipse).
Viết chương trình "Hello, World!".
Các kiểu dữ liệu cơ bản (int, double, boolean, char).
Biến và toán tử.
Bài tập:
Viết chương trình tính tổng, hiệu, tích, thương của hai số nguyên.
Viết chương trình tính chu vi và diện tích hình chữ nhật.
Viết chương trình chuyển đổi nhiệt độ từ độ C sang độ F.
Buổi 2: Cấu trúc điều khiển và vòng lặp
Câu lệnh điều kiện (if-else, switch-case).
Vòng lặp (for, while, do-while).
Bài tập:
Viết chương trình kiểm tra số chẵn lẻ.
Viết chương trình in ra bảng cửu chương.
Viết chương trình tính tổng các số từ 1 đến n.
Buổi 3: Mảng và chuỗi
Khai báo và sử dụng mảng.
Các phương thức xử lý chuỗi (length(), charAt(), substring(), ...).
Bài tập:
Viết chương trình tìm số lớn nhất trong mảng.
Viết chương trình đảo ngược một chuỗi.
Viết chương trình kiểm tra chuỗi đối xứng.
Buổi 4: Lớp và đối tượng
Khai báo lớp, tạo đối tượng.
Thuộc tính và phương thức.
Constructor.
Bài tập:
Viết chương trình tạo lớp
HinhChuNhat
với các thuộc tính chiều dài, chiều rộng và các phương thức tính chu vi, diện tích.Viết chương trình tạo lớp
PhanSo
với các thuộc tính tử số, mẫu số và các phương thức cộng, trừ, nhân, chia phân số.Viết chương trình tạo lớp
SinhVien
với các thuộc tính mã số, họ tên, điểm trung bình và các phương thức nhập, xuất thông tin sinh viên.
Buổi 5: Tính kế thừa và tính đa hình
Kế thừa lớp, ghi đè phương thức.
Từ khóa
super
.Lớp trừu tượng (abstract class) và interface.
Bài tập:
Viết chương trình tạo lớp
HinhHoc
(abstract class) với phương thứctinhDienTich()
(abstract method). Tạo các lớp conHinhTron
,HinhChuNhat
,HinhTamGiac
kế thừa từ lớpHinhHoc
và triển khai phương thứctinhDienTich()
.Viết chương trình tạo interface
HinhHoc
với phương thứctinhDienTich()
. Tạo các lớpHinhTron
,HinhChuNhat
,HinhTamGiac
triển khai interfaceHinhHoc
.Viết chương trình tạo lớp
DongVat
(abstract class) với phương thứckeu()
(abstract method). Tạo các lớp conMeo
,Cho
,Ga
kế thừa từ lớpDongVat
và triển khai phương thứckeu()
.
Buổi 6: Tính đóng gói và các thành phần của lớp
Các mức độ truy cập (public, private, protected).
Getter và setter.
Biến static và phương thức static.
Bài tập:
Viết chương trình tạo lớp
TaiKhoanNganHang
với các thuộc tính số tài khoản, tên chủ tài khoản, số dư (private). Sử dụng getter và setter để truy cập và thay đổi các thuộc tính này.Viết chương trình tạo lớp
HinhTron
với thuộc tínhPI
(static final) và phương thứctinhDienTich()
(static).Viết chương trình tạo lớp
NhanVien
với thuộc tínhsoLuongNhanVien
(static) và phương thứcdemSoLuongNhanVien()
(static).
Buổi 7: Collections Framework (List)
Interface
List
, các lớp triển khaiArrayList
,LinkedList
.Các phương thức của
List
(add(), get(), remove(), size(), ...).Bài tập:
Viết chương trình tạo một danh sách các số nguyên, thêm các phần tử vào danh sách, in ra danh sách.
Viết chương trình tìm số lớn nhất và số nhỏ nhất trong danh sách.
Viết chương trình sắp xếp danh sách theo thứ tự tăng dần.
Buổi 8: Collections Framework (Set và Map)
Interface
Set
, các lớp triển khaiHashSet
,TreeSet
.Interface
Map
, các lớp triển khaiHashMap
,TreeMap
.Bài tập:
Viết chương trình tạo một tập hợp các chuỗi, thêm các phần tử vào tập hợp, in ra tập hợp (không có phần tử trùng lặp).
Viết chương trình tạo một từ điển lưu trữ thông tin sinh viên (mã số, họ tên), thêm sinh viên vào từ điển, tìm kiếm sinh viên theo mã số.
Viết chương trình đếm số lần xuất hiện của mỗi từ trong một đoạn văn bản.
Buổi 9: Generics và Exception Handling
Khái niệm generics, khai báo và sử dụng lớp, interface generics.
Các loại ngoại lệ (checked exception, unchecked exception).
Xử lý ngoại lệ bằng try-catch-finally.
Bài tập:
Viết chương trình tạo một lớp
Box
generics để lưu trữ các đối tượng có kiểu dữ liệu khác nhau.Viết chương trình đọc một tập tin, xử lý ngoại lệ
FileNotFoundException
nếu tập tin không tồn tại.Viết chương trình tính thương của hai số nguyên, xử lý ngoại lệ
ArithmeticException
nếu mẫu số bằng 0.
Buổi 10: Lambda Expressions và Stream API
Cú pháp và cách sử dụng lambda expressions.
Stream API: filter(), map(), reduce(), collect(), ...
Bài tập:
Viết chương trình sử dụng lambda expression để sắp xếp một danh sách các số nguyên theo thứ tự giảm dần.
Viết chương trình sử dụng Stream API để lọc ra các số chẵn trong một danh sách các số nguyên.
Viết chương trình sử dụng Stream API để tính tổng bình phương các số lẻ trong một danh sách các số nguyên.
Buổi 11: File I/O và Regular Expressions
Đọc và ghi tập tin văn bản.
Các lớp
File
,FileReader
,FileWriter
,BufferedReader
,BufferedWriter
.Cú pháp và cách sử dụng regular expressions.
Bài tập:
Viết chương trình đọc nội dung một tập tin văn bản và in ra màn hình.
Viết chương trình ghi một danh sách các số nguyên vào tập tin văn bản.
Viết chương trình kiểm tra định dạng email sử dụng regular expressions.
Buổi 12: Date/Time API
Các lớp
LocalDate
,LocalTime
,LocalDateTime
,ZonedDateTime
.Định dạng ngày giờ.
Bài tập:
Viết chương trình lấy ngày giờ hiện tại và in ra màn hình.
Viết chương trình tính khoảng thời gian giữa hai ngày.
Viết chương trình chuyển đổi ngày giờ sang các định dạng khác nhau.
Giai đoạn 2: Phát triển Web Back-end (48 buổi)
Buổi 13: Giới thiệu về Java Web và Servlet
Cấu trúc dự án web Java.
Servlet là gì? Vòng đời của Servlet.
Cấu hình Servlet trong
web.xml
.Bài tập:
Tạo một dự án web Java đơn giản.
Viết một Servlet hiển thị thông điệp "Hello, World!" khi truy cập vào đường dẫn "/hello".
Viết một Servlet nhận tham số từ URL và hiển thị lại tham số đó.
Buổi 14: Request và Response trong Servlet
Đối tượng
HttpServletRequest
vàHttpServletResponse
.Lấy thông tin từ request (tham số, header, cookie).
Gửi dữ liệu về client (text, HTML, JSON).
Bài tập:
Viết một Servlet nhận tên người dùng từ form HTML và hiển thị lời chào.
Viết một Servlet hiển thị danh sách các sản phẩm (dữ liệu giả) dưới dạng HTML.
Viết một Servlet nhận yêu cầu AJAX và trả về dữ liệu JSON.
Buổi 15: Session và Cookie trong Servlet
Quản lý trạng thái phiên làm việc với session.
Lưu trữ dữ liệu nhỏ ở client với cookie.
Bài tập:
Viết một Servlet đếm số lần truy cập của người dùng bằng session.
Viết một Servlet lưu tên người dùng vào cookie và hiển thị lại khi người dùng truy cập lại.
Viết một Servlet tạo giỏ hàng đơn giản sử dụng session.
Buổi 16: Giới thiệu về JSP
JSP là gì? Ưu điểm của JSP so với Servlet.
Cú pháp JSP cơ bản (biểu thức, scriptlet, declaration).
Bài tập:
Chuyển đổi Servlet "Hello, World!" sang JSP.
Viết một JSP hiển thị danh sách các sản phẩm (dữ liệu giả) dưới dạng bảng HTML.
Viết một JSP tính tổng hai số được nhập từ form HTML.
Buổi 17: JSP Expression Language (EL) và JSTL
Sử dụng EL để truy cập dữ liệu trong JSP.
Sử dụng JSTL để xử lý logic trong JSP (if, forEach, ...).
Bài tập:
Viết một JSP hiển thị danh sách các sản phẩm sử dụng EL và JSTL.
Viết một JSP hiển thị thông tin người dùng từ session sử dụng EL.
Viết một JSP hiển thị bảng cửu chương sử dụng JSTL.
Buổi 18: MVC và Servlet Filter
Kiến trúc MVC (Model-View-Controller).
Servlet Filter: Chặn và xử lý request/response.
Bài tập:
Xây dựng một ứng dụng web đơn giản theo kiến trúc MVC (ví dụ: ứng dụng quản lý danh sách công việc).
Viết một Servlet Filter kiểm tra đăng nhập của người dùng.
Viết một Servlet Filter ghi log các request.
Buổi 19: Giới thiệu về JDBC
JDBC là gì? Các thành phần của JDBC.
Kết nối đến cơ sở dữ liệu.
Thực thi các câu lệnh SQL (SELECT, INSERT, UPDATE, DELETE).
Bài tập:
Kết nối đến cơ sở dữ liệu MySQL hoặc PostgreSQL.
Viết chương trình JDBC để lấy danh sách các sản phẩm từ bảng
products
.Viết chương trình JDBC để thêm một sản phẩm mới vào bảng
products
.
Buổi 20: PreparedStatement và CallableStatement
PreparedStatement
: Ngăn ngừa SQL Injection, tối ưu hóa hiệu suất.CallableStatement
: Gọi stored procedure.Bài tập:
Viết lại chương trình lấy danh sách sản phẩm và thêm sản phẩm mới sử dụng
PreparedStatement
.Viết một stored procedure tính tổng giá trị các sản phẩm trong bảng
products
và gọi nó từ Java sử dụngCallableStatement
.Tìm hiểu về SQL Injection và cách phòng tránh bằng
PreparedStatement
.
Buổi 21: Transaction trong JDBC
ACID properties của transaction.
Quản lý transaction trong JDBC.
Bài tập:
Viết chương trình chuyển khoản giữa hai tài khoản ngân hàng, đảm bảo tính toàn vẹn dữ liệu bằng transaction.
Tìm hiểu về các mức độ cô lập (isolation level) của transaction.
Thử nghiệm các trường hợp transaction bị lỗi và cách xử lý.
Buổi 22: Giới thiệu về ORM và Hibernate
ORM (Object-Relational Mapping) là gì? Ưu điểm của ORM.
Giới thiệu Hibernate: Một ORM framework phổ biến cho Java.
Cấu hình Hibernate.
Bài tập:
Cài đặt và cấu hình Hibernate trong dự án web Java.
Tạo các entity class ánh xạ với các bảng trong cơ sở dữ liệu.
Thực hiện các thao tác CRUD cơ bản với entity sử dụng Hibernate.
Buổi 23: Hibernate Session và CRUD operations
Session
: Giao tiếp với cơ sở dữ liệu.Các phương thức CRUD (save(), get(), update(), delete()).
Bài tập:
Viết chương trình thêm, sửa, xóa sản phẩm sử dụng Hibernate.
Viết chương trình lấy danh sách sản phẩm theo một tiêu chí nào đó (ví dụ: theo danh mục).
Tìm hiểu về các trạng thái của entity (transient, persistent, detached).
Buổi 24: Hibernate Query Language (HQL) và Criteria API
HQL: Ngôn ngữ truy vấn hướng đối tượng của Hibernate.
Criteria API: API lập trình để xây dựng các truy vấn phức tạp.
Bài tập:
Viết các truy vấn HQL để lấy danh sách sản phẩm, tìm sản phẩm theo tên, sắp xếp sản phẩm theo giá.
Viết các truy vấn sử dụng Criteria API để thực hiện các yêu cầu tương tự.
So sánh ưu nhược điểm của HQL và Criteria API.
Buổi 25: Hibernate Associations (One-to-One, One-to-Many, Many-to-Many)
Ánh xạ các mối quan hệ giữa các entity.
Cấu hình cascade operations.
Bài tập:
Tạo các entity
Customer
vàOrder
với mối quan hệ One-to-Many.Thực hiện các thao tác thêm, sửa, xóa
Order
và đảm bảo tính toàn vẹn dữ liệu.Tạo các entity
Student
vàCourse
với mối quan hệ Many-to-Many.
Buổi 26: Hibernate Caching
Caching cơ chế hoạt động và lợi ích.
First-level cache và second-level cache.
Cấu hình và sử dụng second-level cache (Ehcache).
Bài tập:
Cấu hình second-level cache cho các entity trong ứng dụng.
Đo lường hiệu năng truy vấn trước và sau khi sử dụng cache.
Tìm hiểu về các chiến lược caching khác nhau (read-only, read-write, ...).
Buổi 27: Giới thiệu về Spring Framework
Spring Framework là gì? Các module chính của Spring.
Inversion of Control (IoC) và Dependency Injection (DI).
Spring Bean và Application Context.
Bài tập:
Tạo một dự án Spring Boot đơn giản.
Tạo các Spring Bean và inject chúng vào nhau.
Tìm hiểu về các annotation của Spring (
@Component
,@Autowired
,@Service
,@Repository
).
Buổi 28: Spring MVC
Cấu trúc dự án Spring MVC.
Controller, View, Model.
Request Mapping, Form Handling, Data Binding.
Bài tập:
Xây dựng một ứng dụng web đơn giản sử dụng Spring MVC (ví dụ: ứng dụng đăng nhập, ứng dụng hiển thị danh sách sản phẩm).
Sử dụng Thymeleaf template engine để tạo các trang HTML.
Xử lý form đăng ký người dùng và lưu thông tin vào cơ sở dữ liệu.
Buổi 29: Spring Data JPA
Spring Data JPA là gì? Ưu điểm so với JDBC và Hibernate thuần.
Repository interface và các phương thức CRUD có sẵn.
Tạo các custom query method.
Bài tập:
Tạo các repository interface cho các entity trong ứng dụng.
Sử dụng các phương thức có sẵn của repository để thực hiện các thao tác CRUD.
Viết các custom query method để tìm kiếm sản phẩm theo tên, theo danh mục, ...
Buổi 30: Spring AOP (Aspect-Oriented Programming)
AOP là gì? Các khái niệm cơ bản (aspect, advice, pointcut, join point).
Sử dụng Spring AOP để xử lý các vấn đề cross-cutting concerns (logging, transaction management, security).
Bài tập:
Viết một aspect để ghi log thời gian thực hiện của các phương thức trong ứng dụng.
Viết một aspect để quản lý transaction cho các phương thức truy cập cơ sở dữ liệu.
Tìm hiểu về các loại advice khác nhau (before, after, around).
Buổi 31: Spring Security
Giới thiệu về Spring Security.
Xác thực (Authentication) và phân quyền (Authorization).
Cấu hình Spring Security cơ bản.
Bài tập:
Thêm Spring Security vào dự án Spring Boot.
Cấu hình xác thực người dùng bằng cơ sở dữ liệu.
Bảo vệ các endpoint API bằng Spring Security.
Buổi 32: Spring Security nâng cao
Các phương thức xác thực khác nhau (form-based, HTTP Basic, JWT).
OAuth2 và OpenID Connect.
Xử lý CSRF (Cross-Site Request Forgery).
Bài tập:
Thực hiện xác thực người dùng bằng JWT.
Tích hợp OAuth2/OpenID Connect với Google hoặc Facebook.
Thêm cơ chế phòng chống CSRF vào ứng dụng.
Buổi 33: RESTful API với Spring Boot
REST (Representational State Transfer) là gì?
Thiết kế RESTful API.
Xử lý JSON trong Spring Boot.
Bài tập:
Thiết kế và xây dựng một RESTful API đơn giản cho ứng dụng quản lý sản phẩm.
Sử dụng Postman hoặc curl để kiểm thử API.
Tìm hiểu về HATEOAS (Hypermedia as the Engine of Application State).
Buổi 34: Giới thiệu về Microservices
Kiến trúc Microservices là gì?
Ưu điểm và nhược điểm của Microservices.
Các mẫu thiết kế Microservices (API Gateway, Circuit Breaker, Service Discovery).
Bài tập:
Tìm hiểu về các khái niệm cơ bản của Microservices.
Đọc và phân tích một case study về Microservices.
Thiết kế một kiến trúc Microservices đơn giản cho một ứng dụng cụ thể.
Buổi 35: Xây dựng Microservices với Spring Boot và Spring Cloud
Spring Cloud là gì?
Các thành phần của Spring Cloud (Eureka, Zuul, Ribbon, Feign, Hystrix).
Xây dựng một ứng dụng Microservices đơn giản sử dụng Spring Boot và Spring Cloud.
Bài tập:
Tạo một dự án Spring Cloud mới.
Xây dựng một service registry sử dụng Eureka.
Xây dựng một API gateway sử dụng Zuul.
Buổi 36: Unit Testing và Integration Testing
JUnit: Framework kiểm thử đơn vị cho Java.
Mockito: Framework mocking cho Java.
Spring Test: Module hỗ trợ kiểm thử trong Spring.
Bài tập:
Viết các unit test cho các lớp service và repository trong ứng dụng.
Viết các integration test để kiểm tra sự tương tác giữa các thành phần của ứng dụng.
Tìm hiểu về các khái niệm test coverage và code quality.
Buổi 37: Bảo mật ứng dụng web: OWASP Top 10
Tìm hiểu về OWASP Top 10 - danh sách 10 lỗ hổng bảo mật ứng dụng web phổ biến nhất.
Các lỗ hổng như SQL Injection, XSS (Cross-Site Scripting), CSRF (Cross-Site Request Forgery).
Bài tập:
Tìm hiểu chi tiết về một lỗ hổng bảo mật trong OWASP Top 10 (ví dụ: SQL Injection).
Tìm các ví dụ về các cuộc tấn công khai thác lỗ hổng đó.
Nghiên cứu các biện pháp phòng tránh và khắc phục lỗ hổng đó.
Buổi 38: Spring Security cơ bản
Cấu hình Spring Security để bảo vệ ứng dụng web.
Xác thực người dùng bằng cơ chế form login.
Phân quyền truy cập dựa trên vai trò (role-based authorization).
Bài tập:
Cài đặt và cấu hình Spring Security trong dự án Spring Boot.
Tạo một trang đăng nhập và đăng ký người dùng.
Bảo vệ các trang hoặc API chỉ cho phép người dùng đã đăng nhập truy cập.
Buổi 39: Spring Security nâng cao
Sử dụng các phương thức xác thực khác nhau (JWT, OAuth2).
Tích hợp Spring Security với các framework front-end (Angular, React).
Bài tập:
Thực hiện xác thực người dùng bằng JWT (JSON Web Token).
Tích hợp Spring Security với Angular hoặc React để bảo vệ các API.
Tìm hiểu về các tính năng bảo mật khác của Spring Security (ví dụ: Remember Me, CORS).
Giai đoạn 3: Phát triển Front-end (36 buổi)
Buổi 40: Giới thiệu về HTML
Cấu trúc cơ bản của một trang HTML.
Các thẻ HTML phổ biến (div, span, h1-h6, p, a, img, table, form, ...).
Thuộc tính của thẻ HTML.
Bài tập:
Tạo một trang HTML đơn giản giới thiệu bản thân.
Tạo một trang HTML hiển thị danh sách các sản phẩm.
Tạo một form HTML để thu thập thông tin người dùng.
Buổi 41: CSS cơ bản
Các cách nhúng CSS vào trang HTML.
Selector (chọn các phần tử HTML).
Các thuộc tính CSS cơ bản (color, background, font, text, border, margin, padding, ...).
Bài tập:
Định dạng trang HTML giới thiệu bản thân bằng CSS.
Tạo layout 2 cột cho trang danh sách sản phẩm.
Tạo một menu navigation bar đơn giản.
Buổi 42: CSS nâng cao
Flexbox và Grid: Xây dựng layout linh hoạt.
Responsive design: Thiết kế giao diện thích ứng với nhiều kích thước màn hình.
CSS preprocessor (Sass, Less): Viết CSS dễ dàng hơn.
Bài tập:
Sử dụng Flexbox để tạo layout 3 cột cho trang web.
Sử dụng Grid để tạo layout phức tạp hơn.
Tìm hiểu về Sass hoặc Less và chuyển đổi một file CSS sang Sass hoặc Less.
Buổi 43: Giới thiệu về JavaScript
Cú pháp cơ bản của JavaScript.
Biến, kiểu dữ liệu, toán tử, cấu trúc điều khiển, hàm.
Bài tập:
Viết một hàm tính tổng hai số.
Viết một hàm kiểm tra số nguyên tố.
Viết một hàm in ra các số Fibonacci nhỏ hơn n.
Buổi 44: DOM Manipulation (Thao tác với DOM)
DOM (Document Object Model) là gì?
Truy xuất và thay đổi các phần tử HTML bằng JavaScript.
Sự kiện (event) và xử lý sự kiện.
Bài tập:
Viết một đoạn JavaScript để thay đổi màu nền của một phần tử div khi click vào nó.
Viết một đoạn JavaScript để thêm một phần tử li vào một danh sách ul.
Viết một đoạn JavaScript để tạo một form động và xử lý sự kiện submit.
Buổi 45: JavaScript nâng cao
Các đối tượng built-in (Math, Date, ...).
Callback function, Promise, async/await.
AJAX (Asynchronous JavaScript and XML).
Bài tập:
Viết một hàm sử dụng
setTimeout
để in ra một thông điệp sau 5 giây.Viết một hàm sử dụng Promise để lấy dữ liệu từ một API và xử lý kết quả.
Viết một đoạn JavaScript sử dụng AJAX để gửi một form không cần tải lại trang.
Giai đoạn 3: Phát triển Front-end (36 buổi)
Buổi 46: Giới thiệu về Angular
Angular là gì? Tại sao nên sử dụng Angular?
Cài đặt Angular CLI.
Tạo một dự án Angular mới.
Cấu trúc cơ bản của một dự án Angular.
Bài tập:
Cài đặt Node.js và Angular CLI trên máy tính của bạn.
Tạo một dự án Angular mới bằng lệnh
ng new
.Khám phá cấu trúc thư mục của dự án Angular và tìm hiểu ý nghĩa của các tệp và thư mục quan trọng.
Buổi 47: Components trong Angular
Components là gì? Tại sao cần sử dụng components?
Tạo một component mới.
Template và styles của component.
Bài tập:
Tạo một component mới trong dự án Angular của bạn.
Thiết kế giao diện cho component bằng HTML và CSS.
Hiển thị component trên trang chủ của ứng dụng.
Buổi 48: Data Binding trong Angular
Các loại data binding trong Angular (interpolation, property binding, event binding, two-way binding).
Sử dụng data binding để hiển thị và cập nhật dữ liệu trên giao diện.
Bài tập:
Tạo một component hiển thị thông tin người dùng (tên, tuổi, địa chỉ) sử dụng interpolation.
Tạo một component có nút button và sử dụng event binding để xử lý sự kiện click.
Tạo một component có input field và sử dụng two-way binding để cập nhật dữ liệu.
Buổi 49: Directives trong Angular
Directives là gì? Các loại directives (component, structural directive, attribute directive).
Sử dụng các structural directives phổ biến (*ngIf, *ngFor).
Bài tập:
Sử dụng
ngIf
để ẩn/hiện một phần tử HTML dựa trên một điều kiện.Sử dụng
ngFor
để lặp qua một mảng và hiển thị danh sách các phần tử.Tạo một directive tùy chỉnh để thay đổi màu sắc của một phần tử HTML.
Buổi 50: Services và Dependency Injection trong Angular
Services là gì? Tại sao cần sử dụng services?
Dependency Injection (DI) là gì?
Tạo và sử dụng một service trong Angular.
Bài tập:
Tạo một service để lấy dữ liệu từ một API.
Inject service vào một component và sử dụng dữ liệu từ API để hiển thị trên giao diện.
Tìm hiểu về các cách khác nhau để cung cấp service trong Angular (providedIn, providedIn: 'root', ...).
Buổi 51: Routing và Navigation trong Angular
Angular Router là gì?
Cấu hình các routes trong ứng dụng.
Điều hướng giữa các routes bằng routerLink.
Bài tập:
Cấu hình các routes cho ứng dụng Angular của bạn (trang chủ, trang giới thiệu, trang liên hệ, ...).
Sử dụng
routerLink
để tạo các liên kết điều hướng giữa các trang.Tạo một route động để hiển thị chi tiết sản phẩm dựa trên ID.
Buổi 52: Forms và Validations trong Angular
Template-driven forms và Reactive forms.
Xây dựng form đăng ký, đăng nhập người dùng.
Validate dữ liệu form (required, minlength, maxlength, pattern, ...).
Bài tập:
Tạo một form đăng ký người dùng sử dụng Template-driven forms.
Tạo một form đăng nhập người dùng sử dụng Reactive forms.
Thêm các validation rules cho các trường trong form.
Buổi 53: HTTP Client và Communication với Backend
Angular HttpClient là gì?
Gửi request GET, POST, PUT, DELETE đến API.
Xử lý dữ liệu trả về từ API (JSON, XML).
Bài tập:
Sử dụng HttpClient để lấy danh sách sản phẩm từ API Spring Boot.
Sử dụng HttpClient để thêm một sản phẩm mới vào cơ sở dữ liệu thông qua API.
Xử lý lỗi khi gọi API (ví dụ: 404 Not Found, 500 Internal Server Error).
Buổi 54: State Management trong Angular (NgRx)
NgRx là gì? Các khái niệm cơ bản (Store, Actions, Reducers, Effects).
Quản lý trạng thái ứng dụng bằng NgRx.
Bài tập:
Cài đặt NgRx trong dự án Angular.
Tạo một store đơn giản để quản lý trạng thái của một danh sách sản phẩm.
Sử dụng actions và reducers để cập nhật trạng thái của store.
Buổi 55: State Management trong Angular (RxJS)
RxJS (Reactive Extensions for JavaScript) là gì?
Observables, Subjects, Operators.
Sử dụng RxJS để xử lý các luồng dữ liệu bất đồng bộ.
Bài tập:
Tìm hiểu về các khái niệm cơ bản của RxJS.
Sử dụng Observables để lấy dữ liệu từ API.
Sử dụng Subjects để giao tiếp giữa các components.
Buổi 56: Unit Testing và E2E Testing trong Angular
Jasmine và Karma: Framework và test runner cho Angular.
Viết unit test cho components và services.
Viết E2E test để kiểm tra luồng hoạt động của ứng dụng.
Bài tập:
Viết unit test cho một component Angular đơn giản.
Viết unit test cho một service Angular.
Viết một E2E test để kiểm tra chức năng đăng nhập của ứng dụng.
Buổi 57: Xây dựng ứng dụng Angular đơn giản
Áp dụng các kiến thức đã học để xây dựng một ứng dụng Angular đơn giản (ví dụ: ứng dụng quản lý danh bạ, ứng dụng todo list).
Bài tập:
Hoàn thiện ứng dụng Angular của bạn.
Thêm các tính năng mới vào ứng dụng (tìm kiếm, phân trang, sắp xếp).
Triển khai ứng dụng lên môi trường production.
Giai đoạn 4: Dự án thực tế và kiến thức chuyên sâu
Dự án nhỏ 1: Ứng dụng quản lý sách (Buổi 58-60)
Buổi 58: Thiết kế cơ sở dữ liệu và xây dựng API (Phần 1)
Thiết kế cơ sở dữ liệu cho ứng dụng quản lý sách:
Xác định các thực thể (entities): Sách, Tác giả, Thể loại, Nhà xuất bản, ...
Xác định các mối quan hệ (relationships) giữa các thực thể: Một-nhiều, nhiều-nhiều.
Vẽ sơ đồ ERD (Entity-Relationship Diagram).
Bắt đầu xây dựng API Spring Boot:
Tạo các entity class tương ứng với các bảng trong cơ sở dữ liệu.
Tạo các repository interface để tương tác với cơ sở dữ liệu.
Bài tập:
Vẽ sơ đồ ERD cho ứng dụng quản lý sách.
Tạo các entity class cho ứng dụng (Book, Author, Category, Publisher).
Tạo các repository interface cho các entity.
Buổi 59: Xây dựng API (Phần 2) và giao diện người dùng (Phần 1)
Tiếp tục xây dựng API Spring Boot:
Tạo các service class để xử lý logic nghiệp vụ.
Tạo các controller class để xử lý các request từ client.
Viết các endpoint API cho các chức năng CRUD (Create, Read, Update, Delete) của sách.
Bắt đầu xây dựng giao diện người dùng Angular/React:
- Tạo các component cho trang danh sách sách, trang chi tiết sách, form thêm/sửa sách.
Bài tập:
Viết các endpoint API cho các chức năng CRUD của sách.
Tạo một component Angular/React để hiển thị danh sách sách.
Tạo một component Angular/React để hiển thị chi tiết sách.
Buổi 60: Hoàn thiện giao diện người dùng (Phần 2) và chức năng tìm kiếm
Tiếp tục xây dựng giao diện người dùng Angular/React:
Tạo form thêm/sửa sách.
Xử lý sự kiện submit form.
Gọi API từ giao diện người dùng để lấy và cập nhật dữ liệu.
Thêm chức năng tìm kiếm sách:
Xây dựng endpoint API cho chức năng tìm kiếm.
Thêm ô tìm kiếm vào giao diện người dùng.
Gọi API tìm kiếm khi người dùng nhập từ khóa.
Bài tập:
Hoàn thiện form thêm/sửa sách.
Thêm chức năng tìm kiếm sách theo tên, tác giả, thể loại.
Thêm chức năng phân trang cho danh sách sách.
Dự án nhỏ 2: Blog cá nhân (Buổi 61-63)
Buổi 61: Thiết kế cơ sở dữ liệu và xây dựng API (Phần 1)
Thiết kế cơ sở dữ liệu cho blog cá nhân:
Xác định các thực thể (entities): Bài viết, Người dùng, Bình luận, Thẻ (tag), ...
Xác định các mối quan hệ giữa các thực thể.
Vẽ sơ đồ ERD.
Bắt đầu xây dựng API Spring Boot:
Tạo các entity class.
Tạo các repository interface.
Bài tập:
Vẽ sơ đồ ERD cho blog cá nhân.
Tạo các entity class cho ứng dụng (Post, User, Comment, Tag).
Tạo các repository interface cho các entity.
Buổi 62: Xây dựng API (Phần 2) và giao diện người dùng (Phần 1) (tiếp theo)
Bắt đầu xây dựng giao diện người dùng Angular/React:
- Tạo các component cho trang chủ, trang chi tiết bài viết, form đăng nhập, form đăng ký.
Bài tập:
Viết các endpoint API cho các chức năng đăng nhập và đăng ký người dùng.
Tạo một component Angular/React cho trang chủ, hiển thị danh sách bài viết.
Tạo một component Angular/React cho trang chi tiết bài viết.
Buổi 63: Hoàn thiện giao diện người dùng (Phần 2) và các chức năng khác
Tiếp tục xây dựng giao diện người dùng Angular/React:
Tạo form viết bài, chỉnh sửa bài viết.
Tạo component hiển thị bình luận và form thêm bình luận.
Thêm các chức năng khác:
Phân trang cho danh sách bài viết.
Tìm kiếm bài viết theo từ khóa.
Hiển thị các bài viết liên quan.
Bài tập:
Hoàn thiện form viết bài và chỉnh sửa bài viết.
Thêm chức năng bình luận cho bài viết.
Thêm chức năng tìm kiếm bài viết theo từ khóa.
Kiến thức chuyên sâu (Buổi 64-69)
Buổi 64: Design Patterns (Phần 1)
Giới thiệu về Design Patterns và các loại Design Patterns.
Creational Patterns: Singleton, Factory Method, Abstract Factory, Builder, Prototype.
Bài tập:
Tìm hiểu chi tiết về một Creational Pattern và cách áp dụng nó vào dự án.
Thực hiện ví dụ minh họa cho Creational Pattern đã chọn.
Tìm kiếm các ví dụ về Creational Pattern trong các dự án mã nguồn mở.
Buổi 65: Design Patterns (Phần 2)
Structural Patterns: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy.
Bài tập:
Tìm hiểu chi tiết về một Structural Pattern và cách áp dụng nó vào dự án.
Thực hiện ví dụ minh họa cho Structural Pattern đã chọn.
Tìm kiếm các ví dụ về Structural Pattern trong các dự án mã nguồn mở.
Buổi 66: Design Patterns (Phần 3) và Nguyên tắc SOLID
Behavioral Patterns: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor.
Nguyên tắc SOLID: Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion.
Bài tập:
Tìm hiểu chi tiết về một Behavioral Pattern và cách áp dụng nó vào dự án.
Thực hiện ví dụ minh họa cho Behavioral Pattern đã chọn.
Tìm kiếm các ví dụ về Behavioral Pattern trong các dự án mã nguồn mở.
Tìm hiểu và giải thích từng nguyên tắc SOLID.
Áp dụng nguyên tắc SOLID vào việc thiết kế và cải tiến code.
Buổi 67: DevOps: CI/CD
Tìm hiểu về CI/CD (Continuous Integration/Continuous Deployment).
Các công cụ hỗ trợ CI/CD: Jenkins, GitLab CI/CD, Travis CI, CircleCI.
Bài tập:
Cài đặt và cấu hình Jenkins hoặc GitLab CI/CD.
Tạo một pipeline CI/CD đơn giản để build và test dự án.
Tìm hiểu về các khái niệm khác trong CI/CD như deployment automation, infrastructure as code.
Buổi 68: Docker
Tìm hiểu về Docker và các khái niệm cơ bản (image, container, Dockerfile).
Cài đặt Docker.
Tạo và quản lý container Docker.
Bài tập:
Cài đặt Docker trên máy tính của bạn.
Tạo một Dockerfile để đóng gói ứng dụng Spring Boot.
Chạy ứng dụng trong container Docker.
Buổi 69: Kubernetes
Tìm hiểu về Kubernetes và các khái niệm cơ bản (pod, service, deployment, ...).
Cài đặt Kubernetes (sử dụng Minikube hoặc một cluster khác).
Triển khai ứng dụng lên Kubernetes.
Buổi 70: Ôn tập kiến thức
Làm bài test kiểm tra kiến thức cuối khoá