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

Trong bối cảnh công nghệ thông tin và mạng internet phát triển mạnh mẽ, các nền tảng giáo dục trực tuyến đã trở thành xu hướng phổ biến, đáp ứng nhu cầu học tập từ xa và giúp người học tiết kiệm đáng kể thời gian, chi phí. Mặc dù các nền tảng mạng xã hội đang được tận dụng rộng rãi để chia sẻ kiến thức, hình thức này bộc lộ nhược điểm lớn là thông tin bị phân mảng, thiếu tính tổ chức và không có cấu trúc sư phạm rõ ràng, dẫn đến việc tìm kiếm và tiếp thu tri thức gặp nhiều khó khăn, thiếu độ tin cậy.

Nhằm giải quyết bất cập trên, đề tài "Xây dựng hệ thống quản lý khóa học trực tuyến" (Building Online Course Management System) được thực hiện bởi hai sinh viên Bùi Thiện Nhân (MSSV: 19521927) và Nguyễn Yến Nhi (MSSV: 19520205) dưới sự hướng dẫn của TS. Nguyễn Trịnh Đông tại Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin – Đại học Quốc gia Thành phố Hồ Chí Minh (năm 2023). Đề tài hướng đến việc ứng dụng công nghệ để xây dựng một hệ thống quản lý học tập (LMS) hoàn chỉnh trên môi trường di động.

Văn bản xác định các mục tiêu và nhiệm vụ nghiên cứu cụ thể như sau:

  1. Nghiên cứu tổng quan về hệ thống quản lý học tập (LMS), các mô hình triển khai và thách thức vận hành.
  2. Tìm hiểu cơ chế hoạt động của hệ thống gợi ý (Recommendation System), trọng tâm là thuật toán lọc cộng tác (Collaborative Filtering).
  3. Khảo sát và lựa chọn các công nghệ hiện đại phù hợp cho ứng dụng di động đa nền tảng và hệ thống máy chủ backend.
  4. Phân tích yêu cầu, đặc tả các ca sử dụng (use-case) và thiết kế kiến trúc hệ thống, cơ sở dữ liệu cùng giao diện người dùng.
  5. Hiện thực hóa các tính năng cốt lõi: quản lý tài khoản, quản lý khóa học, bài giảng, bài kiểm tra, tương tác thời gian thực (bình luận, livestream), tích hợp thanh toán trực tuyến và gợi ý khóa học tự động.

Đối tượng nghiên cứu của khóa luận là mô hình hệ thống quản lý khóa học trực tuyến và thuật toán đề xuất nội dung học tập. Phạm vi nghiên cứu tập trung vào môi trường ứng dụng di động dành cho hai hệ điều hành phổ biến là Android và iOS. Về mặt không gian và thời gian, khóa luận được hoàn thành vào tháng 7 năm 2023 tại Trường Đại học Công nghệ Thông tin, Đại học Quốc gia Thành phố Hồ Chí Minh.

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

Khóa luận xây dựng nội dung dựa trên hệ thống cơ sở lý thuyết chuyên ngành công nghệ thông tin và công nghệ phần mềm:

  • Hệ thống Quản lý Học tập (LMS - Learning Management System): Khung lý thuyết về LMS được tiếp cận từ các thành phần cấu tạo gồm Giao diện người dùng (UI), Cơ sở dữ liệu (Database), Hệ thống quản lý và xử lý dữ liệu (Data Management System), cùng các phân hệ tính năng quản lý khóa học, tương tác học tập và đánh giá tiến độ. Tác giả phân tích hai mô hình triển khai chính: mô hình truyền thống (on-premise) với ưu điểm bảo mật cao nhưng chi phí hạ tầng lớn; và mô hình dựa trên điện toán đám mây (cloud-based) với tính linh hoạt, khả năng mở rộng tốt nhưng phụ thuộc vào nhà cung cấp dịch vụ.
  • Hệ thống gợi ý và thuật toán Lọc cộng tác (Collaborative Filtering): Khóa luận nghiên cứu giả định nền tảng rằng những người dùng có tương tác hoặc đánh giá tương đồng trong quá khứ sẽ có xu hướng quan tâm đến các mục tiêu tương tự trong tương lai. Tác giả phân loại rõ hai nhánh: Lọc cộng tác dựa trên người dùng (User-Based Collaborative Filtering) và Lọc cộng tác dựa trên mục tiêu (Item-Based Collaborative Filtering). Hệ thống trong khóa luận lựa chọn tiếp cận theo mô hình User-Based Collaborative Filtering nhằm khai thác ma trận xếp hạng (1 đến 5 sao) và nhận xét của người học.

