Giới thiệu dự án

Trong bối cảnh chuyển đổi số giáo dục đại học (Higher Education Digital Transformation), việc tối ưu hóa quy trình quản trị học thuật đóng vai trò quyết định đến chất lượng đào tạo và hiệu quả vận hành. Tại các trường đại học kỹ thuật quy mô lớn như Trường Đại học Bách Khoa Hà Nội, việc quản lý các học phần Đồ án (Đồ án II, Đồ án III, Đồ án Chuyên ngành, Thực tập Kỹ thuật và Đồ án Tốt nghiệp) đối mặt với khối lượng dữ liệu khổng lồ. Theo thống kê thực tế tại Viện Toán ứng dụng và Tin học (SAMI - HUST), mỗi năm có hàng trăm sinh viên thuộc các chuyên ngành Toán Tin, Hệ thống thông tin quản lý và Kỹ sư tài năng đăng ký thực hiện đồ án tốt nghiệp dưới sự hướng dẫn của hơn 50 cán bộ, giảng viên.

Vấn đề thực tế và điểm nghẽn quy trình (Problem Statement)

Phương thức quản lý truyền thống tại đơn vị bộc lộ nhiều hạn chế nghiêm trọng:

  • Phân mảnh kênh giao tiếp: Viện sử dụng biểu mẫu Google Form và thông báo qua mạng xã hội (Facebook), dẫn đến tình trạng khó xác thực danh tính sinh viên, tồn tại nhiều đơn đăng ký ảo/trùng lặp.
  • Phân công thủ công kém tối ưu: Việc xếp giảng viên hướng dẫn (GVHD) dựa trên danh sách nguyện vọng thủ công bằng bảng tính Excel tốn từ 5–7 ngày làm việc của Ban lãnh đạo Viện và Trưởng bộ môn, dễ gây mất cân bằng tải giảng dạy (một số giảng viên quá tải trong khi giảng viên khác thiếu chỉ tiêu).
  • Rủi ro thất lạc báo cáo tiến độ vật lý: Quy trình theo dõi tiến độ dựa trên giấy tờ và chữ ký trực tiếp làm tăng nguy cơ thất lạc tài liệu, sai lệch điểm kỷ luật khi tổng hợp.
  • Tính toán điểm phức tạp: Điểm đánh giá đồ án là tổ hợp phi tuyến của nhiều thành phần: Điểm quá trình ($Đ_{QT}$), Điểm phản biện ($Đ_{PB}$), Điểm hội đồng ($Đ_{HĐ}$), Điểm kỷ luật ($Đ_{kyluat}$), Điểm nộp muộn ($Đ_{nopdoan.muon}$), và Điểm thưởng nghiên cứu khoa học ($Đ_{thuong}$). Việc tính toán thủ công dễ dẫn tới sai sót số liệu.

Mục tiêu dự án

  1. Số hóa toàn diện dữ liệu: Xây dựng hệ thống cơ sở dữ liệu quan hệ quản lý tập trung toàn bộ danh mục đồ án, định hướng nghiên cứu, hồ sơ giảng viên và lịch sử học tập của sinh viên.
  2. Tự động hóa phân công bằng thuật toán tối ưu: Ứng dụng biến thể của thuật toán Chấp nhận trì hoãn (Deferred Acceptance Algorithm - Gale-Shapley) giải quyết triệt để bài toán Hôn nhân bền vững (Stable Marriage Problem / Two-Sided Matching) trong việc ghép cặp sinh viên - giảng viên.
  3. Giám sát và tự động tính điểm: Thiết lập cơ chế kiểm soát tiến độ định kỳ (Milestone Tracking), tự động khấu trừ điểm kỷ luật/nộp muộn và tổng hợp điểm bảo vệ đồ án theo đúng quy chế đào tạo.
  4. Xây dựng kho lưu trữ số học thuật: Cho phép sinh viên khóa sau tra cứu, tham khảo đề tài và sản phẩm nghiên cứu của các khóa trước.

Phương pháp tiếp cận và kết quả kỳ vọng

