Bối cảnh và vấn đề nghiên cứu

Sự phát triển của công nghệ thông tin trong lĩnh vực giáo dục đã tạo ra những chuyển biến lớn trong phương thức truyền đạt và tiếp nhận tri thức. Các hệ thống quản lý học tập (LMS), nền tảng số hóa bài giảng và thư viện trực tuyến đã mở rộng không gian lớp học truyền thống thành không gian số, cho phép người học tiếp cận học liệu không bị giới hạn bởi thời gian và địa điểm. Đặc biệt, sau các giai đoạn gián đoạn dạy học do dịch bệnh, vai trò của các nền tảng trực tuyến càng được khẳng định như một công cụ đảm bảo tính liên tục và chất lượng đào tạo. Trong bối cảnh chuyển đổi số giáo dục đại học, nhóm tác giả Trần Hoàng Phúc và Nguyễn Hoàng Phương (ngành Công nghệ Thông tin, chuyên ngành Công nghệ Phần mềm, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh) dưới sự hướng dẫn của ThS. Nguyễn Hữu Trung đã thực hiện đồ án tốt nghiệp: "Xây dựng hệ thống website dạy học số Learn-X dành cho giảng viên và sinh viên".

Mục tiêu tổng quát của đề tài là xây dựng hoàn chỉnh hệ thống website dạy học số Learn-X phục vụ công tác giảng dạy và học tập tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh. Hệ thống được định hướng hỗ trợ các chức năng quản lý bài giảng, chia sẻ học liệu, tạo bài kiểm tra, giám sát tiến trình học tập, tương tác thảo luận, đồng thời cung cấp giao diện trực quan và khả năng mở rộng kiến trúc trong tương lai.

Theo đề cương được phê duyệt, nhiệm vụ nghiên cứu của đồ án được phân định thành hai nhóm:

  1. Nhiệm vụ lý thuyết: Tìm hiểu cơ sở lý thuyết và các công nghệ nền tảng bao gồm Spring Boot, kiến trúc RESTful API, JSON Web Token (JWT), thư viện ReactJS, CSS framework TailwindCSS và hệ quản trị cơ sở dữ liệu MySQL.
  2. Nhiệm vụ thực hành:
    • Sử dụng Spring Boot để xây dựng hệ thống xử lý phía máy chủ theo chuẩn kiến trúc RESTful API.
    • Tìm hiểu và định hướng ứng dụng Redis để lưu trữ bộ nhớ đệm (cache), tối ưu hóa thời gian phản hồi của hệ thống.
    • Định hướng ứng dụng thư viện Resilience4j nhằm kiểm soát và xử lý các kịch bản chịu tải, yêu cầu đồng thời cao.
    • Tích hợp JSON Web Token (JWT), Spring Security và giao thức Google OAuth2 để thiết lập cơ chế xác thực và phân quyền đa cấp.
    • Sử dụng ReactJS kết hợp TailwindCSS để thiết kế và hiện thực hóa toàn bộ giao diện người dùng.
    • Sử dụng hệ quản trị cơ sở dữ liệu quan hệ MySQL để mô hình hóa và lưu trữ tài nguyên hệ thống, dữ liệu học tập và thông tin người dùng.

Đối tượng nghiên cứu của đồ án là hệ thống website dạy học số Learn-X, tập trung vào hai nhóm người dùng chính là giảng viên (quản lý khóa học, bài giảng, tài nguyên, đề kiểm tra, chấm bài và thống kê) và sinh viên (tham gia khóa học, nộp bài tập, làm bài kiểm tra trực tuyến, tra cứu điểm và tương tác qua diễn đàn). Phạm vi không gian nghiên cứu đặt trong bối cảnh đào tạo của Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh. Phạm vi thời gian thực hiện kéo dài từ ngày 28/08/2024 đến ngày 04/06/2025, trải qua các giai đoạn từ khảo sát hiện trạng, phân tích nghiệp vụ, thiết kế hệ thống, lập trình thử nghiệm đến hoàn thiện báo cáo và bảo vệ vào tháng 06/2025.


Cơ sở lý thuyết và phương pháp