Phương pháp nghiên cứu thực tế bao gồm:

  • Phương pháp phân tích - tổng hợp lý thuyết: Nghiên cứu tài liệu chuyên khảo về LMS, giao thức truyền thông mạng, kiến trúc phần mềm và thuật toán máy học.
  • Phương pháp phân tích và thiết kế hệ thống: Sử dụng phương pháp mô hình hóa hướng đối tượng để xây dựng sơ đồ ca sử dụng, sơ đồ logic dữ liệu và sơ đồ tuần tự giao dịch.
  • Phương pháp thực nghiệm phát triển phần mềm: Hiện thực hóa hệ thống bằng mã nguồn thực tế, cấu hình và kết nối các dịch vụ API trung gian.
  • Nguồn dữ liệu: Dữ liệu người dùng, danh mục khóa học, bài giảng, câu hỏi kiểm tra, ma trận đánh giá xếp hạng và dữ liệu tin tức được tích hợp thông qua Google API.

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

Hệ thống được thiết kế theo mô hình kiến trúc phân tầng kết hợp giữa máy khách di động (client) và hệ thống máy chủ dịch vụ (backend server).

Phân hệ / Thành phần Công nghệ sử dụng Vai trò và chức năng kỹ thuật
Front-end di động Flutter, ngôn ngữ Dart Phát triển ứng dụng di động đa nền tảng (Android và iOS) từ một cơ sở mã nguồn duy nhất, tận dụng Software Development Kit (SDK) và thư viện giao diện tái sử dụng.
Back-end server NestJS, TypeScript, Node.js Xây dựng kiến trúc dịch vụ phía máy chủ theo hướng đối tượng (OOP), quản lý các module, controller, service, hỗ trợ Dependency Injection (DI), middleware và pipes.
Hệ thống đề xuất Python Xây dựng và thực thi thuật toán User-Based Collaborative Filtering để tính toán ma trận tương đồng và đưa ra danh sách khóa học gợi ý.
Cơ sở dữ liệu chính MongoDB Hệ quản trị cơ sở dữ liệu NoSQL lưu trữ dữ liệu phi cấu trúc, hỗ trợ mở rộng quy mô linh hoạt và xử lý các truy vấn thông tin phức tạp.
Lưu trữ tệp tin Firebase Storage Dịch vụ đám mây của Google phục vụ lưu trữ an toàn các tệp tin đa phương tiện dung lượng lớn như hình ảnh và video bài giảng.
Giao tiếp thời gian thực Web Socket, Socket.IO Thiết lập kết nối hai chiều (full-duplex) liên tục giữa client và server phục vụ tính năng bình luận trực tiếp không cần tải lại trang.
Truyền phát trực tiếp WebRTC Công nghệ mã nguồn mở tạo kết nối ngang hàng (peer-to-peer) truyền dữ liệu âm thanh và video trực tiếp từ giảng viên đến học viên trong tính năng livestream.
Cổng thanh toán VNPAY Tích hợp cổng thanh toán trực tuyến qua giao thức HTTP(S), sử dụng mã đơn vị (Merchant ID), khóa bí mật (Secret Key) và URL callback.
Công cụ tìm kiếm tin tức Google API Tích hợp công cụ tìm kiếm của Google để truy xuất và hiển thị các bài viết, tin tức chuyên ngành liên quan đến khóa học.
Thiết kế & Quản lý mã Figma, GitHub Thiết kế giao diện tương tác người dùng (UI/UX) và quản lý phiên bản mã nguồn phân tán cho nhóm phát triển.