Hệ thống được phát triển dưới dạng ứng dụng Web đa người dùng (Multi-role Web Application) theo mô hình MVC, sử dụng ngôn ngữ PHP và hệ quản trị cơ sở dữ liệu MySQL. Kết quả kỳ vọng đo lường được:

  • Giảm 95% thời gian tổng hợp và phân công hướng dẫn đồ án (từ 120 giờ làm việc thủ công xuống dưới 30 giây chạy thuật toán).
  • Tỷ lệ khớp nguyện vọng (Matching Satisfaction Rate) của sinh viên và giảng viên đạt trên 88%.
  • Độ chính xác trong tính toán điểm đồ án đa thành phần đạt 100%, loại bỏ hoàn toàn sai sót do con người.

Phạm vi và giới hạn

Hệ thống tập trung phục vụ công tác quản lý đồ án chuyên ngành và đồ án tốt nghiệp tại Viện Toán ứng dụng và Tin học, bao gồm 3 nhóm người dùng: Quản trị Viện (Ban lãnh đạo/Giáo vụ), Giảng viên và Sinh viên. Hệ thống chưa tích hợp cổng thanh toán thù lao chấm đồ án và chưa đồng bộ Single Sign-On (SSO) với cổng thông tin đào tạo chung toàn trường.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí Quản lý thủ công / Bán tự động (Google Form, Excel, Giấy) Hệ thống Phân công & Đánh giá Đồ án Đề xuất
Xác thực danh tính Không kiểm soát, dễ trùng lặp hoặc đăng ký giả mạo Định danh tài khoản phân quyền RBAC (Role-Based Access Control)
Khớp nguyện vọng Phân công thủ công theo cảm tính, mất 5–7 ngày Tự động hóa bằng thuật toán Gale-Shapley trong < 1 phút
Cân bằng tải giảng viên Dễ lệch hạn ngạch hướng dẫn giữa các bộ môn Cài đặt chặt chẽ quota $Q_j$ cho từng giảng viên
Theo dõi tiến độ Phiếu nhận xét giấy, dễ thất lạc, khó tra cứu Gửi báo cáo tiến độ số hóa, ghi nhận timestamp chính xác
Tính toán điểm số Nhập điểm Excel thủ công, dễ sai lệch công thức thưởng/phạt Tự động tính điểm đa tầng theo công thức quy chuẩn
Lưu trữ tri thức Báo cáo in ấn đóng cuốn chiếm không gian kho Kho lưu trữ số hóa tập trung, hỗ trợ tìm kiếm toàn văn

Phân tích yêu cầu theo mô hình MoSCoW

  • Must-have (Bắt buộc có): Module xác thực người dùng; Module đăng ký 2 nguyện vọng chuyên ngành hẹp (Các phương pháp Ngẫu nhiên, Các phương pháp Tối ưu, Tính toán khoa học và ứng dụng, Tin học); Module phân công tự động Gale-Shapley; Module cập nhật điểm thành phần ($Đ_{HD}, Đ_{PB}, Đ_{HĐ}$) và tính điểm tự động.
  • Should-have (Nên có): Báo cáo tiến độ trực tuyến theo từng mốc kiểm tra; Thống kê phổ điểm theo học kỳ; Quản lý hồ sơ năng lực nghiên cứu của giảng viên.
  • Could-have (Có thể mở rộng): Xem trước file báo cáo trực tuyến (PDF Viewer tích hợp); Gửi thông báo nhắc hạn nộp đồ án qua Email.
  • Won't-have (Chưa triển khai trong giai đoạn này): Tích hợp ứng dụng di động native; Kiểm tra trùng lặp đạo văn tự động.

Thiết kế hệ thống

Kiến trúc hệ thống

Hệ thống xây dựng theo mô hình 3 lớp (Three-Tier Architecture):

  1. Presentation Layer (Tầng giao diện): HTML5, CSS3, JavaScript, Bootstrap framework, DataTables.
  2. Application / Business Logic Layer (Tầng nghiệp vụ): Apache Web Server, PHP 7.4/8.0 xử lý logic nghiệp vụ, thuật toán ghép cặp hai phía, kiểm soát phân quyền.
  3. Data Layer (Tầng dữ liệu): MySQL 8.0 lưu trữ quan hệ thực thể, transaction ACID bảo đảm an toàn dữ liệu điểm số.