Khung lý thuyết của đề tài dựa trên các nguyên lý kỹ thuật phần mềm hiện đại và các công nghệ phát triển web phân tán:

  • Kiến trúc phần mềm: Áp dụng mô hình Client-Server phân tách hoàn toàn giữa tầng giao diện người dùng (Frontend) và tầng dịch vụ nghiệp vụ (Backend) thông qua chuẩn giao tiếp RESTful API. Hệ thống tuân thủ 6 nguyên tắc cốt lõi của REST: Client-Server, Phi trạng thái (Stateless), Khả năng lưu bộ đệm (Cacheable), Giao diện đồng nhất (Uniform Interface), Hệ thống phân lớp (Layered System) và Mã theo yêu cầu (Code on demand).
  • Công nghệ Backend: Spring Framework với các nguyên lý thiết kế Dependency Injection (DI), Lập trình hướng khía cạnh (Aspect Oriented Programming - AOP), và triết lý "Ưu tiên quy ước hơn cấu hình" (Convention over Configuration). Nền tảng Spring Boot đóng gói ứng dụng độc lập với máy chủ nhúng Tomcat, quản lý phụ thuộc tập trung và hỗ trợ giám sát hệ thống qua Spring Boot Actuator.
  • Cơ chế bảo mật: Hệ thống bảo mật đa lớp xây dựng trên Spring Security với chuỗi bộ lọc FilterChainProxy và SecurityFilterChain, quản lý ngữ cảnh xác thực bằng SecurityContextHolder qua biến ThreadLocal. Cơ chế cấp quyền sử dụng chuẩn mã hóa mật khẩu an toàn kết hợp với JSON Web Token (RFC 7519) gồm 3 thành phần: Header, Payload (chứa các registered claims và custom claims) và Signature tạo bởi thuật toán mã hóa HMAC SHA-256. Giao thức Google OAuth2 được tích hợp để xác thực danh tính người dùng thông qua idToken từ Google APIs trước khi máy chủ sinh JWT nội bộ.
  • Lưu trữ và phân phối tài nguyên: Hệ quản trị cơ sở dữ liệu quan hệ MySQL đảm bảo tính toàn vẹn dữ liệu và phân quyền truy cập. Nền tảng điện toán đám mây Cloudinary được tích hợp nhằm tiếp nhận, lưu trữ, tối ưu hóa và phân phối tài nguyên hình ảnh, video thông qua mạng phân phối nội dung (CDN).
  • Công nghệ Frontend: Thư viện ReactJS với mô hình phát triển dựa trên thành phần (Component-based), kỹ thuật cập nhật giao diện thông qua Virtual DOM, cú pháp JSX, hệ thống quản lý trạng thái tập trung và các React Hooks. Thư viện TailwindCSS đóng vai trò khung tiện ích (Utility-First CSS) giúp xây dựng giao diện tùy biến, tránh trùng lặp mã CSS.

Phương pháp nghiên cứu thực tế được triển khai trong đồ án bao gồm:

  • Phương pháp khảo sát, phân tích so sánh hiện trạng: Đánh giá trực tiếp các chức năng và luồng tương tác trên hai hệ thống quản lý học tập phổ biến là Moodle và Google Classroom để rút ra ưu điểm và hạn chế.
  • Phương pháp mô hình hóa hướng đối tượng: Sử dụng ngôn ngữ mô hình hóa thống nhất (UML) để chuyển hóa yêu cầu nghiệp vụ thành các lược đồ Use Case, bảng đặc tả kịch bản Use Case, lược đồ tuần tự (Sequence Diagram) và lược đồ thực thể quan hệ (ERD).
  • Phương pháp kiểm thử phần mềm: Tiến hành kiểm thử chức năng trên các môi trường cục bộ và môi trường máy chủ đám mây.

Nguồn dữ liệu của đề tài bao gồm hệ thống dữ liệu mẫu về khóa học, bài học, tài nguyên đa phương tiện, ngân hàng câu hỏi trắc nghiệm, bài tập, và danh sách tài khoản người dùng được định dạng theo cấu trúc mã số sinh viên (MSSV) hoặc địa chỉ Gmail.


Thiết kế và triển khai hệ thống

Hệ thống Learn-X được thiết kế theo kiến trúc tách biệt hai tầng, đảm bảo tính mô-đun và khả năng mở rộng:

[ Trình duyệt Client: ReactJS + TailwindCSS ]
   [ Máy chủ Backend: Spring Boot + Spring Security ]
   [ MySQL Database ]    [ Cloudinary ]   [ Google OAuth2 ]
  1. Phân tầng nghiệp vụ Backend:

    • Tầng điều khiển (Controller): Định nghĩa các điểm cuối RESTful API, tiếp nhận yêu cầu HTTP, kiểm tra tính hợp lệ của dữ liệu đầu vào và chuyển tiếp đến tầng dịch vụ. Tài liệu API được sinh tự động thông qua đặc tả OpenAPI/Swagger UI.
    • Tầng bảo mật (Security Filter): Đón bắt các yêu cầu gửi đến thông qua Authorization: Bearer <token>, tiến hành giải mã chữ ký JWT, trích xuất thông tin người dùng và thiết lập quyền hạn tương ứng trong SecurityContext.
    • Tầng nghiệp vụ (Service): Triển khai các quy tắc kiểm tra logic nghiệp vụ như thời hạn nộp bài, thời lượng làm bài trắc nghiệm, phân quyền thao tác trên tài nguyên khóa học.
    • Tầng dữ liệu (Repository/DAO): Tương tác trực tiếp với cơ sở dữ liệu MySQL để truy vấn và cập nhật dữ liệu.
  2. Mô hình cơ sở dữ liệu quan hệ: Cơ sở dữ liệu được thiết kế chuẩn hóa, gồm bảng kiểm toán chung (Audit fields) cùng 15 bảng chức năng chính:

    • users: Quản lý thông tin định danh, mật khẩu đã băm, vai trò người dùng và trạng thái tài khoản.
    • course và category: Quản lý danh mục và thông tin khóa học.
    • course_registration: Ghi nhận dữ liệu đăng ký khóa học của sinh viên.
    • module: Quản lý các cấu phần, chương mục trong từng khóa học.
    • lecture và resource: Lưu trữ nội dung bài giảng số và tệp tài liệu liên kết.
    • assignment và assignment_submission: Quản lý bài tập tự luận và dữ liệu bài làm của sinh viên kèm trạng thái chấm điểm.
    • quiz, question, quiz_question và quiz_submission: Quản lý ngân hàng đề trắc nghiệm, câu hỏi, điểm số và bài làm kiểm tra có giới hạn thời gian.
    • forum và topic: Hỗ trợ thảo luận nội bộ theo chủ đề trong phạm vi từng khóa học.
  3. Môi trường triển khai (Deployment): Nhóm tác giả sử dụng các dịch vụ đám mây để triển khai hệ thống thử nghiệm:

Thành phần hệ thống Môi trường triển khai Đặc tả kỹ thuật
Cơ sở dữ liệu Microsoft Azure Instance MySQL triển khai qua Azure Portal
Máy chủ Backend Heroku Ứng dụng Spring Boot đóng gói thực thi
Giao diện Frontend GitHub Pages Bản dựng tĩnh Single Page Application (ReactJS)
Lưu trữ Media Cloudinary Dịch vụ quản lý tệp tải lên, hình ảnh và phân phối CDN
Tài liệu hóa API Swagger UI Tích hợp trực tiếp tại máy chủ Backend

Nội dung chính theo từng chương

Chương 1: Khảo sát hiện trạng

Tác giả tiến hành phân tích hai hệ sinh thái phần mềm dạy học trực tuyến phổ biến gồm Moodle và Google Classroom nhằm xác định các ưu điểm cần kế thừa và nhược điểm cần khắc phục:

Hệ thống khảo sát Bố cục và chức năng chính Ưu điểm ghi nhận Hạn chế ghi nhận
Moodle Bố cục đơn giản; thu gọn/mở rộng bài học; đăng tải bài giảng; quản lý bài tập; tạo câu hỏi kiểm tra đa dạng. Khả năng tự thiết lập, tùy biến đa năng; cho phép tạo lập và tái sử dụng tài nguyên (bài giảng, bài tập, ngân hàng câu hỏi). Giao diện chưa bắt mắt, thiếu tính thu hút; chưa có tính năng thông báo đẩy; mức độ hỗ trợ tương tác thảo luận chưa cao.
Google Classroom Tạo lớp học; quản lý bài tập, bài kiểm tra, câu hỏi và tài liệu; thống kê và chấm điểm bài nộp; tạo thông báo tương tác. Giao diện thân thiện, dễ sử dụng; khả năng tích hợp cao trong hệ sinh thái Google; tổ chức chức năng rõ ràng. Khả năng soạn thảo kế hoạch giảng dạy độc lập chưa thực sự hiệu quả; gặp khó khăn khi muốn tái sử dụng kế hoạch cho khóa học khác.

