Tải bản đầy đủ (.pdf) (157 trang)

Khóa luận xây dựng hệ thống hỗ trợ chấm điểm lập trình tự động

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (6.6 MB, 157 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

PHÙNG THANH TÚ
NGUYỄN HỒNG THÁI DƯƠNG

KHĨA LUẬN TỐT NGHIỆP

XÂY DỰNG HỆ THỐNG HỖ TRỢ CHẤM ĐIỂM LẬP
TRÌNH TỰ ĐỘNG
BUILDING AN AUTOMATIC CODE SCORING SYSTEM

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

TP. HỒ CHÍ MINH, 2023


ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

PHÙNG THANH TÚ
NGUYỄN HỒNG THÁI DƯƠNG

KHĨA LUẬN TỐT NGHIỆP

XÂY DỰNG HỆ THỐNG HỖ TRỢ CHẤM ĐIỂM LẬP
TRÌNH TỰ ĐỘNG
BUILDING AN AUTOMATIC CODE SCORING SYSTEM


KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

TP. HỒ CHÍ MINH, 2023


THƠNG TIN HỘI ĐỒNG CHẤM KHĨA LUẬN TỐT NGHIỆP

Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ……………………
ngày ………………….. của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
1. ................................................. – Chủ tịch.
2. ................................................. – Thư ký.
3. ................................................. – Ủy viên.
4. ................................................. – Ủy viên.


ĐHQG TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CƠNG NGHỆ THƠNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc
TP. HCM, ngày…..tháng…..năm……..

NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP
(CỦA CÁN BỘ HƯỚNG DẪN)
Tên khóa luận:
XÂY DỰNG HỆ THỐNG HỖ TRỢ CHẤM ĐIỂM LẬP TRÌNH TỰ ĐỘNG
Nhóm SV thực hiện:

Cán bộ hướng dẫn/phản biện:


Phùng Thanh Tú

19522455

Nguyễn Hoàng Thái Dương

19521409

ThS. Thái Thụy Hàn Uyển

Đánh giá Khóa luận
1.

Về cuốn báo cáo:

Số trang:
Số bảng số liệu:
Số tài liệu tham khảo:

Số chương:
Số hình vẽ:
Sản phẩm:

Một số nhận xét về hình thức cuốn báo cáo:
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………

2.


Về nội dung nghiên cứu:

……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………

3.

Về chương trình ứng dụng:


……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………

4.

Về thái độ làm việc của sinh viên:

……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………

Đánh giá chung:
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………

Điểm từng sinh viên:

Phùng Thanh Tú:………../10
Nguyễn Hoàng Thái Dương:………../10

Người nhận xét
(Ký tên và ghi rõ họ tên)


ĐHQG TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CƠNG NGHỆ THƠNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc
TP. HCM, ngày…..tháng…..năm……..

NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP
(CỦA CÁN BỘ PHẢN BIỆN)
Tên khóa luận:
XÂY DỰNG HỆ THỐNG HỖ TRỢ CHẤM ĐIỂM LẬP TRÌNH TỰ ĐỘNG
Nhóm SV thực hiện:

Cán bộ hướng dẫn/phản biện:

Phùng Thanh Tú

19522455

Nguyễn Hoàng Thái Dương

19521409


ThS. Thái Thụy Hàn Uyển

Đánh giá Khóa luận
5.

Về cuốn báo cáo:

Số trang:
Số bảng số liệu:
Số tài liệu tham khảo:

Số chương:
Số hình vẽ:
Sản phẩm:

Một số nhận xét về hình thức cuốn báo cáo:
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………

6.

Về nội dung nghiên cứu:

……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………

7.


Về chương trình ứng dụng:


……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………

8.

Về thái độ làm việc của sinh viên:

……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………

Đánh giá chung:
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………

Điểm từng sinh viên:
Phùng Thanh Tú:………../10
Nguyễn Hoàng Thái Dương:………../10

Người nhận xét
(Ký tên và ghi rõ họ tên)


LỜI CẢM ƠN

Trong vòng 4 năm đại học vừa qua, chúng em xin chân thành cảm ơn các quý Thầy Cô,
đặc biệt là quý Thầy Cô khoa Công nghệ phần mềm, đã tận tình giảng dạy và giúp đỡ
chúng em, tạo điều kiện cho chúng em học tập và nghiên cứu, đồng thời cung cấp những
kiến thức nền tảng trọng yếu cho chúng em để chúng em có thể xây dựng và hoàn thành
luận văn cũng như áp dụng những kiến thức q báu đó trong q trình phát triển sự nghiệp
sau này.
Chúng em xin chân thành cảm ơn quý thầy cô của trường Đại học Công nghệ thông tin,
đặc biệt là cơ Thái Thụy Hàn Uyển đã tận tình đóng góp những ý kiến, đồng thời tạo điều
kiện và mơi trường cho chúng em thử nghiệm khóa luận trong thực tế, qua đó hỗ trợ để
chúng em có thể tìm ra những thiếu sót, cũng như cải thiện và hồn thành khóa luận một
cách tốt nhất.
Bên cạnh đó, nhóm xin chân thành cảm ơn các bạn lớp Hướng đối tượng IT002.N25 đã
dùng thử ứng dụng, tạo điều kiện cho nhóm thử nghiệm khóa luận trong thực tế, cũng như
đóng góp những phản hồi giúp nhóm cải thiện khóa luận cũng như khắc phục những thiếu
sót mà nhóm sẽ khơng phát hiện được nếu không thử nghiệm thực tế.
Trong suốt q trình tìm hiểu và thực hiện khóa luận, do đề tài sử dụng cả những công
nghệ mới phức tạp và những công nghệ khá cũ, thời gian và khả năng có giới hạn nên
nhóm vẫn cịn nhiều thiếu sót. Do đó, chúng em rất mong nhận được sự thơng cảm và
những ý kiến đóng góp chân thành từ phía q thầy cơ và các bạn. Một lần nữa, nhóm
nghiên cứu xin chân thành cảm ơn quý thầy cô và các bạn.

Thành phố Hồ Chí Minh, tháng 07 năm 2023
Phùng Thanh Tú
Nguyễn Hoàng Thái Dương


ĐHQG TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CƠNG NGHỆ THƠNG TIN


CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc

ĐỀ CƯƠNG CHI TIẾT
TÊN ĐỀ TÀI:
XÂY DỰNG HỆ THỐNG HỖ TRỢ CHẤM ĐIỂM LẬP TRÌNH TỰ ĐỘNG

TÊN ĐỀ TÀI TIẾNG ANH:
BUILDING AUTOMATED CODE SCORING SYSTEM

Cán bộ hướng dẫn: ThS. Thái Thụy Hàn Uyển
Thời gian thực hiện: Từ ngày 25/02/2023 đến ngày kết thúc Khóa luận tốt nghiệp
Sinh viên thực hiện:
Phùng Thanh Tú - 19522455
Nguyễn Hoàng Thái Dương - 19521409


Nội dung đề tài:
1. Giới thiệu đề tài:
Hiện nay lập trình và Cơng nghệ thơng tin là một từ khóa vô cùng hấp dẫn
được rất nhiều người quan tâm. Trước bối cảnh người người nhà nhà theo ngành
nhưng vẫn thiếu nguồn nhân lực chất lượng cao phục vụ cho đất nước, em nhận ra
việc đào tạo các lập trình viên tài năng là một bước vô cùng quan trọng trong việc
đóng góp tạo ra nguồn nhân lực chất lượng cao cho đất nước, góp phần giải tỏa
cơn khát nhân lực vốn đã là thực trạng ở không chỉ Việt Nam mà cịn trên tồn thế
giới. Hiện nay có rất nhiều ứng dụng giải bài tập lập trình phổ biến như
Hackerrank, LeetCode, Codeforce, … đã và đang hoạt động, ngoài ra cũng có
những ứng dụng hỗ trợ dạy và học như Moodle, Google Classroom, … Tuy nhiên
chúng đều có những vấn đề, hoặc chỉ tập trung vào giải bài tập, ít có sự tương tác
giữa giảng viên và học viên, hoặc tập trung vào việc dạy và học nhưng lại không

hỗ trợ hồn tồn cho việc dạy lập trình. Do đó, để giải quyết vấn đề đó, em quyết
định bắt tay vào thực hiện đề tài này.
2. Mục tiêu đề tài:
-

Xây dựng ứng dụng tạo & quản lý lớp học có sự hỗ trợ của Hệ thống hỗ trợ
chấm điểm lập trình tự động. Lưu ý ứng dụng sẽ tập trung hồn tồn vào trải
nghiệm dạy và học, do đó sẽ khơng có tính năng quản lý sinh viên và giảng viên.

-

Cho phép người quản trị hệ thống (có quyền truy cập vào máy chủ) mở rộng hệ
thống, hỗ trợ thêm ngơn ngữ lập trình mới mà khơng cần sửa đổi mã nguồn (mà
thêm bằng cách thêm dữ liệu trong database và cài đặt compiler và runtime của
ngôn ngữ mới ở trong terminal của server container).

-

Cho phép giảng viên tạo & quản lý môn học, đồng thời mời sinh viên vào lớp
thông qua link

- Cho

phép giảng viên tạo Tài liệu học tập, Bài tập, cài đặt Chấm điểm tự động cho

Bài tập lập trình
- Cho

phép sinh viên truy cập vào lớp học và các tài liệu trong lớp học, giải và nộp


các Bài tập lập trình
- Hệ thống chấm điểm tự động chấm điểm dựa theo các cài đặt mà Giảng viên đã


thiết lập, đồng thời quy về điểm số cho bài tập
- Điểm số được tính tốn tự động dựa theo các trọng số, sau đó quy về điểm trung
bình mơn học cho các học sinh
- Thống kê điểm số của môn học
- Tất cả các tài liệu & bài tập lập trình và cả bài nộp của sinh viên đều được thực
hiện thơng qua một trình soạn thảo văn bản giống với VSCode (Monaco Editor)
- Giao diện bắt mắt, trực quan, bố cục hợp lý, dễ sử dụng
3. Phạm vi đề tài:
• Phạm

vi mơi trường:

- Ứng dụng có thể được truy cập từ Web trên các máy tính cá nhân (PC)
- Server của ứng dụng được đóng gói bằng các Container và có thể được host trên
mọi thiết bị hỗ trợ Docker, kể cả là trên các nền tảng Cloud
• Phạm

-

vi chức năng:

Xác thực và quản lí thơng tin cá nhân
Tạo & Quản lí mơn học
Mời & tham gia mơn học
Tạo & Quản lí Tài liệu của mơn học (markdown, ảnh, video)
Tạo & Quản lí các bài tập lập trình

Chấm điểm tự động cho các bài nộp bài tập lập trình
Thống kê dữ liệu lớp học (điểm và điểm trung bình của các học viên)
Cho phép ứng dụng mở rộng, hỗ trợ thêm ngơn ngữ lập trình mới mà khơng cần
sửa đổi source code (mà thông qua dữ liệu trên database)

4. Đối tượng sử dụng:
-

Giảng viên muốn tạo lớp học lập trình.
Học viên/Học sinh muốn tham gia và học trong một lớp học lập trình.

5. Phương pháp thực hiện:
-

Tìm hiểu các cơng nghệ liên quan
Tìm hiểu các ứng dụng liên quan để hiểu rõ về nghiệp vụ.
Nghiên cứu nhu cầu hiện nay trong việc dạy học lập trình

-

Tiến hành phân tích và thiết kế hệ thống.

-

Tìm hiểu UX/UI và tiến hành thiết kế giao diện cho ứng dụng.
Tiến hành triển khai và kiểm thử.

6. Công nghệ sử dụng:



-

Backend: NodeJS, ExpressJS, Joi, RabbitMQ, MSSQL Driver for Node,
ioi/isolate, ubuntu CLI
Frontend: React, Redux, Redux Saga, TypeScript, MUI
Testing: Jest, RTL
Database: Microsoft SQL Server
Source Control: GitHub.
Deploy: Docker, Kubernetes, AWS
Document & Process Management: Notion
Project management: Scrum Framework

7. Kết quả mong đợi:
-

Hoàn thành được các chức năng theo yêu cầu đề ra
Deploy ứng dụng và thử nghiệm ứng dụng với phạm vi 25-50 người dùng (tùy
theo số nhân sự mà em đầu tư được)
Đảm bảo ứng dụng có thể hỗ trợ việc thêm ngơn ngữ lập trình mới mà khơng
cần sửa đổi mã nguồn

Kế hoạch thực hiện:
Giai đoạn
Tìm hiểu cơng
nghệ & nghiệp vụ

Triển khai ứng
dụng dùng mơ
hình Scrum


Thời gian

Cơng việc

Từ 25/02/2023

- Tìm hiểu các công nghệ sử dụng cho ứng
dụng
- Khảo sát các ứng dụng liên quan
- Đưa ra được yêu cầu cho bài tốn

đến 05/03/2023

Từ 5/03/2023 đến
5/06/2023

-

Cơng việc thực hiện trong mỗi
Sprint:
- Phân tích yêu cầu
- Thiết kế Database
- Thiết kế UX cho chức
năng
- Thiết kế API
- Chuẩn bị Document
- Triển khai API cho chức
năng
- Triển khai UI cho chức



năng
- Kiểm thử tính năng
- Tổng hợp tài liệu cho
quá trình
- Các tính năng phát triển cho mỗi
Sprint:
-

-

Đóng gói và phân
phối ứng dụng

Từ 05/06/2023
đến 05/07/2023

-

Thử nghiệm ứng
dụng

Từ 05/7/2023
đến 15/07/2023

Xác thực và quản lí thơng tin
cá nhân
Tạo & Quản lí mơn học
Tạo & Quản lí Tài liệu của
mơn học (markdown, ảnh,

video)
Tạo & Quản lí các bài tập lập
trình
Chấm điểm tự động cho các
bài nộp bài tập lập trình
Thống kê dữ liệu lớp học (điểm
và điểm trung bình của các học
viên)

Khắc phục các vấn đề cịn lại trong
ứng dụng
Đóng gói tồn bộ ứng dụng bằng
Docker
Deploy ứng dụng lên Azure
Tổng hợp tài liệu cho quá trình

- Tìm kiếm & kêu gọi cộng đồng dùng thử.
- Tiến hành sửa lỗi phát sinh nếu có.
- Cải thiện giao diện và hoàn thành ứng
dụng

Hoàn thiện

Từ 15/07/2023

- Viết báo cáo khóa luận.

báo cáo và

đến 20/07/2023


- Làm slide thuyết trình.

slide thuyết
trình


Xác nhận của CBHD

TP. HCM, ngày 25 tháng 02 năm 2023

(Ký tên và ghi rõ họ tên)

Sinh viên
(Ký tên và ghi rõ họ tên)

ThS. Thái Thụy Hàn Uyển
Phùng Thanh Tú

Nguyễn Hoàng Thái Dương


MỤC LỤC
TÓM TẮT KHÓA LUẬN ..........................................................................................1
CHƯƠNG 1.

TỔNG QUAN ..................................................................................2

1.1


Lý do chọn đề tài .............................................................................................2

1.2

Mục tiêu ..........................................................................................................3

1.3

Phạm vi nghiên cứu .........................................................................................4

1.4

Ưu điểm của đề tài so với các hệ thống khác ..................................................4

1.5

Hướng tiếp cận ................................................................................................5

1.6

Cách thức hoạt động của hệ thống ..................................................................7

1.7

Ý nghĩa thực tiễn .............................................................................................9

CHƯƠNG 2.

CƠ SỞ LÝ THUYẾT .....................................................................10


2.1

Thực thi mã nguồn máy tính .........................................................................10

2.2

Standard input, Standard output, Standard eror ............................................12

2.3

Sandbox .........................................................................................................13

CHƯƠNG 3.

CÔNG NGHỆ ................................................................................15

3.1

React ..............................................................................................................15

3.2

TypeScript .....................................................................................................15

3.3

Redux ............................................................................................................16

3.4


Redux Saga....................................................................................................17

3.5

MUI ...............................................................................................................18

3.6

ExpressJS ......................................................................................................18

3.7

Joi ..................................................................................................................18

3.8

SQL Server ....................................................................................................19

3.9

RabbitMQ ......................................................................................................19

3.10

Azure Blob Storage .......................................................................................20

3.11

Isolate ............................................................................................................20


3.12

Docker ...........................................................................................................20

CHƯƠNG 4.
4.1

XÂY DỰNG HỆ THỐNG .............................................................21

Phân tích yêu cầu ..........................................................................................21

4.1.1 Tính năng ......................................................................................................21


4.1.2 Use case .........................................................................................................22
4.1.3 Phân tích use case..........................................................................................23
4.1.4 Yêu cầu phi chức năng ..................................................................................52
4.2

Thiết kế hệ thống ...........................................................................................55

4.2.1 Sơ đồ hệ thống...............................................................................................55
4.2.2 Sơ đồ tuần tự .................................................................................................56
4.2.3 Cơ sở dữ liệu .................................................................................................74
4.2.4 Phương pháp thực hiện..................................................................................81
4.2.5 Xây dựng giao diện .......................................................................................93
4.3

Triển khai hệ thống .....................................................................................104


4.3.1 Triển khai CSDL, Server và Bucket ...........................................................104
4.3.2 Triển khai Engine ........................................................................................105
4.3.3 Triển khai Ứng dụng Web ..........................................................................105
4.3.4 Đăng ký tên miền ........................................................................................105
CHƯƠNG 5.
5.1

THỬ NGHIỆM HỆ THỐNG .......................................................106

Kiểm thử hệ thống .......................................................................................106

5.1.1 Cách thức kiểm thử .....................................................................................106
5.1.2 Các Test case ...............................................................................................106
5.2

THỬ NGHIỆM THỰC TẾ .........................................................................115

CHƯƠNG 6.

KẾT LUẬN ..................................................................................129

6.1

Kết quả đạt được .........................................................................................129

6.2

Thuận lợi và khó khăn .................................................................................129

6.3


Hướng phát triển .........................................................................................130

TÀI LIỆU THAM KHẢO .......................................................................................131
PHỤ LỤC ................................................................................................................133


DANH MỤC HÌNH
Hình 1-1 Sơ đồ bao qt .............................................................................................5
Hình 1-2 Sơ đồ cách thức hoạt động ...........................................................................8
Hình 2-1 Mã chương trình minh họa ........................................................................10
Hình 2-2 Mã chương trình minh họa ........................................................................11
Hình 2-3 Mã chương trình minh họa ........................................................................11
Hình 2-4 Mã chương trình minh họa ........................................................................11
Hình 2-5 Mã chương trình minh họa ........................................................................12
Hình 3-1 React ..........................................................................................................15
Hình 3-2 Typescript ..................................................................................................15
Hình 3-3 Redux .........................................................................................................16
Hình 3-4 Sơ đồ lifecycle Redux ................................................................................16
Hình 3-5 Redux Saga ................................................................................................17
Hình 3-6 Sơ đồ hoạt động Redux Saga .....................................................................17
Hình 3-7 Material-UI ................................................................................................18
Hình 3-8 ExpressJS ...................................................................................................18
Hình 3-9 Joi ...............................................................................................................18
Hình 3-10 Microsoft SQL Server ..............................................................................19
Hình 3-11 Rabbit MQ ...............................................................................................19
Hình 3-12 Docker ......................................................................................................20
Hình 4-1 Sơ đồ Use Case hệ thống PLP ...................................................................22
Hình 4-2 Sơ đồ luồng họat động Đăng nhập.............................................................24
Hình 4-3 Sơ đồ luồng hoạt động Đăng ký ................................................................26

Hình 4-4 Sơ đồ luồng hoạt động Đổi mật khẩu ........................................................28
Hình 4-5 Sơ đồ luồng hoạt động Chỉnh sửa thơng tin cá nhân .................................30
Hình 4-6 Sơ đồ luồng hoạt động Tạo khóa học ........................................................32
Hình 4-7 Sơ đơ luồng hoạt động Tham gia khóa học ...............................................34
Hình 4-8 Sơ đồ luồng hoạt động Trang Khóa học ....................................................37


Hình 4-9 Sơ đồ luồng hoạt động Trang chi tiết Khóa học ........................................39
Hình 4-10 Sơ đồ luồng hoạt động Ẩn/Hiện tài liệu ..................................................40
Hình 4-11 Sơ đồ luồng hoạt động Trang chi tiết Tài liệu .........................................43
Hình 4-12 Sơ đồ luồng hoạt động Chỉnh sửa và tạo "Content" ................................43
Hình 4-13 Sơ đồ luồng hoạt động Chỉnh sửa vào tạo"Testcase" ..............................44
Hình 4-14 Sơ đồ luồng hoạt động "Content" ............................................................44
Hình 4-15 Sơ đồ luồng hoạt động Chỉnh sửa ,tạo "Exercise" và tạo “Submission” .45
Hình 4-16 Sơ đồ lng hoạt đơng Chỉnh sửa "Submission" ....................................45
Hình 4-17 Sơ đồ luồng hoạt động Tạo tài liệu ..........................................................51
Hình 4-18 Sơ đồ kiến trúc hệ thống PLP ..................................................................55
Hình 4-19 Sơ đồ tuần tự Đăng nhập .........................................................................56
Hình 4-20 Sơ đồ tuần tự đăng ký ..............................................................................57
Hình 4-21 Sơ đồ tuần tự Chỉnh sửa thơng tin cá nhân ..............................................58
Hình 4-22 Sơ đồ tuần tự Đổi mật khẩu ....................................................................59
Hình 4-23 Sơ đồ tuần tự trang Khóa học ................................................................60
Hình 4-24 Sơ đồ tuần tự trang chi tiết Khóa học ......................................................60
Hình 4-25 Sơ đồ tuần tự Tạo khóa học .....................................................................61
Hình 4-26 Sơ đồ tuần tự Tham gia Khóa học bằng mã ............................................62
Hình 4-27 Sơ đồ tuần tự Tham gia Khóa học URL ..................................................63
Hình 4-28 Sơ đơ tuần tự xem bảng điểm Khóa học .................................................64
Hình 4-29 Sơ đồ tuần tự Ẩn/ Hiện tài liệu ...............................................................64
Hình 4-30 Sơ đồ tuần trang chi tiết Tài liệu..............................................................65
Hình 4-31 Sơ đồ tuần tự Tạo tài liệu .........................................................................66

Hình 4-32 Sơ đồ tuần tự Chỉnh sửa nội dung cho Tài liệu .......................................67
Hình 4-33 Sơ đồ tuần tự Chỉnh sửa Testcases cho Tài liệu ......................................68
Hình 4-34 Sơ đồ tuần tự Chỉnh sửa bài tập tài liệu ...................................................69
Hình 4-35 Sơ đồ tuần tự cho Tạo bài tập cho Taif liệu .............................................70
Hình 4-36 Sơ đồ tuần tự nộp bài ...............................................................................71
Hình 4-37 Sơ đồ tuần tự Chỉnh sửa bài nộp ..............................................................72


Hình 4-38 Sơ đồ tuần tự xem kết quả bài nộp ..........................................................73
Hình 4-39 Sơ đồ tuần tự Xem tất cả kết quả bài nộp của Tài Liệu ...........................73
Hình 4-40 Sơ đồ Cơ sở dữ liệu .................................................................................74
Hình 6-1 Sơ đồ liên hiện giữa TestCase và Exercise ................................................82
Hình 6-2 Sơ đồ mối quan hệ giữ Submission và SubmissionUser ...........................83
Hình 6-3 Chi tiết bảng Programming Language .......................................................84
Hình 6-4 Đoạn mã chương trình minh họa ...............................................................86
Hình 6-5 Mã chương trình chấm bài mình họa .........................................................87
Hình 6-6 Metafile ......................................................................................................89
Hình 6-7 Mã chương trình minh họa ........................................................................90
Hình 6-8 Mã chương trình minh họa ........................................................................90
Hình 6-9 Mã chương trình minh họa ........................................................................91
Hình 6-10 Chi tiết bảng TestResult ...........................................................................91
Hình 4-41 Trang Đăng nhập .....................................................................................94
Hình 4-42 Trang Đăng ký .........................................................................................94
Hình 4-53 Giao diện Đổi mật khẩu ...........................................................................95
Hình 4-43 Trang Thơng tin tài khoản .......................................................................95
Hình 4-45 Trang Khóa học .......................................................................................96
Hình 4-46 Giao diện Tạo khóa học ...........................................................................96
Hình 4-47 Giao diện tham gia Khóa học qua mã ......................................................97
Hình 4-48 Giao diện xác nhận tham gia khóa học ....................................................97
Hình 4-49 Trang chi tiết khóa học cho Creator ........................................................98

Hình 4-50 Trang chi tiết khóa học cho Non-Creator ................................................98
Hình 4-51 Giao diện tạo Tài liệu...............................................................................99
Hình 4-52 Giao diện xem điểm của Khóa học ..........................................................99
Hình 4-53 Trang chi tiết tài liệu cho Tài liệu không bài tập cho Creator ...............100
Hình 4-54 Trang chi tiết tài liệu cho Tài liệu khơng bài tập cho Non-Creator .......100
Hình 4-55 Trang chi tiết tài liệu cho Tài liệu có bài tập cho Creator .....................101
Hình 4-56 Trang chi tiết tài liệu cho Tài liệu có bài tập cho Non-Creator .............101


Hình 4-57 Giao diện bài tập cho Creator ................................................................102
Hình 4-58 Giao diện bài tập cho Non-Creator ........................................................102
Hình 4-59 Giao diện bài nộp cho Creator ...............................................................103
Hình 4-60 Giao diện bài nộp cho Non- Creator .....................................................103
Hình 4-61 Giao diện chỉnh sửa test case cho bài tập cho Creator ..........................104
Hình 5-1 Mã chương trình chấm thử thực tế ..........................................................120
Hình 5-2 Mã chương trình chấm thử thực tế ..........................................................121
Hình 5-3 Mã chương trình chấm thử thực tế ..........................................................122
Hình 5-4 Mã chương trình minh họa ......................................................................127


DANH MỤC BẢNG
Bảng 4-1 Mô tả chức năng Đăng nhập......................................................................23
Bảng 4-2 Quy tắc nghiệp vụ Đăng nhập ...................................................................24
Bảng 4-3 Mô tả chức năng Đăng ký .........................................................................25
Bảng 4-4 Quy tác nghiệp vụ Đăng ký .......................................................................26
Bảng 4-5 Mô tả chức năng Đổi mật khẩu .................................................................27
Bảng 4-6 Quy tắc nghiệp vụ Đổi mật khẩu ...............................................................28
Bảng 4-7 Mô tả chức năng Chỉnh sửa thông tin cá nhân ..........................................29
Bảng 4-8 Quy tắc nghiệp vụ Chỉnh sửa thông tin cá nhân .......................................30
Bảng 4-9 Mô tả chức năng Tạo khóa học .................................................................31

Bảng 4-10 Quy tắc nghiệp vụ Tạo khóa học .............................................................32
Bảng 4-11 Mơ tả chức năng Tham gia khóa học ......................................................33
Bảng 4-12 Quy tắc nghiệp vụ Tham gia khóa học ....................................................34
Bảng 4-13 Mơ tả chức năng trang Khóa học ............................................................36
Bảng 4-14 Quy tắc nghiệp vụ trang Khóa học ..........................................................37
Bảng 4-15 Mô tả chức năng trang chi tiết Khóa học ................................................38
Bảng 4-16 Quy tắc nghiệp vụ trang chi tiết Khóa học ..............................................40
Bảng 4-17 Mơ tả chức năng trang chi tiết Tài liệu ...................................................42
Bảng 4-18 Quy tắc nghiệp vụ trang chi tiết Tài liệu .................................................46
Bảng 4-19 Mô tả chức năng tạo Tài liệu ...................................................................50
Bảng 4-20 Quy tắc nghiệp vụ tạo Tài liệu ................................................................51
Bảng 4-21 PLP Users ................................................................................................74
Bảng 4-22 CourseInvitation ......................................................................................75
Bảng 4-23 Course ......................................................................................................75
Bảng 4-24 CourseScore.............................................................................................75
Bảng 4-25 PlpCourseRole .........................................................................................75
Bảng 4-26 PLP CourseAuthorization .......................................................................76
Bảng 4-27 Document ................................................................................................76


Bảng 4-28 Document Content ...................................................................................76
Bảng 4-29 Document Course ....................................................................................77
Bảng 4-30 Document Exercise..................................................................................77
Bảng 4-31 Document Score ......................................................................................77
Bảng 4-32 Exercise ...................................................................................................77
Bảng 4-33 Submission ..............................................................................................78
Bảng 4-34 Submission User ......................................................................................79
Bảng 4-35 Test Case .................................................................................................79
Bảng 4-36 Test Result ...............................................................................................79
Bảng 4-37 Media Storage..........................................................................................80

Bảng 4-38 Programming Language ..........................................................................80
Bảng 4-39 Run status ................................................................................................81
Bảng 4-40 Sample Source Code ...............................................................................81
Bảng 4-41 Programming Language ..........................................................................93


DANH MỤC TỪ VIẾT TẮT

STT

Từ viết tắt

Từ đầy đủ

Ý nghĩa

1

STT

Số thứ tự

Số thứ tự trong bảng.

2

API

Application Programming
Interface


Giao diện lập trình ứng dụng.

REST

Representational State
Transfer

Một kiểu kiến trúc lập trình, định
nghĩa các quy tắc để thiết kế web
service.

3

4

Engine

Engine chấm điểm tự động

Công cụ chấm điểm tự động được
cài đặt vào trong một máy chủ
riêng, thực hiện chấm điểm tự
động và cập nhật kết quả vào
CSDL

5

Server


API Server

Server cung cấp REST API để
đảm bảo toàn bộ hệ thống hoạt
động

6

CSDL

Cơ sở dữ liệu

Nơi chưa toàn bộ dữ liệu hệ thống


TĨM TẮT KHĨA LUẬN
Trong bối cảnh cơng nghệ thơng tin phát triển, việc đào tạo nhân lực công nghệ thông
tin cũng trở nên quan trọng không kém. Hệ thống chấm bài tập lập trình tự động là
một trong số các công cụ khá phổ biến trong ngành giáo dục về công nghệ thông tin,
đặc biệt là công cụ cốt lõi trong các kỳ thi lập trình thi đấu.
Đề tài này cung cấp cách nhìn và dữ liệu tổng quan về hệ thống chấm điểm lập trình
tự động dựa trên test case mà người dùng cung cấp, sau đó cung cấp một phương
pháp để xây dựng một hệ thống chấm điểm lập trình tự động.
Sau đó, từ phương pháp mà nhóm nghiên cứu chỉ ra, đề tài đi đến hiện thực hóa
phương pháp thơng qua việc thiết kế và xây dựng một hệ thống hỗ trợ chấm điểm
thực hành và một ứng dụng web sử dụng hệ thống trên để chấm điểm bài tập lập trình
dựa trên các test case và cài đặt đã được định nghĩa từ trước, đồng thời quy ra điểm
số trung bình của mơn học dựa trên điểm tự động (điểm do hệ thống chấm bài tạo ra)
và điểm thủ cơng (điểm do chính người tạo ra bài tập cung cấp).
Từ hệ thống đã thiết kế và xây dựng, đề tài cung cấp cách triển khai hệ thống trên các

môi trường local (môi trường thử nghiệm) và môi trường trên cloud. Thông qua việc
triển khai trên môi trường cloud, hệ thống có thể được sử dụng ở bất cứ máy tính nào
có trình duyệt Web, kết nối internet mà khơng cần phải cài đặt hệ thống.
Ngồi ra, đề tài cung cấp kết quả thử nghiệm của hệ thống khi sử dụng thử hệ thống
2 lần với 2 phương pháp khác nhau. Lần 1 cho sinh viên làm thử trực tiếp trên hệ
thống trong kì thi thử mơn Lập trình hướng đối tượng, và lần 2 lấy bài làm của sinh
viên nhập vào hệ thống trong kì thi thật mơn Lập trình hướng đối tượng.
Cuối cùng, đề tài đi đến kết luận, phân tích những ưu điểm và nhược điểm của hệ
thống, của quá trình nghiên cứu, và rút ra hướng phát triển trong tương lai.

1


CHƯƠNG 1.
1.1

TỔNG QUAN

Lý do chọn đề tài

Trong quá trình học tập và tìm hiểu về các phương pháp và kỹ thuật lập trình, nhóm
nghiên cứu đã có cơ hội tiếp xúc với các hệ thống chấm điểm bài tập lập trình tự động
sử dụng trong các nền tảng lập trình thi đấu như LeetCode, HackerRank, codeforces,
… và đã có dịp sử dụng thử những công cụ trên. Thông qua việc sử dụng chúng,
nhóm nghiên cứu đã đặt những câu hỏi và sự tò mò về cách thức mà chúng hoạt động
đã thơi thúc nhóm nghiên cứu tìm hiểu về đề tài này.
Ngồi ra, trong q trình học tập tại Trường, nhóm đã có cơ hội được tham gia vào
q trình giảng dạy tại trường với vai trò là trợ giảng thực hành mơn Lập trình hướng
đối tượng. Một thành viên của nhóm nghiên cứu đã có cơ hội được ra đề thi và chấm
bài thi thực hành cho khoảng gần 100 sinh viên của 2 lớp thực hành. Trong quá trình

chấm điểm, người chấm điểm tải mã nguồn của sinh viên từ trên hệ thống quản lí
mơn học của trường về dưới dạng .zip, sau đó giải nén chúng, sau đó mở lên bằng
trình soạn thảo và lúc này mới chạy thử mã nguồn để xem kết quả, và chấm điểm.
Q trình này diễn ra rất lâu và hồn tồn thủ cơng. Khi đó nhóm nghiên cứu đã đặt
vấn đề về việc liệu có cách nào có thể tự động hóa tồn bộ q trình chấm điểm này
hoặc ít nhất tự động hóa một phần của q trình, như vậy sẽ giảm bớt lượng thời gian
và công sức cho việc chấm bài đồng thời khiến quá trình này bớt nhàm chán. Đây là
lý do thứ hai nhóm tiến hành nghiên cứu tìm hiểu về đề tài này.
Bên cạnh đó, sau thời gian học tập tại trường, nhóm nghiên cứu cũng muốn thực hiện
xây dựng một sản phẩm phần mềm, tổng hợp và vận dụng các kiến thức mà nhóm đã
học tập và tìm hiểu vào sản phẩm đó. Do đó, nhóm đã tìm hiểu và xây dựng đề tài
này như một cách để ơn lại tồn bộ kiến thức đã học và áp dụng kiến thức đó vào sản
phẩm.
Tóm lại, sự tị mị về cơng nghệ chấm điểm lập trình tự động, nhu cầu về một cơng
cụ có khả năng tự động hóa cơng việc chấm điểm của giảng viên, và việc ôn tập lại

2


×