graph TD
    A[Sinh viên] -->|Đăng ký nguyện vọng, Nộp báo cáo| B[Presentation Layer - UI/UX]
    C[Giảng viên] -->|Xếp thứ tự ưu tiên, Chấm điểm| B
    D[Giáo vụ / Lãnh đạo Viện] -->|Cấu hình đợt đồ án, Phân hội đồng| B
    B --> E[Business Logic Layer - PHP Engine]
    E --> F[Module Quản lý Danh mục]
    E --> G[Module Thuật toán Gale-Shapley]
    E --> H[Module Tính toán Điểm & Tiến độ]
    F --> I[(Data Layer - MySQL 8.0)]
    G --> I
    H --> I

Thiết kế cơ sở dữ liệu quan hệ (Relational Database Schema)

Hệ thống bao gồm các bảng thực thể chính với ràng buộc toàn vẹn khóa ngoại:

  • tbl_sinhvien (ma_sv [PK], ho_ten, lop, cpa, so_dien_thoai, email, trang_thai)
  • tbl_giangvien (ma_gv [PK], ho_ten, hoc_vi, hoc_ham, ma_bomon, so_luong_huong_dan_toi_da)
  • tbl_dinhhuong (ma_dinhhuong [PK], ten_dinhhuong, ma_bomon)
  • tbl_dangky_doan (id [PK], ma_sv [FK], ma_kyhoc, loai_doan, nguyen_vong_1 [FK], nguyen_vong_2 [FK], gvhd_de_xuat [FK], trang_thai_duyet)
  • tbl_phancong_huongdan (id [PK], ma_sv [FK], ma_gv [FK], ma_kyhoc, ma_dinhhuong [FK], ngay_phancong)
  • tbl_baocao_tiendo (id [PK], ma_sv [FK], lan_baocao, noi_dung_thuchien, danh_gia_gv (Tốt/Khá/Chậm), diem_kyluat, file_dinhkem, ngay_nop)
  • tbl_danhgia_doan (id [PK], ma_sv [FK], ma_doan, diem_hd, diem_pb, diem_goc_hd, diem_thuong, diem_phat, diem_tong_ket)

Công thức tính điểm tự động hóa

Hệ thống hiện thực hóa logic tính điểm quy định tại Học viện Toán ứng dụng & Tin học:

  1. Điểm quá trình Đồ án II: $$Đ_{ĐAQT} = Đ_{HD} - Đ_{kyluat}$$
  2. Điểm kết thúc học phần Đồ án II: $$Đ_{ĐA} = 0.7 \times Đ_{PB} - (1.0 \times \text{Số ngày nộp muộn})$$
  3. Điểm Hội đồng Đồ án Tốt nghiệp ($Đ_{HĐ}$): $$Đ_{HĐ} = Đ_{goc} + \left( \frac{Đ_{kk}}{n} \right) - (Đ_{kyluat} + Đ_{khonghoplopcuoiky} + Đ_{nopdoan.muon})$$ Trong đó: $Đ_{goc} \le 9.5$; $Đ_{kk}$ là điểm khuyến khích NCKH (Bảng 2: Bài báo khoa học cộng 1.5đ, Giải Nhất NCKH cộng 1.0đ); $n$ là số đồng tác giả.

Implementation và kết quả

Development Process & Key Algorithms

Module quan trọng nhất của hệ thống là Module Phân công Hướng dẫn Đồ án tự động, hiện thực hóa bài toán ghép cặp sinh viên - giảng viên có giới hạn chỉ tiêu (Capacitated Gale-Shapley Algorithm).

<?php
/**
 * Class MatchingEngine - Hiện thực thuật toán Gale-Shapley mở rộng cho phân công đồ án
 * Giải quyết bài toán Two-sided Matching giữa Sinh viên (S) và Giảng viên (G) với Capacity Q_g
 */
class MatchingEngine {
    private $students = [];       // Danh sách SV và nguyện vọng ưu tiên
    private $professors = [];     // Danh sách GV, hạn ngạch (quota) và hàm ưu tiên SV (theo CPA)
    private $assignments = [];    // Kết quả phân công [ma_gv => [ma_sv1, ma_sv2, ...]]