Về quy trình xử lý livestream qua WebRTC, khóa luận xác lập 5 bước kỹ thuật:

  1. Xác định vai trò thành phần (giảng viên chia sẻ luồng hình ảnh/âm thanh; học viên tiếp nhận luồng dữ liệu).
  2. Cài đặt và cấu hình kết nối WebRTC thông qua API trình duyệt/ứng dụng, xác định IP, cổng và giao thức.
  3. Thu nhận và truyền tải dữ liệu âm thanh/video trực tiếp từ camera, microphone của giảng viên đến máy học viên.
  4. Xử lý đồng bộ dữ liệu nhằm đảm bảo giảm thiểu độ trễ thời gian thực.
  5. Cung cấp các công cụ tương tác phụ trợ như khung trò chuyện, hỏi đáp song song với luồng phát sóng.

Về quy trình thanh toán VNPAY, hệ thống thiết kế luồng tuần tự gồm 8 bước: tạo yêu cầu thanh toán qua HTTP(S), VNPAY xác thực và tạo URL thanh toán, người dùng nhập thông tin bảo mật tại cổng VNPAY, VNPAY truy vấn ngân hàng xử lý giao dịch, ngân hàng phản hồi kết quả, VNPAY chuyển tiếp thông báo về hệ thống qua URL callback, và hệ thống cập nhật trạng thái đơn hàng.

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

Chương 1: Giới thiệu đề tài

Chương 1 thiết lập nền tảng nghiên cứu thông qua việc phân tích bối cảnh giáo dục trực tuyến và những tồn tại khi chia sẻ tri thức tự phát trên mạng xã hội. Tác giả xác định ưu điểm của hệ thống LMS có cấu trúc: tổ chức tri thức minh bạch, đảm bảo chất lượng bài giảng, tăng cường tương tác và hỗ trợ đánh giá thành tích học tập. Đồng thời, chương này chỉ ra các thách thức như hạn chế về kỹ năng công nghệ của một bộ phận người dùng, chi phí bảo trì nâng cấp và giới hạn tương tác trực tuyến so với môi trường trực tiếp. Nội dung chương khái quát danh mục các chức năng cốt lõi và cấu trúc báo cáo của toàn bộ khóa luận.

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

Chương 2 trình bày chi tiết cơ sở lý luận về LMS, so sánh hai mô hình triển khai nội bộ và điện toán đám mây, đồng thời phân tích các thách thức về bảo mật, xử lý tải dữ liệu lớn và giải pháp áp dụng kiến trúc module linh hoạt. Tiếp đó, chương đi sâu vào các nền tảng công nghệ được lựa chọn: giới thiệu framework Flutter và ngôn ngữ lập trình Dart của Google; kiến trúc hướng đối tượng của NestJS; nguyên lý hoạt động của WebSocket và Socket.IO trong giao tiếp hai chiều; cơ chế truyền phát dữ liệu peer-to-peer của WebRTC; khả năng lưu trữ tệp tin của Firebase Storage; mô hình dữ liệu NoSQL trong MongoDB; cấu trúc tích hợp cổng thanh toán VNPAY (bao gồm sơ đồ tuần tự và các khái niệm Merchant ID, Secret Key, URL callback); và dịch vụ tìm kiếm qua Google API.

Chương 3: Recommendation System cho tính năng đề xuất khoá học dựa trên Collaborative Filtering