Từ kết quả khảo sát, đồ án xác định định hướng xây dựng Learn-X: giữ giao diện trực quan, thân thiện tương tự Google Classroom, đồng thời bổ sung khả năng tổ chức bài giảng phân cấp theo module và quản lý tài nguyên linh hoạt như Moodle.

Chương 2: Cơ sở lý thuyết

Nội dung chương trình bày chi tiết nền tảng lý thuyết và công nghệ được lựa chọn:

  • Nền tảng Spring và Spring Boot: Phân tích các thành phần kiến trúc, nguyên lý POJO, cơ chế quản lý cấu hình đa môi trường (properties, yaml, profile), cấu hình logging tập trung (Logback, Log4j2) và cơ chế tự động cấu hình qua @SpringBootApplication.
  • Chuẩn RESTful API: Phân tích trạng thái tài nguyên, siêu dữ liệu và các phương thức giao tiếp HTTP chuẩn hóa.
  • Spring Security, JWT và Google OAuth2: Chi tiết hóa quy trình xác thực ủy quyền. Khi người dùng xác thực qua Google, hệ thống trích xuất idToken, đối chiếu thông tin trong cơ sở dữ liệu và phát hành chuỗi mã JWT chứa thông tin định danh để client lưu trữ và gửi kèm trong tiêu đề yêu cầu tiếp theo. Cấu trúc JWT được phân tích đầy đủ với thuật toán ký HMAC SHA-256.
  • Thư viện ReactJS và TailwindCSS: Trình bày cơ chế hoạt động của Virtual DOM, việc tối ưu hóa render giao diện so với Browser DOM thực tế, quản lý trạng thái bằng Hooks và Redux.
  • Hệ quản trị MySQL và giải pháp Cloudinary: Giới thiệu kiến trúc quản lý dữ liệu bảng, khóa quan hệ, cơ chế phân quyền tài khoản cơ sở dữ liệu và tích hợp API lưu trữ tài nguyên đa phương tiện.

Chương 3: Phân tích và thiết kế hệ thống

Chương 3 tập trung xây dựng toàn bộ mô hình dữ liệu và đặc tả chức năng của Learn-X:

  • Yêu cầu chức năng nghiệp vụ (YC01 đến YC14):
    1. YC01: Xem các khóa học đã đăng ký (Quy định QD01: Hiển thị tên, ảnh nền khóa học, hỗ trợ phân trang).
    2. YC02: Xem chi tiết khóa học (Quy định QD02: Khóa học gồm nhiều module; mỗi module gồm bài giảng, tài liệu, bài nộp và bài kiểm tra).
    3. YC03: Thêm khóa học mới.
    4. YC04: Thêm thông tin chi tiết khóa học.
    5. YC05: Sửa thông tin chi tiết khóa học.
    6. YC06: Xem thời gian biểu các bài tập và bài kiểm tra.
    7. YC07: Thêm bài nộp (Quy định QD03: Kiểm tra hạn nộp; khóa tính năng nếu trễ hạn).
    8. YC08: Làm bài kiểm tra (Quy định QD04: Kiểm tra thời hạn làm bài; khóa truy cập nếu trễ hạn).
    9. YC09: Thêm sinh viên vào khóa học (Quy định QD05 và biểu mẫu BM01: Cho phép nhập từng email hoặc nhập tệp CSV/XLSX chứa cột MSSV hoặc cột Gmail).
    10. YC10: Xóa sinh viên khỏi khóa học.
    11. YC11: Thống kê số lượng bài nộp và danh sách sinh viên đã nộp.
    12. YC12: Thống kê số lượng sinh viên làm bài kiểm tra, danh sách nộp và hiển thị biểu đồ điểm.
    13. YC13: Tạo chủ đề thảo luận (topic) trong khóa học.
    14. YC14: Gửi bình luận phản hồi trong chủ đề thảo luận có sẵn.
  • Yêu cầu chức năng hệ thống (YCHT01 đến YCHT09): Đăng ký tài khoản, Đăng nhập (tài khoản mật khẩu hoặc Google), Đăng xuất, Quên mật khẩu (Quy định QD01: Gửi mã reset về email, giới hạn thời gian gửi lại là 60 giây), Đổi mật khẩu, Xem thông tin cá nhân (Quy định QD02: Hiển thị tên, email, chức vụ, ảnh cá nhân; không lộ mật khẩu), Sửa thông tin cá nhân (Quy định QD03: Chỉ cho phép đổi tên người dùng, không sửa email), Xin quyền giảng viên và Cấp quyền giảng viên.
  • Yêu cầu phi chức năng: Đảm bảo hiệu suất phản hồi nhanh, kiến trúc có khả năng mở rộng quy mô dữ liệu và người dùng, thiết lập cơ chế kiểm soát truy cập và bảo vệ dữ liệu, tính khả dụng với giao diện thân thiện.
  • Đặc tả Use Case chi tiết (điển hình Use Case Đăng ký - UC-1): Người dùng cung cấp dữ liệu hợp lệ; hệ thống tạo mã OTP ngẫu nhiên gồm 6 chữ số gửi qua email; người dùng nhập mã xác thực để kích hoạt tài khoản thành công; hệ thống điều hướng về trang đăng nhập.