    public function __construct(array $students, array $professors) {
        $this->students = $students;
        $this->professors = $professors;
        foreach ($professors as $pId => $pData) {
            $this->assignments[$pId] = [];
        }
    }

    public function executeDeferredAcceptance(): array {
        $freeStudents = array_keys($this->students);
        $proposals = array_fill_keys($freeStudents, 0); // Đếm số lần đề xuất của mỗi SV

        while (!empty($freeStudents)) {
            $sId = array_shift($freeStudents);
            $sPrefList = $this->students[$sId]['preferences'];

            // Nếu sinh viên đã duyệt hết danh sách nguyện vọng
            if ($proposals[$sId] >= count($sPrefList)) {
                continue; 
            }

            $preferredProf = $sPrefList[$proposals[$sId]];
            $proposals[$sId]++;

            $quota = $this->professors[$preferredProf]['quota'];
            $currentAssigned = &$this->assignments[$preferredProf];

            if (count($currentAssigned) < $quota) {
                // GV còn chỉ tiêu -> Tạm thời chấp nhận
                $currentAssigned[] = $sId;
            } else {
                // GV hết chỉ tiêu -> So sánh mức độ ưu tiên giữa SV mới và SV yếu nhất hiện tại
                $worstStudent = $this->getLowestRankedStudent($preferredProf, $currentAssigned);
                
                if ($this->prefers($preferredProf, $sId, $worstStudent)) {
                    // Chấp nhận SV mới, đẩy SV cũ ra danh sách tự do
                    $key = array_search($worstStudent, $currentAssigned);
                    unset($currentAssigned[$key]);
                    $currentAssigned = array_values($currentAssigned);
                    
                    $currentAssigned[] = $sId;
                    $freeStudents[] = $worstStudent;
                } else {
                    // Từ chối SV mới -> SV mới quay lại hàng đợi để xét nguyện vọng tiếp theo
                    $freeStudents[] = $sId;
                }
            }
        }
        return $this->assignments;
    }

    private function prefers(string $profId, string $newStudent, string $currentStudent): bool {
        // Tiêu chí ưu tiên: CPA cao hơn, hoặc SV đã liên hệ/làm đồ án trước đó
        $cpaNew = $this->students[$newStudent]['cpa'];
        $cpaCurrent = $this->students[$currentStudent]['cpa'];
        
        $hasPriorNew = $this->students[$newStudent]['prior_working'][$profId] ?? false;
        $hasPriorCurrent = $this->students[$currentStudent]['prior_working'][$profId] ?? false;

        if ($hasPriorNew !== $hasPriorCurrent) {
            return $hasPriorNew; // Ưu tiên người đã từng làm việc cùng kỳ trước
        }
        return $cpaNew > $cpaCurrent;
    }

    private function getLowestRankedStudent(string $profId, array $assignedList): string {
        $lowest = $assignedList[0];
        foreach ($assignedList as $sId) {
            if ($this->prefers($profId, $lowest, $sId)) {
                $lowest = $sId;
            }
        }
        return $lowest;
    }
}

Kiểm thử và Đánh giá hiệu năng (Testing & Benchmarks)

1. Kịch bản kiểm thử thuật toán phân công

Hệ thống được kiểm thử với tập dữ liệu giả lập $N = 350$ sinh viên và $M = 40$ giảng viên với hạn ngạch trung bình $\overline{Q} = 9$ sinh viên/giảng viên:

  • Độ phức tạp thuật toán: $\mathcal{O}(N \times K)$ với $K$ là số lượng nguyện vọng tối đa ($K = 2$). Thời gian thực thi trung bình đo được là 18.4 ms trên máy chủ thử nghiệm (CPU Intel Xeon E5-2670 v2 @ 2.50GHz, 8GB RAM).
  • Tính ổn định (Stability): 100% kết quả phân công không tồn tại cặp nghịch biến (Blocking Pair), tức không có trường hợp sinh viên $S_i$ và giảng viên $G_j$ muốn ghép cặp với nhau hơn là đối tác hiện tại được phân công.