Chương 3 tập trung xây dựng cơ sở toán học và giải thuật cho hệ thống đề xuất khóa học. Tác giả phân tích vai trò của Recommendation System, lấy ví dụ thực tiễn từ hệ thống của Netflix. Nội dung phân định rõ hai phương pháp chính: User-Based Collaborative Filtering (phù hợp khi tập người dùng lớn hơn tập khóa học) và Item-Based Collaborative Filtering. Do đặc thù dữ liệu nghiên cứu, nhóm tác giả lựa chọn User-Based Collaborative Filtering. Quy trình hoạt động được mô tả qua các công đoạn:

  1. Thu thập dữ liệu đánh giá của người dùng qua hai hình thức: xếp hạng định lượng (1 đến 5 sao) và nhận xét định tính.
  2. Tiền xử lý dữ liệu: lọc nhiễu, chuẩn hóa dữ liệu và xây dựng ma trận người dùng - khóa học (User-Item Matrix).
  3. Tính toán độ tương đồng về sở thích giữa các người dùng.
  4. Dự đoán điểm xếp hạng cho những khóa học mà người dùng hiện tại chưa tham gia và tạo danh sách đề xuất cá nhân hóa.

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

Chương 4 là phần nội dung kỹ thuật trọng tâm của khóa luận, bao gồm:

  • Đặc tả 22 ca sử dụng (Use-case): Đăng nhập, Đăng ký, Đăng xuất, Xác thực email, Quên mật khẩu, Xem danh sách khóa học, Xem chi tiết khóa học, Tham gia khóa học, Bình luận khóa học, Đánh giá khóa học, Nâng cấp tài khoản, Làm bài kiểm tra, Tham gia Livestream, Tương tác với người dùng khác, Đánh giá giảng viên, Cập nhật hồ sơ, Bắt đầu livestream, Thêm mới khóa học, Chỉnh sửa khóa học, Xóa khóa học, Tạo mới bài kiểm tra, Cập nhật bài kiểm tra, Xóa bài kiểm tra.
  • Thiết kế cơ sở dữ liệu: Chi tiết cấu trúc của 11 bảng dữ liệu gồm: User, Course, Section, Lesson, Exam, Question, Result, Comment, Rate, History, RecentCourse.
  • Thiết kế giao diện người dùng: Đặc tả thành phần cho 18 màn hình chức năng: SignIn, SignUp, ForgotPassword, Home, Search, TeacherDetail, CourseDetail (hỗ trợ hai trạng thái người dùng đã tham gia hoặc chưa tham gia), LessonDetail, Livestream, EnrolledCourse, Profile, UpdateProfile, UpgradeAccount, Notification, Language, PrivacyPolicy, HelpCenter, UploadedCourses, CreateCourse.

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

Chương 5 tổng kết toàn diện mức độ hoàn thành nhiệm vụ nghiên cứu, đánh giá kết quả đạt được về mặt kỹ thuật và giá trị thực tiễn của phần mềm. Chương này cũng phân tích các giới hạn kỹ thuật còn tồn đọng trong quá trình xây dựng hệ thống và đề xuất các định hướng nghiên cứu phát triển tiếp theo.

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

Khóa luận đạt được các kết quả kỹ thuật cụ thể đã được kiểm chứng qua sản phẩm ứng dụng:

  • Xây dựng thành công ứng dụng di động LMS trên hai nền tảng Android và iOS bằng Flutter và Dart.
  • Triển khai hệ thống máy chủ backend hoạt động ổn định trên nền tảng NestJS, tích hợp cơ sở dữ liệu NoSQL MongoDB và dịch vụ lưu trữ đám mây Firebase Storage.
  • Hiện thực hóa thành công tính năng bình luận thời gian thực thông qua Socket.IO và phòng học trực tiếp (livestream) chất lượng cao bằng công nghệ WebRTC kết nối ngang hàng.
  • Tích hợp thành công cổng thanh toán trực tuyến VNPAY, cho phép xử lý giao dịch nạp phí và mua khóa học an toàn qua thẻ ngân hàng, mã QR và ví điện tử.
  • Xây dựng mô-đun gợi ý khóa học thông minh bằng Python áp dụng giải thuật User-Based Collaborative Filtering, giúp người học tiếp cận các nội dung phù hợp với sở thích và lịch sử học tập.
  • Hoàn thiện hệ thống tài liệu kỹ thuật chi tiết với 11 bảng cơ sở dữ liệu logic, 22 use-case đặc tả nghiệp vụ và 18 màn hình giao diện người dùng.

