Với tính đặc thù của các môn lập trình đối với ngành Công nghệ thông tin, việc giảng viên đưa ra bài tập dành cho học sinh là một điều vô cùng cần thiết.. Với khả năng tự động hóa các th
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC HOA SEN KHOA KHOA HỌC VÀ CÔNG NGHỆ
BÁO CÁO NGHIÊN CỨU KHOA HỌC
LEAS – MÔ HÌNH CHẤM ĐIỂM TỰ ĐỘNG MÃ
CODE LẬP TRÌNH C VÀ C++
SVTH: Lưu Minh Phúc
Lớp: QL141 Khoa: Khoa học và Công nghệ Năm thứ: 1
Ngành học: Công nghệ Thông tin
Người hướng dẫn: Ths Nguyễn Văn Sơn
Thành phố Hồ Chí Minh, Tháng 6/2015
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC HOA SEN
Trang 2KHOA KHOA HỌC VÀ CÔNG NGHỆ
BÁO CÁO NGHIÊN CỨU KHOA HỌC
LEAS – MÔ HÌNH CHẤM ĐIỂM TỰ ĐỘNG MÃ
CODE LẬP TRÌNH C VÀ C++
SVTH: Lưu Minh Phúc
Người hướng dẫn: Ths Nguyễn Văn Sơn
Thành phố Hồ Chí Minh, Tháng 6/2015
Trang 3TRÍCH YẾU
Hiện nay, ngành Công nghệ thông tin trên thế giới đang phát triển nhanh, cùng với đó là nhu cầu đào tạo các lớp Công nghệ thông tin ngày càng lớn Với tính đặc thù của các môn lập trình đối với ngành Công nghệ thông tin, việc giảng viên đưa ra bài tập dành cho học sinh là một điều vô cùng cần thiết Tuy nhiên, với việc chấm bài thủ công, để thầy/cô có thể vừa chấm bài cho tất cả sinh viên, vừa có thời gian giảng dạy và nghiên cứu là một điều rất khó khăn Đây cũng là nguyên nhân chúng tôi tiến hành tự động hóa quá trình chấm điểm trong việc giảng dạy các môn lập trình
Ứng dụng chấm điểm tự động có thể cài đặt dễ dàng trong máy tính của giảng viên Với khả năng tự động hóa các thao tác cho điểm, quá trình chấm điểm được thực hiện hoàn toàn khách quan trên các bộ test được xây dựng từ trước bởi giảng viên tùy theo yêu cầu bài tập, không bị ảnh hưởng bởi ý kiến chủ quan hay tâm lý người chấm Trong trường hợp sinh viên muốn tự kiểm tra năng lực cá nhân, việc tự động chấm điểm theo bộ test của giảng viên cũng được thực hiện tự động, nhằm đưa ra kết quả khách quan cho sinh viên
tự đánh giá năng lực học tập của chính mình
Với những khả năng mà ứng dụng chấm điểm tự động mang lại, chúng tôi hy vọng rằng việc giảng dạy các môn lập trình sẽ trở nên nhẹ nhàng hơn cho giảng viên, và phía sinh viên có thể tự mình đánh giá năng lực bản thân
một cách trung thực nhất
Trang 4MỤC LỤC
TRÍCH YẾU 3
MỤC LỤC 4
Chương 1 MỞ ĐẦU 5
1.1 ĐẶT VẤN ĐỀ 5
1.2 MỤC TIÊU 5
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 5
1.3.1 Đối tượng nghiên cứu 5
1.3.2 Phạm vi nghiên cứu 5
Chương 2 TÌNH HÌNH NGHIÊN CỨU 6
2.1 THEMIS 6
2.2 MÔ HÌNH CHẤM ĐIỂM TỰ ĐỘNG – LEAS 7
Chương 3 TỔNG QUAN VỀ LEAS 9
3.1 Giao diện và các chức năng chính 9
3.1.1 Màn hình chính 9
3.1.2 Cấu hình đề thi 13
3.1.3 Tủy chỉnh Testcase 14
3.1.4 Cấu hình thời gian và điểm của bộ test 15
3.2 Mô hình xử lý 16
3.3 Các hạn chế hiện tại 17
Chương 4 CÁCH RA ĐỀ VÀ CHẤM ĐIỂM 18
4.1 Cách ra đề 18
4.2 Cách chấm điểm 20
Chương 5 KẾT LUẬN 21
Trang 5Chương 1 MỞ ĐẦU
1.1 ĐẶT VẤN ĐỀ
Để nâng cao chất lượng dạy và học các môn lập trình, đặc biệt là các môn học lập trình ở năm thứ nhất như “nhập môn lập trình”, “cấu trúc dữ liệu”, “lập trình hướng đối tượng”,… thì trong quá trình học sinh viên cần phải làm rất nhiều bài tập, bài kiểm tra để đánh năng lực học tập một cách liên tục Với việc chấm điểm bằng tay thủ công như hiện nay, giảng viên mất rất nhiều thời gian nhưng cũng rất khó có thể đáp ứng được khối lượng bài tập và bài thi của sinh viên Nhằm hỗ trợ công tác chấm điểm với số lượng lớn các bài tập, bài kiểm tra hoặc bài thi,… một cách tự động, nhanh chóng
và hiệu quả, nhóm chúng tôi đã lựa chọn đề tài này để nghiên cứu và phát triển với hy vọng sẽ tạo ra một hướng mới trong công tác đánh giá các môn học lập trình
1.2 MỤC TIÊU
Nghiên cứu, phát triển hệ thống chấm điểm tự động các môn lập trình nhằm nâng cao chất lượng dạy và học của sinh viên các ngành công nghệ thông tin Dò tìm gian lận, đề cao tính trung thực khi làm bài của sinh viên
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
1.3.1 Đối tượng nghiên cứu
Nguồn bài tập, bài kiểm tra, bài thi của sinh viên và bộ test của giảng viên, cùng mô hình chấm điểm tự động
1.3.2 Phạm vi nghiên cứu
• Xây dựng mô hình chấm điểm tự động cho các môn học lập trình tại
đại học Hoa Sen
ở nhà của sinh viên
Trang 6Chương 2 TÌNH HÌNH NGHIÊN CỨU
2.1 THEMIS
Hiện nay, TS Lê Minh Hoàng và Đỗ Đức Đông đã có chương trình chấm điểm tự động mang tên Themis
“Themis là phần mềm chấm bài tự động được phát triển theo yêu cầu
của Cục Khảo thí và Kiểm định chất lượng giáo dục, Bộ Giáo dục và Đào tạo Sản phẩm được thiết kế phục vụ kỳ thi học sinh giỏi Quốc gia hàng năm, nhưng hoàn toàn có thể sử dụng trong tất cả các kỳ thi và bài kiểm tra tin học
Tuy nhiên, khuyết điểm của việc chấm bài bằng “robot” này là khả năng chính xác không cao lắm Chỉ cần đúng đáp số so với bộ test thì được cho là đúng, còn ngược lại đáp số vẫn đúng tuy nhiên có các sai phạm nhỏ ví dụ như
dư mất một dấu cách hay thừa con số 0 thì chương trình lập tức đánh giá là không đúng Lỗi này nghe có vẻ đơn giản, tuy nhiên đối với việc sinh viên
1 Trích từ phần giới thiệu của chương trình Themis
Trang 7mới tìm hiểu bộ môn Lập trình, cũng không nên quá khắt khe về việc mắc các sai phạm nhỏ như trên
Themis hỗ trợ việc chấm điểm cho rất nhiều loại ngôn ngữ lập trình, điều này dẫn đến việc dung lượng của Themis cũng phải tỉ lệ theo Trong khi một thực tế rõ ràng là nhiều khi người dùng không dùng hết chức năng nhưng lại chẳng có cách nào để giảm dung lượng thừa kia
Hệ thống này không hỗ trợ quản lý điểm sinh viên theo giời gian, mà chỉ dùng để kiểm tra và chấm bài theo một lần Đây là một hạn chế rất lớn đối với việc theo dõi tiến trình học tập của sinh viên tại trường
Vì Themis được thiết kế để dùng cho các cuộc thi tin học, nên việc sử dụng trong môi trường giảng dạy có nhiều mặt không thuận lợi như cách sử dụng, cấu trúc đề thi, cách chấm bài Có các cấu hình mà người dùng không thể thay đổi được, và được coi là mặc định đối với Themis, tuy nhiên chính vì
sự bất biến này mà đôi khi gây khó khăn đối với người sử dụng
2.2 MÔ HÌNH CHẤM ĐIỂM TỰ ĐỘNG – LEAS
Nhóm chúng tôi lấy tên của hệ thống này là LEAS Trong đó, L (Lotus),
E (Evaluation), A (Auto), S (System) Từ đây, chúng tôi sẽ dùng từ LEAS
này thay cho hệ thống chấm điểm tự động
Để áp dụng nghiên cứu này vào các các môn lập trình tại Đại Học Hoa Sen, chúng tôi đã tìm hiểu và thiết kế ứng dụng đúng với các mong muốn của giảng viên cũng như sinh viên Không phủ nhận rằng cách thức hoạt động của LEAS có đôi nét tương đồng với Themis, tuy nhiên đã được đơn giản hóa cho người dùng một cách triệt để nhất
Điểm khác biệt lớn nhất có lẽ là bộ dịch của LEAS so với Themis Trong khi Themis sử dụng G++ thì chúng tôi sử dụng Visual Studio cho việc dịch bài làm của sinh viên Điều này có vài lợi thế nhất định sau:
• LEAS rất nhẹ, vì không phải mang G++ kèm theo trong chương trình
• Tránh sự sai sót khi khai báo thư viện, có thể trên máy thực hành đã chạy nhưng khi biên dịch lại báo lỗi vì sự khác nhau giữa thư viện hai bên
Trang 8Hiện nay hầu hết tất cả mọi người đều sử dụng Visual Studio cho việc dạy và học lập trình C/C++ Nên việc sử dụng Visual Studio làm bộ dịch là một lựa chọn hoàn toàn chính xác cho công việc trên
Việc sử dụng đề thi và làm bài theo cấu trúc cũng tập cho sinh viên làm quen với việc làm bài theo khuôn mẫu đề thi, để có thể thích ứng dễ dàng với
Trang 9Chương 3 TỔNG QUAN VỀ LEAS
3.1 Giao diện và các chức năng chính
3.1.1 Màn hình chính
Đây là giao diện chính khi sử dụng LEAS
LEAS có các vùng làm việc sau:
(1): Các chức năng cơ bản của LEAS
(2): Vùng cấu hình đề thi, bộ test và bài làm của sinh viên
(3): Vùng kết quả sau khi cấu hình.
3.1.1.1 Chức năng cơ bản của LEAS
chính dù đang ở bất cứ đâu
Trang 10(3): Hướng dẫn sử dụng, sẽ tùy vào trang hiện hành để có các hướng dẫn khác nhau
3.1.1.2 Cấu hình
dựa trên thư mục vừa chọn Người dùng có thể xem tổng quan dữ liệu dựa trên các thông báo này
đó không trỏ tới thư mục Visual Studio, thông báo “Không hợp lệ” sẽ xuất hiện Đường dẫn mặc định của Visual Studio 2013 là:
“C:\Program Files (x86)\Microsoft Visual Studio 12.0”
sinh viên và thư mục Testcase (cố định) để chứa các bộ test Xin hãy
xem phần 3.1.3 để hiểu rõ hơn về thư mục này
có tác dụng khi người dùng muốn cập nhật thêm bài làm của sinh viên hay thêm/loại bỏ câu hỏi Thông thường, dữ liệu cấu trúc đề thi
cũ sẽ được lưu trong file PAS_Data.sic (cố định) nằm trong thư mục này Nếu LEAS tìm thấy file PAS_Data.sic, thì sẽ có thông báo như sau xuất hiện:
Trang 11Nếu người dùng muốn tiếp tục sử dụng dữ liệu cũ của đề thi, chỉ cần nhấn nút đồng ý để tải dữ liệu có
Trường hợp dữ liệu có sẵn nhưng không tồn tại đề thi thì LEAS sẽ bỏ qua đề thi đấy Và trường hợp tồn tại
đề thi nhưng không có trong dữ liệu thì vẫn thêm đề thi ấy vào như bình thường Dữ liệu chính phụ thuộc vào các thư mục chứa trong thư mục chứa dữ liệu và thư mục Testcase trong đó
sẽ tự động quét thư mục đó để cập nhật dữ liệu đề thi và sinh viên mới Lúc này, người dùng cần khóa lựa chọn của mình mới có thể bắt đầu cấu hình đề thi và bài làm của sinh viên
Người dùng đang chọn thư mục chứa dữ liệu
Người dùng đã khóa và xác nhận sẽ dùng thư mục này Lúc này mới có thể
bắt đầu cấu hình đề thi và bài làm của sinh viên
mục 3.1.2 để hiểu rõ hơn
Trang 123.1.1.3 Kết quả
trình này, giảng viên có thể xem Thống kê (2) để biết được sinh tổng quan bài làm sinh viên của mình trước khi chấm điểm
Giao diện bảng thống kê thông tin bài làm của sinh viên
Giảng viên có thể cân nhắc việc chấm điểm sau khi xem thống kê sơ
bộ về bài làm của sinh viên của mình
Trang 133.1.2 Cấu hình đề thi
Giao diện cấu hình đề thi
Nhìn chung, đề thi sẽ bao gồm 3 phần:
• File: Đây là file CPP mà sinh viên sẽ nộp về cho giảng viên để chấm bài
• Input: Đây là file đầu vào để nạp dữ liệu cho bài làm
• Output: Đây là file mà bài làm sẽ xuất ra sau khi đã xử lý thông tin từ file Input
thư mục nằm trong thư mục Testcase
dữ liệu
Trang 143.1.3 Tủy chỉnh Testcase
Giao diện tùy chỉnh testcase Nhìn chung, bộ test sẽ bao gồm 4 thông tin:
• File: Đây là file CPP bài làm và cũng là tên của bộ test
• SL: Số lượng test được dùng để kiểm tra bài làm
• Input: Định dạng tên các file test đầu vào Sẽ được chép vào làm dữ liệu cho bài làm của sinh viên
• Output: Định dạng tên cái file test đầu ra, được sử dụng để so sánh với kết quả từ bài làm của sinh viên
thư mục trong thư mục Testcase
xem mục 3.1.4 để hiểu rõ hơn
Trang 15(5): Lưu lại thông tin đề thi vào file PAS_Data.sic trong thư mục chứa
dữ liệu
3.1.4 Cấu hình thời gian và điểm của bộ test
Giao diện tùy chỉnh thời gian và số điểm Nhìn chung, một bài test sẽ bao gồm 2 thông tin:
• Time: Thời gian xử lý tối đa cho phép Khi vượt quá thời gian này
mà vẫn chưa có output, bài test sẽ được tính là sai Nếu giá trị này là
0 có nghĩa là không giới hạn thời gian Giảng viên cần phải cẩn thận
vì có khả năng gặp phải các bài bị tình trạng “vòng lặp vô hạn”
• Point: Số điểm dành cho một bài test Hiện tại LEAS chỉ dựa vào số điểm này để tính điểm, nên giảng viên phải cân nhắc số điểm của từng test cho phù hợp với tổng số điểm bài làm và số lượng test
Trang 16(3): Chỉnh sửa thông số của bài test đang được chọn ở vùng (2)
động thay đổi giá trị của tất cả các bài test thành giá trị hiện hành
PAS_Data.sic, nếu người dùng muốn lưu thì phải quay trở về trang
“Tùy chỉnh Testcase” rồi lưu lại
3.2 Mô hình xử lý
Khi người dùng chọn thư mục Visual Studio, LEAS sẽ kiểm tra hai file
“VsDevCmd.bat” và “vcvarsall.bat”, các bộ cài Visual Studio đều có hai
file trên, nên đó là một cách để xác thực Visual Studio
Khi người dùng chọn thư mục chứa dữ liệu, LEAS sẽ quét thư mục đó dựa trên cấu trúc được quy định ở Chương 4 – Cách ra đề và chấm điểm Sau khi đã tùy chỉnh xong, người dùng có thể dùng chức năng Compile
để dịch tất cả bài làm của sinh viên và xem thống kê để biết sinh viên nào chưa làm bài, làm bài lỗi, nộp thiếu bài các trạng thái đều được liệt kê đầy
đủ Việc dịch bài làm của sinh viên rất nhanh chóng Khi đã đồng ý với thống kê trên, người dùng tiến hành quá trình chấm điểm và xem lại các thông tin của sinh viên cùng với kết quả Toàn bộ quá trình này nhanh hơn gấp nhiều lần so với việc chấm bài thủ công hiện nay
Quá trình xử lý bài tập và dữ liệu đầu vào để xuất ra kết quả bài kiểm tra được thể hiện ở hình dưới Kết quả bài thi của sinh viên được xuất ra dưới dạng Excel bao gồm MSSV và số điểm tổng của sinh viên đó Các dữ liệu này cũng được sao lưu lại để tiến hành so sánh với các đợt chấm bài trước, qua đó thể hiện được sự tiến bộ của sinh viên qua quá trình rèn luyện
và học tập các môn lập trình tại trường
Trang 17Mô hình xử lý
3.3 Các hạn chế hiện tại
• Cần cài sẵn Visual Studio để có thể sử dụng LEAS
• Sử dụng CMD để dịch bài làm, nên người dùng không thể mở các cửa
sổ CMD khác trong lúc chạy chương trình
• Không hiển thị tiếng việt toàn bộ
Trang 18Chương 4 CÁCH RA ĐỀ VÀ CHẤM ĐIỂM
4.1 Cách ra đề
Một đề thi cần được chuẩn bị trong hai thư mục:
• Thư mục chứa các bài thi với tên thư mục là Testcase
• Thư mục chứa các bài làm (tạm gọi là thư mục Contestants)
Thư mục chứa các bài thi gồm nhiều thư mục con, mỗi thư mục con là một bài thi với cấu trúc sau:
• Tên thư mục cũng là tên file bài làm mà sinh viên nộp về Bao gồm cả tên file và phần mở rộng
• Trong thư mục đó chứa bộ test cần dùng, mỗi test gồm 2 file (Input và Output – các files này sẽ được copy vào nơi có bài làm của thí sinh để cung cấp dữ liệu khi chạy bài làm của thí sinh), cách tùy chỉnh bộ testcase sẽ được nêu ở phần sau
Thư mục chứa các bài làm gồm nhiều thư
mục con, mỗi thư mục con có tên là MSSV
của chính sinh viên làm bài, và chứa toàn bộ
bài làm của sinh viên tương ứng
Ví dụ: Đề thi gồm có hai bài, hai file cpp
mà sinh viên cần nộp về là “CapSoNhan.cpp”
và “Cong2So.cpp”
Bài “CapSoNhan.cpp” gồm có hai bài test
Còn bài “Cong2So.cpp” chỉ có một bài test
Có 3 sinh viên đã nộp bài là các sinh viên
có mã số “2144960”, “2143108”, “2144344”
Sinh viên “2144960” đã nộp đủ hai bài,
còn 2 sinh viên còn lại mỗi người chỉ nộp một
bài
Ví dụ về thư mục chứa dữ liệu
Trang 19Ví dụ về bài làm và bộ test
Trang 204.2 Cách chấm điểm
Mỗi bài đúng sẽ được cộng tương đương một lượng điểm được quy
định ở “Cấu hình thời gian và điểm” – mục 3.1.4 Tổng số điểm của một bài
là tổng điểm của tất cả các test của bài đó
Trang 215.2 Hướng phát triển trong tương lai
− Nâng cấp hệ thống LEAS để có thể chấm được nhiều ngôn ngữ khác nhau
− Chấm điểm trực tuyến (online): Sinh viên có thể nộp bài qua mạng và nhận kết quả bài kiểm tra ngay tức thời
− Kết nối dữ liệu với các hệ thống đã có sẵn trong nhà trường để đồng bộ điểm
Trang 22TÀI LIỆU THAM KHẢO
1 Chương trình “Themis”, Lê Minh Hoàng và Đỗ Đức Đông, phiên bản 1.1.6.367
2 Microsoft, “Process Class (System.Diagnostics)” Truy cập ngày