-- Truy vấn tối ưu hóa tính toán điểm tổng kết đồ án có đánh chỉ mục (Indexed Query)
SELECT 
    sv.ma_sv, sv.ho_ten,
    dg.diem_hd, dg.diem_pb, dg.diem_goc_hd, dg.diem_thuong,
    COALESCE(SUM(bc.diem_kyluat), 0) AS tong_diem_kyluat,
    ROUND((0.7 * dg.diem_goc_hd + dg.diem_thuong - COALESCE(SUM(bc.diem_kyluat), 0)), 2) AS diem_tong_ket
FROM tbl_sinhvien sv
JOIN tbl_danhgia_doan dg ON sv.ma_sv = dg.ma_sv
LEFT JOIN tbl_baocao_tiendo bc ON sv.ma_sv = bc.ma_sv
WHERE dg.ma_kyhoc = '20211'
GROUP BY sv.ma_sv, sv.ho_ten, dg.diem_hd, dg.diem_pb, dg.diem_goc_hd, dg.diem_thuong;

2. Kết quả kiểm thử tải hệ thống (Load Testing)

Sử dụng công cụ Apache Benchmark (ab tool) với kịch bản 100 người dùng đồng thời (Concurrency Level = 100, Total Requests = 2,000):

  • Throughput: Đạt 482.35 requests/giây.
  • Latency trung bình: 207 ms.
  • Tỷ lệ lỗi (Failed requests): 0.00%.

Đổi mới và đóng góp

Đổi mới công nghệ

  1. Mô hình hóa bài toán ghép cặp học thuật (Academic Stable Matching): Khác với các hệ thống quản lý đồ án thông thường chỉ cho phép đăng ký dạng "đến trước phục vụ trước" (First-Come, First-Served) gây bất công bằng cho sinh viên giỏi và giảng viên, hệ thống áp dụng cơ chế ghép cặp hai chiều có ràng buộc cứng (CPA, quan hệ nghiên cứu kỳ trước, dung lượng phòng thí nghiệm).
  2. Pipeline giám sát tiến độ gắn liền với kỷ luật điểm: Tự động chuyển đổi các vi phạm tiến độ (nộp báo cáo trễ, vắng họp lớp) thành trọng số điểm phạt ($Đ_{phat}$), loại bỏ hoàn toàn việc tính toán cảm tính khi chấm bảo vệ tốt nghiệp.

So sánh với các giải pháp hiện nay

Tiêu chuẩn so sánh Phương pháp Quản lý Cũ (Thủ công) Hệ thống LMS Đa dụng (Moodle / Blackboard) Hệ thống Phân công & Đánh giá Đề xuất
Cơ chế Phân bổ Đề tài Thủ công qua Excel Đăng ký theo slot thời gian Thuật toán Gale-Shapley tối ưu
Xử lý Đa nguyện vọng Phức tạp, dễ bỏ sót NV2 Không hỗ trợ matching 2 phía Tự động chuyển NV2 nếu trượt NV1
Tính Điểm Đặc thù Viện Bảng tính riêng biệt Chỉ hỗ trợ tính điểm đơn giản Tích hợp sẵn bộ quy chế Viện SAMI
Thời gian Phân công 5 – 7 ngày làm việc Không tự động phân công < 1 phút (Tự động hóa hoàn toàn)
Tỷ lệ Sai sót Số liệu ~ 5% – 8% mỗi kỳ Thấp (nếu cấu hình chuẩn) 0% (Toàn vẹn ràng buộc CSDL)

Ứng dụng thực tế và triển khai

Hướng dẫn triển khai (Deployment Architecture)

Hệ thống được đóng gói để sẵn sàng triển khai trên môi trường Linux tiêu chuẩn (Ubuntu 20.04 / 22.04 LTS):

# 1. Cài đặt các gói phụ thuộc môi trường LAMP Stack
sudo apt update && sudo apt install -y apache2 mysql-server php php-mysql libapache2-mod-php git

# 2. Clone mã nguồn vào thư mục Web root
cd /var/www/html
sudo git clone https://github.com/vukhuyen-k62/qldoan-sami.git doan_manager
sudo chown -R www-data:www-data /var/www/html/doan_manager
sudo chmod -R 755 /var/www/html/doan_manager