Chương 4: Thiết kế giao diện và xử lý giao diện

Chương này mô tả chi tiết bố cục và hành vi tương tác trên từng màn hình của ứng dụng:

  • Phân hệ giao diện công cộng và xác thực: Màn hình Đăng nhập (hỗ trợ nhập form chuẩn và nút Đăng nhập với Google), màn hình Đăng ký, màn hình Thông báo đăng nhập thất bại, màn hình Quên mật khẩu và xác thực OTP.
  • Phân hệ trang chủ và người dùng chung: Giao diện Trang chủ, Trang Khóa học của tôi (hỗ trợ tìm kiếm, phân trang), Bảng điều khiển (Dashboard), Trang Diễn đàn (Forum) trao đổi và Trang Quản lý thông tin cá nhân.
  • Phân hệ dành cho Giảng viên:
    • Giao diện Thêm khóa học mới và cấu hình thuộc tính lớp học.
    • Giao diện Thêm nội dung khóa học theo từng bước (bước soạn thảo, bước cấu hình học liệu, bước xác nhận xuất bản).
    • Giao diện Chỉnh sửa khóa học và quản lý module/bài giảng/tài nguyên bài học.
    • Giao diện Chấm điểm bài nộp tự luận của sinh viên kèm khung nhận xét.
    • Giao diện Quản lý danh sách thành viên, thêm sinh viên qua nhập đơn lẻ hoặc tải tệp bảng tính CSV/XLSX.
    • Giao diện Bảng điểm và thống kê tiến độ học tập của toàn lớp.
  • Phân hệ dành cho Sinh viên:
    • Giao diện Trang chi tiết khóa học và danh mục bài giảng.
    • Giao diện Làm bài kiểm tra trắc nghiệm (Quiz): Hiển thị đồng hồ đếm ngược thời gian thực, bảng điều hướng danh sách câu hỏi và hộp thoại cảnh báo khi hết giờ làm bài.
    • Giao diện Nộp và chỉnh sửa bài tập tự luận: Hỗ trợ đính kèm tệp và thông báo trạng thái nộp bài đúng hạn hoặc trễ hạn.
    • Giao diện Tra cứu điểm số cá nhân và danh sách bạn học cùng lớp.

Chương 5: Kiểm thử ứng dụng

Nội dung chương trình bày điều kiện cài đặt và đánh giá chất lượng phần mềm:

  • Cài đặt môi trường cục bộ: Quy định cấu hình môi trường chạy phần mềm, các bước khởi động backend Spring Boot, cấu hình biến môi trường kết nối MySQL và khởi chạy giao diện phát triển ReactJS.
  • Môi trường triển khai thực tế: Thực hiện triển khai máy chủ cơ sở dữ liệu trên Microsoft Azure, ứng dụng backend trên Heroku và giao diện người dùng trên GitHub Pages.
  • Phạm vi và kết quả kiểm thử: Tập trung kiểm thử hộp đen trên các luồng nghiệp vụ chính: quy trình đăng ký/đăng nhập (bao gồm luồng xác thực Google OAuth2), luồng giảng viên biên soạn khóa học và nộp bài giảng, luồng sinh viên nộp bài tập và làm bài trắc nghiệm tính giờ. Kết quả ghi nhận các chức năng hoạt động đúng theo đặc tả nghiệp vụ, đáp ứng yêu cầu đề ra.