Về mặt đóng góp khoa học và thực tiễn:

  • Đóng góp công nghệ: Chứng minh tính khả thi của việc kết hợp các công nghệ mới (Flutter, NestJS, MongoDB, Socket.IO, WebRTC) nhằm tạo ra một hệ thống ứng dụng di động giáo dục có hiệu năng cao, kiến trúc rõ ràng và dễ bảo trì.
  • Đóng góp giải pháp: Cung cấp một môi trường học tập linh hoạt trên thiết bị di động, khắc phục tình trạng phân mảng kiến thức trên mạng xã hội bằng một quy trình quản lý bài giảng, kiểm tra đánh giá và tương tác sư phạm bài bản.

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

Khóa luận chỉ rõ các mặt hạn chế còn tồn tại dựa trên phạm vi và kết quả thực nghiệm:

  • Trình độ công nghệ thông tin không đồng đều của người dùng có thể tạo ra rào cản nhất định khi tiếp cận ứng dụng.
  • Khả năng tương tác trực tuyến qua màn hình di động vẫn tồn tại những khoảng cách nhất định so với sự trao đổi trực tiếp tại lớp học truyền thống.
  • Chi phí đầu tư và mức độ phức tạp kỹ thuật khi bảo trì, mở rộng hệ thống lên quy mô lớn trong tương lai.
  • Về thuật toán gợi ý Collaborative Filtering: hiệu quả của hệ thống phụ thuộc lớn vào mức độ đầy đủ của dữ liệu đánh giá; trong giai đoạn đầu khi người dùng và lượng đánh giá còn ít, việc dự đoán độ tương đồng có thể gặp khó khăn (vấn đề cold-start và dữ liệu thưa thớt).

Các định hướng nghiên cứu và phát triển tiếp theo được tác giả đề xuất:

  • Mở rộng tích hợp các giao thức xác thực nâng cao như Single Sign-On (SSO), LDAP hoặc OAuth để tạo thuận lợi cho việc liên kết tài khoản.
  • Tích hợp hệ thống với các hệ thống quản trị nội dung khóa học (CMS) sẵn có của các trường học và các kho học liệu số, thư viện điện tử.
  • Nghiên cứu ứng dụng các công nghệ truyền thông tương tác thế hệ mới như video toàn cảnh 360 độ, công nghệ thực tế ảo (VR) vào bài giảng trực tuyến.
  • Ứng dụng kỹ thuật phân tích dữ liệu lớn (Big Data) và các mô hình trí tuệ nhân tạo nâng cao để hoàn thiện tính năng phân tích hành vi và cá nhân hóa lộ trình học tập.

Giá trị tham khảo

Bản khóa luận tốt nghiệp là tài liệu tham khảo hữu ích cho:

  • Sinh viên và học viên ngành Công nghệ phần mềm, Công nghệ thông tin: Có thể tham khảo phương pháp phân tích yêu cầu, quy trình lập đặc tả ca sử dụng (use-case), thiết kế kiến trúc hệ thống đa nền tảng và thiết kế cơ sở dữ liệu NoSQL (MongoDB).
  • Kỹ sư phát triển phần mềm di động và web: Tham khảo tài liệu thiết kế giao diện di động trên Flutter, cách tổ chức backend dạng mô-đun bằng NestJS, và kỹ thuật hiện thực kết nối thời gian thực qua Socket.IO và WebRTC.
  • Người nghiên cứu hệ thống gợi ý: Có thể sử dụng Chương 3 như một tài liệu nền tảng về toán học và giải thuật thực thi mô hình User-Based Collaborative Filtering dựa trên ma trận đánh giá người dùng.
  • Các nhà phát triển hệ thống thương mại điện tử / giáo dục: Tham khảo quy trình tuần tự 8 bước và các tham số kỹ thuật cần thiết (Merchant ID, Secret Key, Callback URL) khi tích hợp cổng thanh toán VNPAY.

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