# 3. Khởi tạo Cơ sở dữ liệu MySQL
sudo mysql -u root -p -e "CREATE DATABASE db_qldoan CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -u root -p db_qldoan < /var/www/html/doan_manager/database/schema.sql
# 4. Cấu hình VirtualHost Apache (/etc/apache2/sites-available/qldoan.conf)
<VirtualHost *:80>
    ServerAdmin admin@sami.hust.edu.vn
    DocumentRoot /var/www/html/doan_manager
    ServerName qldoan.sami.hust.edu.vn

    <Directory /var/www/html/doan_manager/>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/qldoan_error.log
    CustomLog ${APACHE_LOG_DIR}/qldoan_access.log combined
</VirtualHost>

Phân tích hiệu quả kinh tế & ROI (Return on Investment)

  • Tiết kiệm nhân lực: Cắt giảm ước tính 240 giờ công/năm của cán bộ giáo vụ và lãnh đạo bộ môn trong việc nhập liệu, rà soát đơn thư, phân hội đồng và tính điểm.
  • Tiết kiệm chi phí văn phòng phẩm: Loại bỏ 100% hồ sơ giấy theo dõi tiến độ (ước tính hơn 1,500 biểu mẫu in ấn mỗi năm học).
  • Thời gian thu hồi vốn đầu tư: Dưới 3 tháng vận hành thực tế.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  1. Kiến trúc phần mềm nguyên khối (Monolithic): Hệ thống được xây dựng bằng PHP thuần kết hợp mô hình MVC hướng thủ tục/đối tượng cơ bản, chưa tách biệt hoàn toàn giữa Backend API (RESTful/GraphQL) và Frontend Single Page Application (ReactJS/VueJS).
  2. Thiếu cơ chế xác thực tập trung: Chưa tích hợp với hệ thống xác thực CAS/LDAP của Trường Đại học Bách Khoa Hà Nội, đòi hỏi Viện phải cấp phát và quản lý tài khoản riêng biệt.
  3. Cơ chế gợi ý thụ động: Sinh viên lựa chọn nguyện vọng dựa trên danh mục đề tài tĩnh của giảng viên, chưa có cơ chế gợi ý thông minh dựa trên lịch sử điểm các môn học chuyên ngành.

Hướng phát triển trong tương lai

  • Nâng cấp kiến trúc: Chuyển đổi sang kiến trúc Microservices với Laravel/Node.js cho Backend và Flutter cho ứng dụng di động đa nền tảng.
  • Tích hợp Trí tuệ nhân tạo (AI Matching): Ứng dụng mô hình xử lý ngôn ngữ tự nhiên (NLP) để phân tích sự tương đồng ngữ nghĩa (Semantic Similarity) giữa định hướng nghiên cứu của giảng viên (qua các bài báo Google Scholar) và đề xuất đề tài của sinh viên.
  • Tích hợp kiểm tra đạo văn: Tự động kết nối API kiểm tra trùng lặp tài liệu khi sinh viên nộp bản nháp báo cáo toàn văn.

Đối tượng hưởng lợi

1. Sinh viên ngành Toán Tin & Hệ thống thông tin

  • Tra cứu nhanh chóng thông tin hướng nghiên cứu và đề tài của toàn bộ giảng viên trong Viện.
  • Đảm bảo quyền lợi minh bạch trong việc xét duyệt nguyện vọng dựa trên năng lực học tập (CPA).
  • Theo dõi trực quan điểm kỷ luật, tiến độ và phản hồi từ giảng viên theo thời gian thực.

2. Giảng viên hướng dẫn & Hội đồng bảo vệ

  • Quản lý tập trung toàn bộ danh sách sinh viên hướng dẫn mà không lo vượt quá hạn ngạch cho phép.
  • Đánh giá báo cáo tiến độ và nhập điểm hội đồng trực tiếp trên giao diện web, loại bỏ rủi ro sai sót trong quá trình tính điểm phức hợp.

3. Ban Lãnh đạo Viện & Bộ phận Giáo vụ

  • Thực hiện phân công hàng trăm sinh viên chỉ bằng một cú nhấp chuột với kết quả tối ưu toán học.
  • Xuất báo cáo thống kê kết quả học phần, phân phối điểm thi phục vụ công tác kiểm định chất lượng đào tạo (AUN-QA).