Chương 6: Kết luận

Chương kết luận tổng hợp lại toàn bộ kết quả nghiên cứu lý thuyết và thực hành, nhận định các thuận lợi, khó khăn trong quá trình làm việc nhóm, phân tích các ưu điểm và mặt hạn chế còn tồn tại của hệ thống, từ đó đề xuất các hướng mở rộng kỹ thuật tiếp theo.


Kết quả và đóng góp

Đồ án ghi nhận các kết quả thực tế dựa trên văn bản báo cáo:

  • Về mặt sản phẩm phần mềm:
    • Xây dựng hoàn chỉnh hệ thống website dạy học số Learn-X với 14 yêu cầu chức năng nghiệp vụ và 9 chức năng hệ thống cốt lõi.
    • Thiết kế và chuẩn hóa hệ thống cơ sở dữ liệu quan hệ gồm 15 bảng thực thể chính cùng bảng quản lý trường kiểm toán (Audit fields).
    • Tích hợp thành công cơ chế bảo mật kết hợp giữa Spring Security, JWT và giao thức xác thực Google OAuth2.
    • Xây dựng hệ thống giao diện tương thích cho cả hai nhóm tác nhân chính (giảng viên và sinh viên) bằng ReactJS và TailwindCSS, bảo đảm nguyên tắc UX.
    • Hoàn thành việc thiết lập và chạy thử nghiệm hệ thống trên các dịch vụ đám mây công cộng (Microsoft Azure, Heroku, GitHub Pages và Cloudinary).
  • Đóng góp giải pháp so với các nghiên cứu và hệ thống khảo sát:
    • Khắc phục nhược điểm giao diện phức tạp, thiếu tính thu hút của nền tảng Moodle thông qua việc tái cấu trúc giao diện theo phong cách tối giản, hiện đại.
    • Bổ sung khả năng tổ chức bài giảng phân cấp theo module độc lập và khả năng tái sử dụng tài nguyên học tập – yếu tố mà nhóm tác giả chỉ ra là còn hạn chế trên Google Classroom.
    • Tối ưu hóa quy trình quản lý lớp học bằng giải pháp hỗ trợ thêm học viên hàng loạt thông qua tệp bảng tính (CSV/XLSX) theo mã sinh viên hoặc địa chỉ email.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế của đề tài:

  • Hệ thống mới được thử nghiệm trong phạm vi môi trường nội bộ và các dịch vụ đám mây gói miễn phí (free-tier), chưa được triển khai diện rộng trên toàn trường để thu thập phản hồi từ số lượng lớn người dùng thực tế.
  • Các module nâng cao về tối ưu hóa bộ nhớ đệm (Redis) và kiểm soát tải yêu cầu đồng thời (Resilience4j) mới dừng lại ở bước nghiên cứu lý thuyết và định hướng tích hợp theo kế hoạch, chưa có số liệu đo lường benchmark chịu tải thực tế trong báo cáo.
  • Nền tảng chưa tích hợp tính năng thông báo đẩy theo thời gian thực (Push Notifications) và lớp học trực tuyến qua video.

Hướng nghiên cứu và phát triển tiếp:

  • Hiện thực hóa và cấu hình chuyên sâu giải pháp Redis Caching nhằm tăng tốc độ truy xuất các dữ liệu khóa học có tần suất đọc cao.
  • Triển khai toàn diện thư viện Resilience4j với các mẫu thiết kế Circuit Breaker, Rate Limiter để bảo vệ hệ thống khi sinh viên truy cập đồng thời vào các đợt thi trắc nghiệm cao điểm.
  • Bổ sung tính năng thông báo đẩy thời gian thực qua giao thức WebSocket và tích hợp phòng học trực tuyến ảo.
  • Phát triển thêm các công cụ phân tích nâng cao, tích hợp trí tuệ nhân tạo để cá nhân hóa lộ trình học tập cho từng sinh viên.

Giá trị tham khảo

