Xem mẫu

  1. Tuyển tập Hội nghị Khoa học thường niên năm 2020. ISBN: 978-604-82-3869-8 XÂY DỰNG HỆ THỐNG TỰ ĐỘNG CHẤM THỰC HÀNH MÔN LẬP TRÌNH Trương Xuân Nam1, Nguyễn Thị Phương Dung2 1 Bộ môn Tin học - Kỹ thuật Tính toán, Khoa Công nghệ Thông tin, email: namtx@tlu.edu.vn 2 Bộ môn Công nghệ Phần mềm, Khoa Công nghệ Thông tin 1. GIỚI THIỆU CHUNG Khoảng 10 năm trở lại đây, cùng với sự phát triển của mạng internet, dịch vụ tính Các hệ thống tự động kiểm tra phần mềm đã toán từ xa và các kiến trúc tính toán mới; các được sử dụng từ lâu trong ngành kỹ thuật phần hệ thống chấm tự động dần được sử dụng phổ mềm với các sản phẩm kiểm thử tự động như biến trong các khóa lập trình. Nổi bật nhất là Seledium, TestComplete,… hoặc các hệ thống các hệ thống CMS, Codeforces, HackerRank, đám mây tích hợp trí tuệ nhân tạo cho phép CodeWars,… Các hệ thống này đơn giản hóa đánh giá các bản vá phần mềm với hàng triệu thêm được các khâu ra đề, phát đề, nộp bài và tình huống (test case) khác nhau, được sử dụng trong các doanh nghiệp phần mềm lớn [1]. công bố kết quả; tuy nhiên chưa đảm bảo Về bản chất, việc chấm tự động bài thi lập được các yếu tố chống gian lận trong thi cử. trình của sinh viên cũng là hoạt động kiểm thử Các hệ thống chấm thi tự động cũng được phần mềm, nhưng ở quy mô nhỏ hơn và hướng áp dụng trong đào tạo ở Việt Nam từ những đến những khía cạnh đặc thù của giáo dục. năm 2000 đến nay, nhưng không phổ biến; Báo cáo này trình bày việc xây dựng hệ chủ yếu được dùng trong các kì thi học sinh thống chấm bài thực hành lập trình được xây giỏi hoặc những khóa học đào tạo chuyên dựng cho các môn học lập trình cơ bản ở môi môn. Ví dụ như khóa học Thuật toán Ứng trường đại học, nhằm tự động hóa việc đánh dụng của Samsung sử dụng SPOJ, hệ thống giá kết quả học tập của sinh viên. đào tạo nội bộ của FPT sử dụng CodeLearn. Ở các khối chuyện tin cấp ba, phần mềm 2. PHƯƠNG PHÁP NGHIÊN CỨU Themis được sử dụng tương đối rộng rãi. 2.1. Hiện trạng 2.2. Phương pháp đánh giá bài thi Các hệ thống chấm thi tự động có lịch sử Khi mã nguồn đã được dịch và có thể chạy phát triển trên thế giới nhiều năm. Từ những được, có nhiều phương pháp đánh giá bài thi, năm 1990 đã có những hệ thống được áp Bernard [2] đưa ra 5 kiểu phân loại như sau: dụng vào các kỳ thi học sinh giỏi về lập trình, 1. Batch: hệ thống so sánh đầu ra của đó là những kỳ thi đòi hỏi nghiêm ngặt về chương trình với đầu ra theo yêu cầu của chất lượng bài làm và sự công bằng trong người làm đề. đánh giá kết quả; vì vậy việc chấm bằng máy 2. Communication: hệ thống làm cầu nối giải quyết cơ bản được vấn đề này kèm theo giữa chương trình vào module chấm thi (do đó tốc độ chấm máy cũng nhanh hơn tương người làm đề cung cấp). đối so với chấm bởi con người. Tuy nhiên 3. TwoStep: hệ thống sinh tự động các test việc tự động hóa chỉ dừng ở mức chấm bài (theo khuôn mẫu) sau đó đối sánh kết quả của làm, việc phát đề bài, nộp bài, công bố kết chương trình do thí sinh nộp và kết quả do quả vẫn phải thực hiện thủ công. chương trình mẫu (do người làm đề cung cấp). 69
  2. Tuyển tập Hội nghị Khoa học thường niên năm 2020. ISBN: 978-604-82-3869-8 4. ZeroSum: hệ thống làm trọng tài giữa xây dựng cơ chế đồng bộ bài thi giữa máy chương trình do thí sinh nộp và một chương tính của thí sinh và máy chủ. trình đối nghịch do người làm đề cung cấp, chủ yếu dùng trong các bài toán thuộc lý 2.5. Ngăn chặn sai hỏng hệ thống thuyết trò chơi. Có bốn phương pháp thông dụng để giảm 5. Rank: hệ thống đánh giá và xếp hạng thiểu các rủi ro nêu trên: cùng lúc nhiều chương trình do thí sinh nộp 1. Sandbox: tạo ra một môi trường riêng dựa trên các phép đo chuẩn, sử dụng rất rộng biệt để thực thi chương trình. Đây là phương rãi trong các hệ thống học máy. pháp an toàn nhất, nhưng chi phí về phần cứng rất cao. 2.3. Tự động sinh và trộn đề thi 2. Guest: thực thi chương trình với các Chúng tôi xây dựng một thuật toán (hình hạn chế về quyền và tài nguyên. dưới) cải biên từ thuật toán sinh hoán vị ngẫu 3. Monitor: vừa thực thi chương trình vừa nhiên [3] để giải quyết vấn đề này. theo dõi các hoạt động xem có bất thường hay không. 4. Checker: duyệt các đoạn mã chương trình và ngăn chặn các đoạn mã phá hoại. 2.6. Ngăn chặn gian lận khi làm bài thi Các hệ thống chấm thi tự động thường có hai dạng triển khai: 1. Dạng trưc tuyến, chủ yếu sử dụng trong luyện tập. 2. Dạng nội bộ, nửa trực tuyến, vẫn thi tại phòng thi có giám thị. Hệ thống trực tuyến do chỉ sử dụng với mục đích luyện tập, nên không đặt ra vấn đề xử lý gian lận (vẫn có nhưng rất hạn chế). Với hệ thống nội bộ, chúng tôi thực hiện một vài phương pháp hỗ trợ giám thị phát hiện gian lận nhưng chỉ ở mức cảnh báo. Cụ thể như sau: - Phát hiện nguồn gốc bất thường của tập tin mã nguồn (thực hiện phía client). - Phát hiện bất thường trong quá trình làm bài của thí sinh (thực hiện phía client). - Phát hiện việc trao đổi thông tin qua Hình 1. Thuật toán chọn ngẫu nhiên đề thi mạng của thí sinh (thực hiện phía client). - Phát hiện bài làm có tương đồng cao giữa Thuật toán đảm bảo việc lựa chọn m câu các thí sinh (thực hiện phía server). hỏi trong quỹ n câu theo đúng phân bổ xác suất tổ hợp. Việc khởi tạo nhân (seed) của 3. KẾT QUẢ NGHIÊN CỨU thuật toán ngẫu nhiên phân bổ đều đảm bảo kết quả trả về của hàm là nhất quán với mỗi 3.1. Kiến trúc hệ thống key xác định. Vì vậy một người dùng chỉ cần Hệ thống được phân tách thành ba khối một key (chính là mã đề thi) độc lập, giao tiếp với nhau bởi các truy vấn 2.4. Xử lý lỗi trong khi thi RESTful/API và https. Khối “Judgement Server”: đóng vai trò các Trong quá trình thực hiện bài làm, thí sinh server thực hiện việc chấm thi. Xây dựng có thể gặp lỗi, máy tính bị treo, mất bài thi; bằng MONO.NET Core có thể mở rộng mềm cách xử lý hiệu quả trong tình huống này là dẻo (scalability) tùy thuộc vào nhu cầu chấm 70
  3. Tuyển tập Hội nghị Khoa học thường niên năm 2020. ISBN: 978-604-82-3869-8 thi, số lượng server tăng lên nếu kì thi đông Kết quả thử nghiệm cho thấy phương pháp thí sinh và giảm xuống nếu ít thí sinh hơn. sandbox có hiệu suất rất thấp, phương pháp Khối “Front-end Server”: đóng vai trò giao monitor có hiệu suất gần như tương đương diện quản lý và thông tin đến người sử dụng. với guest ở các thử nghiệm ngoại trừ loại Được viết bằng PHP/MySQL Laravel, cho chương trình đòi hỏi ghi dữ liệu nhiều. phép người dùng xem kết quả thi, giáo viên gửi Vì vậy, với hệ thống hiện tại, chúng tôi kết câu hỏi, đáp án, ra đề thi và thực hiện các công hợp giữa phương pháp Guest và một kĩ thuật việc khác của quy trình thi như chấm phúc tra. an toàn khác là “full side verification” bao gồm hai bước: 1. Thử thực hiện chương trình của thí sinh ngay tại client và không có bất kỳ biện pháp ngăn chặn sai hỏng nào. 2. Đưa bài làm lên server chấm thi và thực hiện trong chế độ Guest. 3.3. Triển khai thực tế Hệ thống đã được triển khai thử nghiệm cho hai môn học, 22 lớp, 214 kỳ thi, hơn 6000 lượt thi và gần 50000 bài thi được nộp (một bài có thể được nộp nhiều lần nếu thí Hình 2. Kiến trúc hệ thống sinh chưa hài lòng với kết quả). Khối “Client”: là các ứng dụng đầu cuối 4. KẾT LUẬN làm nhiệm vụ giao tiếp với thí sinh. Được xây dựng bằng C#.NET, ứng dụng thực hiện Hệ thống đã chứng minh thiết kế hiện tại việc đăng nhập, lấy đề bài, nộp bài và các đạt được các mục tiêu cốt lõi của một hệ công việc xác thực, giám sát thi cử khác. thống đánh giá tự động: 1. Tự động ra đề thi với sự can thiệp tối 3.2. Lựa chọn phương pháp kiểm soát thiểu của cấp quản lý. Chúng tôi đã thử nghiệm 3 phương pháp 2. Chấm thi, đánh giá bài thi của sinh viên kiểm soát sai hỏng là sandbox, guest và hoàn toàn tự động. monitor đối với tập thử nghiệm 5 chương trình 3. Xử lý được lỗi huống bất thường về từ đơn giản thuộc các loại chương trình bình thiết bị hoặc phẩn mềm trong quá trình thi. thường, đọc dữ liệu nhiều, ghi dữ liệu nhiều, 4. Ngăn chặn được các hành vi làm hỏng đòi hỏi bộ nhớ lớn và đòi hỏi công suất tính kỳ thi một cách vô tình hoặc cố ý. toán lớn. Mỗi chương trình thực hiện với 1 triệu test và đo tổng thời gian từ khi bắt đầu 5. TÀI LIỆU THAM KHẢO đến khi kết thúc nhằm kiểm tra hiệu năng của [1] Priyadharshini.V, Malathi.A; 2014; Survey các phương pháp kiểm soát. Bảng dưới thể on software testing techniques in cloud hiện kết quả thực hiện (theo đơn vị giờ). computing. https://arxiv.org/abs/1402.1925. Bảng 1. So sánh hiệu suất ba loại kiểm soát [2] Bernard. B, Matteo. B, Stefano. M, Giovanni. M, Luca. W; 2018; Contest Loại Sandbox Guest Monitor Management System: a distributed system Thông thường 0.29h 0.27h 0.27h for running and organizing a programming High INPUT 0.90h 0.77h 0.72h contest. https://cms.readthedocs.io. High OUTPUT 7.11h 4.52h 6.85h [3] Richard. D; 1964; Algorithm 235: Random High MEMORY 2.07h 1.19h 1.45h permutation. Communications of the ACM. 7 (7): 420. High CPU 25.14h 22.74h 22.03h 71
nguon tai.lieu . vn