4. Cộng đồng Lập trình viên & Nghiên cứu viên

  • Cung cấp mã nguồn tham khảo mẫu về việc hiện thực hóa thuật toán Stable Marriage / Deferred Acceptance trong bài toán phân bổ nguồn lực thực tế.

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

1. Yêu cầu kỹ thuật phần cứng và môi trường để triển khai hệ thống là gì?

Hệ thống có chi phí tài nguyên thấp. Yêu cầu tối thiểu:

  • Server: 1 vCPU, 2GB RAM, 20GB SSD Storage.
  • Hệ điều hành: Linux (Ubuntu Server 18.04 LTS trở lên, CentOS 7+).
  • Môi trường Web/DB: Apache 2.4+ hoặc Nginx 1.18+, PHP phiên bản 7.4 đến 8.2, MySQL 5.7+ hoặc MariaDB 10.3+.

2. Giới hạn mở rộng (Scalability) của thuật toán Gale-Shapley khi số lượng sinh viên tăng đột biến là bao nhiêu?

Thuật toán Gale-Shapley có độ phức tạp thời gian trong trường hợp xấu nhất là $\mathcal{O}(N \times M)$ với $N$ là số sinh viên và $M$ là số giảng viên. Khi quy mô tăng lên 10,000 sinh viên và 500 giảng viên, thời gian thực thi của thuật toán viết bằng PHP thuần vẫn chỉ mất dưới 1.2 giây, hoàn toàn đáp ứng tốt trong môi trường ứng dụng thực tế.

3. Làm thế nào để tích hợp hệ thống với cổng thông tin đào tạo sẵn có của Nhà trường?

Hệ thống hỗ trợ xuất/nhập dữ liệu chuẩn hóa qua định dạng Microsoft Excel (.xlsx) và CSV thông qua thư viện PHP. Trong tương lai, có thể mở rộng các Endpoint RESTful API bảo mật bằng OAuth2/JWT để đồng bộ danh sách lớp học phần tự động từ hệ thống quản lý đào tạo chung của trường.

4. Cơ chế bảo đảm an toàn dữ liệu và phân quyền như thế nào?

Hệ thống áp dụng mô hình phân quyền 3 lớp theo vai trò (Viện - Giảng viên - Sinh viên). Toàn bộ truy vấn cơ sở dữ liệu sử dụng kỹ thuật Prepared Statements với PDO để loại trừ 100% lỗ hổng SQL Injection. Mật khẩu người dùng được băm bảo mật bằng thuật toán BCRYPT với cost factor tiêu chuẩn.

5. Chi phí đầu tư và thời gian hoàn vốn (ROI) khi triển khai tại một khoa/viện?

Chi phí phát triển hệ thống là 0 VNĐ do sử dụng hoàn toàn nền tảng mã nguồn mở (Open Source). Chi phí vận hành máy chủ ước tính khoảng 150,000 – 300,000 VNĐ/tháng (sử dụng VPS Cloud nội địa). Thời gian hoàn vốn đạt được ngay trong học kỳ đầu tiên nhờ tiết kiệm hàng trăm giờ lao động hành chính của đội ngũ giảng viên và giáo vụ.


Kết luận

Đồ án tốt nghiệp "Hệ thống phân công và đánh giá đồ án" do sinh viên Vũ Thị Khuyên thực hiện dưới sự hướng dẫn của TS. Trần Ngọc Thăng tại Viện Toán ứng dụng và Tin học - ĐHBK Hà Nội đã giải quyết trọn vẹn một bài toán quản trị học thuật cấp thiết. Bằng việc kết hợp chặt chẽ giữa lý thuyết Khoa học máy tính (Thuật toán Chấp nhận trì hoãn giải bài toán Hôn nhân bền vững) và kỹ thuật Công nghệ phần mềm (Kiến trúc Web PHP/MySQL), hệ thống đã chứng minh tính khả thi, hiệu năng vượt trội và giá trị ứng dụng thực tiễn cao. Đây là giải pháp chuyển đổi số kiểu mẫu, sẵn sàng triển khai nhân rộng cho các viện đào tạo chuyên ngành trên toàn quốc nhằm nâng cao tính minh bạch, công bằng và năng suất quản lý giáo dục đại học.