Đồ án tốt nghiệp "Xây dựng hệ thống website dạy học số Learn-X dành cho giảng viên và sinh viên" là tài liệu tham khảo hữu ích cho:

  • Sinh viên chuyên ngành Công nghệ thông tin, Công nghệ phần mềm đang chuẩn bị thực hiện tiểu luận chuyên ngành hoặc khóa luận tốt nghiệp về phát triển ứng dụng web Fullstack.
  • Các nhà phát triển muốn tìm hiểu kiến trúc tích hợp giữa máy chủ Java Spring Boot (RESTful API, Spring Security, JWT, Google OAuth2) và thư viện ReactJS kết hợp TailwindCSS.
  • Người làm đề tài hệ thống thông tin cần tài liệu tham khảo về quy trình phân tích thiết kế chuẩn mực: từ khảo sát thực tế, mô hình hóa Use Case, thiết kế lược đồ tuần tự, chuẩn hóa cơ sở dữ liệu quan hệ đến việc lập tài liệu đặc tả API bằng Swagger/OpenAPI.

Câu hỏi thường gặp

  1. Cơ chế xác thực tài khoản Google trong hệ thống Learn-X được xử lý như thế nào? Hệ thống không ủy quyền hoàn toàn cho phiên làm việc của Google. Ứng dụng chỉ tiếp nhận idToken trả về sau khi người dùng đăng nhập tài khoản Google thành công, sau đó máy chủ backend Learn-X tiến hành xác thực idToken này, đối chiếu thông tin trong cơ sở dữ liệu và tự phát hành một chuỗi JWT nội bộ để client lưu trữ và gửi kèm trong tiêu đề Authorization: Bearer <token> cho các yêu cầu kế tiếp.

  2. Quy định nghiệp vụ đối với việc nộp bài tập và làm bài kiểm tra trắc nghiệm trên Learn-X là gì? Hệ thống thiết lập quy định kiểm tra thời hạn nghiêm ngặt (QD03 và QD04). Trước khi cho phép sinh viên nộp tệp bài làm hoặc bắt đầu làm bài trắc nghiệm, hệ thống sẽ kiểm tra thời gian hiện tại so với hạn chót. Nếu đã quá thời hạn quy định, hệ thống sẽ tự động khóa thao tác nộp bài hoặc từ chối quyền truy cập vào đề thi.

  3. Giảng viên có thể thêm sinh viên vào khóa học bằng những phương thức nào? Theo quy định QD05 và biểu mẫu BM01, hệ thống hỗ trợ hai phương thức: thêm thủ công từng sinh viên bằng cách nhập địa chỉ email, hoặc thêm hàng loạt bằng cách tải lên tệp bảng tính định dạng CSV hoặc XLSX có chứa cột Mã số sinh viên (MSSV) hoặc cột Gmail.

  4. Mô hình cơ sở dữ liệu của Learn-X gồm những thực thể chính nào? Cơ sở dữ liệu của Learn-X được xây dựng trên MySQL với 15 bảng thực thể chính: users, course, category, course_registration, module, lecture, resource, assignment, assignment_submission, quiz, question, quiz_question, quiz_submission, forum, topic, cùng các trường kiểm toán chung (Audit fields) nhằm lưu vết thời gian khởi tạo và cập nhật dữ liệu.

  5. Hệ thống Learn-X được triển khai thử nghiệm trên những nền tảng nào? Learn-X được phân tách triển khai trên các nền tảng đám mây: cơ sở dữ liệu MySQL chạy trên Microsoft Azure, máy chủ dịch vụ backend Spring Boot chạy trên Heroku, giao diện tĩnh Single Page Application (ReactJS) triển khai qua GitHub Pages, và tài nguyên đa phương tiện (hình ảnh, tệp tin) được quản lý qua dịch vụ Cloudinary.


Kết luận

Khóa luận tốt nghiệp của sinh viên Trần Hoàng Phúc và Nguyễn Hoàng Phương đã hoàn thành mục tiêu xây dựng hệ thống website dạy học số Learn-X phục vụ giảng viên và sinh viên Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh. Đề tài thể hiện quy trình phát triển phần mềm chặt chẽ từ khảo sát hiện trạng các nền tảng Moodle, Google Classroom đến việc mô hình hóa yêu cầu, thiết kế kiến trúc RESTful API bằng Spring Boot, giao diện người dùng bằng ReactJS và triển khai thực tế trên hạ tầng điện toán đám mây. Mặc dù vẫn còn những điểm cần hoàn thiện về tối ưu hóa tải chịu đựng cao và thử nghiệm diện rộng, Learn-X là một công trình nghiên cứu ứng dụng có giá trị tham khảo kỹ thuật cao cho sinh viên chuyên ngành công nghệ phần mềm.