1. Khóa luận sử dụng công nghệ nào để phát triển ứng dụng di động cho cả hai hệ điều hành Android và iOS?
Tác giả sử dụng framework mã nguồn mở Flutter cùng ngôn ngữ lập trình hướng đối tượng Dart do Google phát triển, cho phép biên dịch sang mã máy gốc cho cả hai nền tảng từ một cơ sở mã nguồn duy nhất.

2. Thuật toán gợi ý khóa học trong hệ thống thuộc loại nào và được xây dựng bằng ngôn ngữ gì?
Hệ thống sử dụng phương pháp Lọc cộng tác dựa trên người dùng (User-Based Collaborative Filtering), được lập trình bằng ngôn ngữ Python, hoạt động dựa trên việc tính toán ma trận xếp hạng (thang điểm 1 đến 5 sao và nhận xét) giữa các người dùng tương đồng.

3. Cơ chế nào được sử dụng để thực hiện tính năng bình luận và chia sẻ livestream trong ứng dụng?
Tính năng bình luận thời gian thực sử dụng giao thức WebSocket thông qua thư viện Socket.IO. Tính năng chia sẻ livestream giữa giảng viên và học viên sử dụng công nghệ truyền thông WebRTC kết nối ngang hàng (peer-to-peer).

4. Dữ liệu của hệ thống được quản lý và lưu trữ thông qua những công nghệ nào?
Hệ thống sử dụng cơ sở dữ liệu NoSQL MongoDB để lưu trữ dữ liệu thông tin có cấu trúc và phi cấu trúc (người dùng, khóa học, bài kiểm tra, bình luận), kết hợp cùng dịch vụ điện toán đám mây Firebase Storage để lưu trữ các tệp tin đa phương tiện dung lượng lớn như hình ảnh và video.

5. Cơ sở dữ liệu của hệ thống bao gồm những bảng dữ liệu chính nào?
Cơ sở dữ liệu được thiết kế gồm 11 bảng logic chính: User (người dùng), Course (khóa học), Section (chương mục), Lesson (bài học), Exam (bài kiểm tra), Question (câu hỏi), Result (kết quả kiểm tra), Comment (bình luận), Rate (đánh giá xếp hạng), History (lịch sử học tập) và RecentCourse (khóa học xem gần đây).

Kết luận

Khóa luận tốt nghiệp của sinh viên Bùi Thiện Nhân và Nguyễn Yến Nhi đã hoàn thành trọn vẹn mục tiêu thiết kế và xây dựng hệ thống quản lý khóa học trực tuyến (LMS) hoàn chỉnh trên nền tảng di động. Bằng việc kết hợp hệ sinh thái công nghệ gồm Flutter, NestJS, MongoDB cùng các giải pháp thời gian thực như Socket.IO và WebRTC, hệ thống giải quyết tốt bài toán tổ chức tri thức và nâng cao tương tác dạy - học từ xa. Sự kết hợp giữa mô hình đề xuất User-Based Collaborative Filtering và cổng thanh toán trực tuyến VNPAY khẳng định tính ứng dụng thực tiễn cao của đề tài trong lĩnh vực công nghệ giáo dục số. Đây là công trình kỹ thuật có phương pháp nghiên cứu rõ ràng, tài liệu hóa chặt chẽ và mang giá trị tham khảo học thuật tốt cho các nghiên cứu phát triển phần mềm cùng lĩnh vực.