Khoá học này dành cho các lập trình 6 tháng đến 18 tháng kinh nghiệm lập trình ứng dụng Java web. Mục tiêu để cải thiện kỹ năng:
- Kỹ thuật phân tích thiết kế ứng dụng: sản phẩm vs gia công từng phần, monolithic vs microservice,...
- Thiết kế và kiểm tra thiết kế CSDL quan hệ: pattern (1:M, M:M, recurise, inherit) vs anti pattern
- Cấu trúc dự án Java: cấu trúc thư mục, Maven vs Gradle. Chuyển đổi giữa Maven và Gradle.
- Các quy tắc code sạch để dễ đọc, dễ bảo trì, cộng tác nhóm.
- Các kỹ thuật lập trình hướng đối tượng: SOLID Pattern và 5 design patterns dễ nhớ, phổ biến.
- Viết Unit Test
- Lập trình JPA --> Database
Sinh viên và giảng viên sẽ thực hành qua một dự án xây dựng web site bán hàng hoặc web site đặt vé xem phim.
Nếu sinh viên muốn thực sự hiểu, nắm vững kỹ thuật clean code thì phải lập trình bài tập, nộp bài đầy đủ
- Học trực tuyến. Mỗi buổi 2 tiếng, nghỉ giữa giờ 5 phút.
- Số buổi học 14
- Có bài tập giao về nhà và có chấm bài tập lập trình.
- Dự án lập trình mỗi cá nhân tự làm.
- Số lượng sinh viên < 12 thì sinh viên có thể thuyết trình bài tập, dự án.
- Số lượng sinh viên > 12 giảng viên chỉ chọn 2 bài tập, dự án tốt nhất để sinh viên thuyết trình.
- Trịnh Minh Cường
- Bùi Văn Hiên
- Lục Thanh Ngọc
- framework: Spring Boot (sinh viên có thể chọn Quarkus)
- Front End: Thymeleaf hoặc React hoặc Vue (sinh viên tuỳ chọn)
- IDE: VSCode hoặc Intelij. Giảng viên dùng VSCode
- Database: Postgresql + Redis. công cụ DBeaver
- Docker
- API Gateway: Traefik
- Giới thiệu khoá học học, phương pháp học, yêu cầu đầu ra. Lãnh đạo công ty sẽ trình bày
- 12 quy tắc Clean Code giúp phần mềm dễ bảo trì hơn.
- What is bad code, What is good code? Why?
Bài tập:
- Lập trình mô phỏng chọn đội bóng thi đấu
- Lập trình hàm tính chi phí, vay nợ khi mua trả góp chung cư.
- Những câu hỏi nên đặt ra khi khảo sát yêu cầu khách hàng - người dùng
- Các phương pháp thu thập yêu cầu. Mẫu tài liệu thu thập yêu cầu.
- Phân tích - phát triển yêu cầu: đối chiếu, xác nhận với khách hàng làm sao hiệu quả.
- Vẽ User story - diagram để khách hàng hiểu được ngay họ muốn gì.
Bài tập: Chọn một trong ba đề tài sau
- Thiết kế hệ thống bán vé xem phim trực tuyến như CGV
- Thiết kế hệ thống học trực tuyến
- Thiết kế shop bán hàng
- Nhận xét đánh giá bài tập tốt nhất buổi số 2. Những lỗi thường mắc phải
- User Case - Activity Diagram
- Vẽ mock up giao diện để phối hợp, kết nối giữa khách hàng và đội lập trình.
- Tài liệu đặc tả: khi nào là đủ, khi nào là thiếu, khi nào là thừa. Làm sao đảm bảo dặc tả luôn cập nhật nhất.
- List - Map - Set - Queue (xếp theo tần suất sử dụng, các ví dụ căn bản)
- Phân tích thống kê tập dữ liệu 1000 người các thành phố khác nhau, nghề nghiệp, giới tính, độ tuổi khác nhau. Giảng viên chỉ ví dụ 50% các hàm.
Bài tập
- Sinh viên lập trình nốt 50% còn lại.
- Tại sao Java Stream và Lambda Expression giúp code clean hơn?
- Tóm tắt các nhóm hàm chính trong Java Stream API:
Stream.of
tạo stream- Chuyển đổi sang cấu trúc dữ liệu khác
.iterate
: duyệt.collect
: chọn.map
: ánh xạ.filter
: lọc, tìm kiếm.limit
: giới hạn.groupingBy
: nhóm.skip
: bỏ qua.distict
: loại phần tử lặp lại.sorted
: các phương pháp sort chuẩn, sort theo trường, hàm sort tự viết.findAny
vs.findFirst
: tìm Bài tập
- Thực hiện lại bài tập lập trình số 4 bằng Java Stream API
- Tại sao cần đo đạc, tốc độ, hiệu năng hàm trong Java?
- Phân tích trọng số, loại bỏ yếu tố ngoại lai. Tối ưu quá sớm cùng không tốt - Premature optimization is evil
- Sử dụng Java Microbenchmark Harness để đo tốc độ thực thi.
- Ví dụ:
- So sánh tốc độ các phương pháp liệt kế số nguyên tố
- So sánh tốc độ khi không dùng và dùng Stream API Bài tập
Để học buổi này sinh viên đã phải biết lập trình Spring Boot căn bản
- Tóm tắt phương thức GET, POST, PUT, DELETE
- Request vs Response. Header vs Body
- URL parameters vs body parameters
- Document REST API sử dụng swagger
- Quản lý version REST API
- Ý nghĩa HTTP Status code
- Trả về thông điệp có ý nghĩa
- Báo lỗi trong lúc development khác gì với báo lỗi ở production