XÂY DỰNG hệ THỐNG XXXXXXX hỗ TRỢ YYYYY các môn học lập TRÌNH

53 26 0
XÂY DỰNG hệ THỐNG XXXXXXX hỗ TRỢ YYYYY các môn học lập TRÌNH

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC ĐÀ NẴNG TRƢỜNG ĐẠI HỌC SƢ PHẠM BÁO CÁO TỔNG KẾT ĐỒ ÁN CHUYÊN NGÀNH XÂY DỰNG HỆ THỐNG XXXXXXX HỖ TRỢ YYYYY CÁC MƠN HỌC LẬP TRÌNH Ngƣời/Nhóm thực hiện: XXXXXXXXXXXX Đà Nẵng, 12/2020 MỤC LỤC Trang DANH MỤC CÁC HÌNH VẼ MỞ ĐẦU CHƢƠNG 1: TỔNG QUAN VỀ CÁC HỆ THỐNG CHẤM BÀI TỰ ĐỘNG 10 1.1 GIỚI THIỆU 10 1.2 HỆ THỐNG PC2 11 1.2.1 Môi trường thực thi SDK 12 1.2.2 Khởi động file chương trình PC2 12 1.2.3 Khởi động pc2 server tạo thi cho pc2 13 1.2.4 Khởi động pc2 administrator tạo user cần thiết cho thi 15 1.2.5 Tạo problem yêu cầu cho problem 16 1.2.6 Tạo ngôn ngữ chạy chương trình cho problem 17 1.2.7 Test problem tự động tay cho PC2 judge 18 1.2.8 Hiển thị scoreboard cho thi 20 1.3 MỘT SỐ HỆ THỐNG HỖ TRỢ NỘP VÀ CHẤM BÀI TỰ ĐỘNG 21 1.3.1 Hệ thống CMS 21 1.3.2 Hệ thống Codeforce 23 CHƢƠNG 2: CÁC CÔNG NGHỆ HỖ TRỢ XÂY DỰNG HỆ THỐNG NỘP VÀ CHẤM TỰ ĐỘNG 25 2.1 NGÔN NGỮ PHP VÀ CƠ SỞ DỮ LIỆU MYSQL 25 2.1.1 Hệ quản trị sở liệu MYSQL 25 2.1.2 Cài Đặt Xampp 26 2.1.3 Hướng dân tạo database Xampp 30 2.1.4 Ngôn ngữ lập trình PHP 32 2.2 CÔNG CỤ CHẤM BÀI TỰ ĐỘNG THEMIS 32 2.2.1 Cài đặt khởi động Themis 33 2.2.2 Chuẩn bị kỳ thi 34 2.2.3 Nạp danh sách thi 35 2.2.4 Đặt cấu hình thi 35 CHƢƠNG 3: XÂY DỰNG HỆ THỐNG NỘP VÀ CHẤM BÀI TỰ ĐỘNG 41 3.1 QUY TRÌNH NỘP VÀ CHẤM BÀI TỰ ĐỘNG 41 3.1.1 Viết code 42 3.1.2 Nộp 42 3.1.3 Hệ thống chấm 42 3.2 XÂY DỰNG HỆ THỐNG NỘP VÀ CHẤM BÀI TỰ ĐỘNG 43 3.2.1 Cơ sở vật chất môi trường xây dựng hệ thống 43 3.2.2 Xây dựng website nộp tự động 43 3.2.3 Xây dựng test cho đáp án 44 3.2.4 Tích hợp hệ thống 45 3.3 ĐÁNH GIÁ KẾT QUẢ TRIỂN KHAI 49 KẾT LUẬN 52 TÀI LIỆU THAM KHẢO 53 DANH MỤC CÁC HÌNH VẼ Hình 1.1: Giao diện hệ thống PC2 server 13 Hình 1.2: Cài đặt mật 14 Hình 1.3: Server tạo có tên Site1 15 Hình 1.4: Giao diện pc2 administrator 15 Hình 1.5: Giao diện chức pc2 administrator 16 Hình 1.6: Giao diện tạo user 16 Hình 1.7: Thiết lập cấu hình tốn 17 Hình 1.8: Thiết lập ngơn ngữ trình biên dịch 18 Hình 1.9: Thiết lập chế độ chấm tự động 18 Hình 1.10: Chọn tốn muốn chấm tự động 19 Hình 1.11: Cập nhật hệ thống chấm tự động 19 Hình 1.12: Hệ thống chấm hoạt động 20 Hình 1.13: Trang hiển thị kết bảng điểm 20 Hình 1.14: Đăng nhập hệ thống CMS 21 Hình 1.15: Tải đề cú pháp biên dịch hệ thống CMS 22 Hình 1.16: Submit hệ thống CMS 23 Hình 1.17: Kết Submit hệ thống CMS 23 Hình 1.18: Giao diện trang chủ CodeForces 24 Hình 2.1: Mơ hình tương tác web PHP với MyQL 26 Hình 2.2: Giới thiệu xampp 27 Hình 2.3: Cài đặt xampp 27 Hình 2.4: Cài đặt xampp 28 Hình 2.5: Cài đặt đường dẫn xampp 28 Hình 2.6: Đang cài đặt xampp 29 Hình 2.7: Kết thúc cài đặt xampp 29 Hình 2.8: Kích hoạt xampp 30 Hình 2.9: Tạo Database 30 Hình 2.10: Chọn database 31 Hình 2.11: Kết tạo DataBase 31 Hình 2.12: Cài đặt xampp 32 Hình 2.13: Phần mềm Themis 33 Hình 2.14: Giao diện phần mềm Themis 34 Hình 2.15: Giao diện danh sách thi 35 Hình 2.16: Giao diện cấu hình thi 36 Hình 2.17: Giao diện chức cấu hình thi 36 Hình 3.1: Quy trình nộp chấm tự động 41 Hình 3.2: Cơ sở liệu người học 43 Hình 3.3: Trang nộp tự động 44 Hình 3.4: Trang nộp tự động 45 Hình 3.5: Thanh công cụ Themis 46 Hình 3.6: Thiết lập đường dẫn chứa thi đáp án 46 Hình 3.7: Chọn thư mục chứa đề thi 47 Hình 3.8: Chọn thư mục chứa làm sinh viên 47 Hình 3.9: Chọn cấu hình thi 48 Hình 3.10: Chọn cấu hình cụ thể cho thi 48 Hình 3.11: Giao diện chấm tự động 49 Hình 3.12: Phản hồi sinh viên 50 MỞ ĐẦU Tính cấp thiết đề tài Đối với ngành đào tạo liên quan đến Công nghệ thông tin (CNTT), kỹ lập trình nhân tố định đến việc phát triển lực giải vấn đề sinh viên ngành CNTT Việc giảng dạy huấn luyện kỹ thực hành cho mơn học có liên quan đến lập trình thường gặp khó khăn sau:  Với tập thực hành lập trình thường phải thỏa mãn tính chất thuật tốn như: tính đắn, tính hiệu tính phổ dụng [3] Tuy nhiên, sinh viên thường không biện luận hết tất trường hợp toán đặt chưa biết giải thuật cài đặt đạt tính hiệu hay chưa [1]  Mặt khác, với thực trạng 30 sinh viên/nhóm thực hành việc hướng dẫn, tư vấn, uốn nắng kỹ thực hành cho em đạt chuẩn đặt nhiều thời gian công sức  Một thực trạng nhiều sinh viên chưa xác định đầu vào (input) đầu (output) toán số khác lại hay tùy tiện thêm bớt liệu vào/ra nên thường không đáp ứng định dạng chuẩn mực kỳ thi Olympic ACM/ICPC [5] Để hỗ trợ em tự kiểm tra kết trình học tập, rèn luyện kỹ lập trình đồng thời giảm thiểu thời gian cơng sức giảng viên việc xây dựng hệ thống chấm tự động hỗ trợ dạy học điều cần thiết Trên giới có nhiều hệ thống chấm tự động, chẳng hạn như:  Hệ thống PC^2 [6] sử dụng mơ hình Client-Server PC2 (Programming Contest Control system) dự án Đại học California State phát triển với hỗ trợ tập đoàn IBM PC2 phần mềm thiết kế để hỗ trợ kỳ thi lập trình, PC2 cho phép thí sinh (nhóm thí sinh) gửi làm trực tuyến cho ban giám khảo Giám khảo biên dịch lại chương trình, thực hiện, xem mã nguồn thí sinh trả kết cho thí sinh Ngồi hình thức chấm tay, PC2 cịn hỗ trợ chấm tự động giúp giảm hao phí phí sức lao động người, cải thiện tốc độ nâng cao hiệu công tác chấm  Một hệ thống huấn luyện lập trình online, có tổ chức thi định kỳ: CodeForce [7] nhiều người đam mê lập trình quan tâm Ở Việt Nam có số hệ thống huấn luyện lập trình, chấm tự động online thường xuyên tổ chức thi định kỳ để rèn luyện kỹ năng, tiêu biểu như: VNOI [8], NTUCoder đại học Nha Trang [9] Ngoài ra, nhiều trường Đại học Trong nước Quốc tế triển khai hệ thống huấn luyện lập trình cho sinh viên với nhiều mức độ, quy mô khác nhằm nâng cao kỹ lập trình cho sinh viên Việc xây dựng triển khai hệ thống phức tạp, địi hỏi chi phí cơng sức lớn Trong điều kiện sở vật chất hạn chế nay, việc tận dụng mạng cục Internet kết hợp số phần mềm có sẵn để xây dựng hệ thống chấm tự động hỗ trợ giảng dạy mơn học lập trình việc làm khả thi, hỗ trợ tốt cho việc rèn luyện kỹ lập trình cho sinh viên Mục tiêu nghiên cứu - Nghiên cứu quy trình nộp chấm tự động - Xây dựng hệ thống nộp chấm tự động online hỗ trợ giảng dạy học môn lập trình Đối tƣợng phạm vi nghiên cứu - Đối tượng nghiên cứu: chuẩn toán liên quan đến thuật tốn lập trình - Phạm vi nghiên cứu: thuật tốn viết ngơn ngữ Pascal, C/C++ Hƣớng tiếp cận phƣơng pháp nghiên cứu 4.1 Cách tiếp cận Từ nhu cầu học lập trình sinh viên, hạn chế phương pháp truyền thống ưu điểm giải pháp tự động để xây dựng hệ thống hỗ trợ chấm nộp tự động 4.2 Phương pháp nghiên cứu - Tìm hiểu cấu trúc tốn lập trình: chuẩn đầu vào, đầu toán - Nghiên cứu quy trình nộp chấm tự động để xây dựng hệ thống - Tích hợp cơng cụ có sẵn tận dụng mạng cục Internet để xây dựng hệ thống nộp chấm tự động Bố cục đề tài Đề tài phân thành ba chương với cấu trúc sau: Chƣơng 1: Tổng quan hệ thống chấm tự động Chương giới thiệu tổng quan việc triển khai hệ thống chấm tự động lĩnh vực lập trình, cơng cụ nguồn mở hỗ trợ việc cài đặt để tổ chức kỳ thi Olympic ACM Chƣơng 2: Các công cụ hỗ trợ xây dựng hệ thống Chương tập trung nghiên cứu triển khai ứng dụng web với sở liệu MySQL ngôn ngữ PHP kết hợp với công cụ chấm tự động để phục vụ cho việc xây dựng triển khai hệ thống nộp chấm tự động chương Chƣơng 3: Xây dựng hệ thống nộp chấm tự động Chương đề xuất quy trình, giải pháp cho việc xây dựng hệ thống nộp chấm tự động triển khai mạng LAN Đồng thời tiến hành thực nghiệm đánh giá kết triển khai Cuối phần kết luận hướng phát triển CHƢƠNG 1: TỔNG QUAN VỀ CÁC HỆ THỐNG CHẤM BÀI TỰ ĐỘNG 1.1 GIỚI THIỆU Hiện nay, giới Việt Nam năm thường tổ chức nhiều thi lập trình máy tính dành cho học sinh, sinh viên Các thi thu hút nhiều bạn trẻ tham gia hữu ích mà đem lại cho em: rèn luyện tư logic, tư quy hoạch, giải vấn đề lựa chọn nghề nghiệp tương lai ACM International Collegiate Programming Contest (ACM/ICPC) thi lập trình máy tính lớn giới [5] ACM tổ chức năm đại học giới, nhằm mục tiêu tạo hội cho sinh viên khả tư duy, làm việc nhóm nâng cao kỹ lập trình – giải vấn đề, giao lưu học hỏi trường khu vực giới ACM chia làm nhiều vòng, trải qua vòng khác nước cử đại diện để tham gia vòng quốc tế Mỗi đội thi phát đề thi tiếng anh, đề có từ đến 10 Mỗi đội tối đa thành viên làm việc PC khoảng thời gian Khi làm xong nộp qua hệ thống chấm để ban giám khảo chấm đó, nộp nhiều lần Mỗi thi có nhiều test, làm đội phải vượt qua tất test tính điểm, sai test khơng tính điểm Nếu sai sửa lại nộp lên nhiều lần, nhiên thời gian giải cộng dồn lại giải Chỉ có giải tính thời gian đó, sai khơng bị tính thời gian Khi hết thời gian làm bài, kết thi xếp theo đội có số điểm nhiều nhất, có nhiều đội có số điểm so sánh đội có tổng 10 *.exe * tên thi Trình chấm ngồi có nhiệm vụ: Chạy thư mục hoạt động, có file kết thí sinh chạy với test Nhận vào file văn ASCII “COMPAR$R.INP” gồm dòng chứa tên thư mục test tương ứng Tên thư mục mã hóa utf-8, tức tên thư mục chứa ký tự có mã số ≥ 128 (ví dụ tiếng Việt có dấu unicode) trình chấm ngồi cần giải mã utf-8 để có tên thư mục thật Xuất file văn ASCII “COMPAR$R.OUT” với khn dạng: Dịng có dạng DUNG, SAI, SAIDINHDANG DUNGMOTPHAN p với p số nguyên phạm vi từ tới 100 đánh giá độ tốt kết Các dòng lời nhận xét kết Chú ý: Bộ chấm C6AMM2External dùng để giữ tính tương thích với trình chấm ngồi cũ Nếu viết trình chấm ngồi mới, đề nghị sử dụng chấm C7External o C7External: Nạp trình chấm ngồi Trình chấm ngồi đặt thư mục thi tương ứng, có tên Check*.exe * tên thi Khi chương trình thí sinh chạy xong test, trình chấm ngồi kích hoạt chạy thư mục hoạt động, có file kết thí sinh chạy với test Trình chấm cung cấp luồng vào chuẩn (standard input) gồm dòng: Dòng tên thư mục chứa liệu test Dòng tên thư mục hoạt động Tên thư mục mã hóa utf-8, tức tên thư mục chứa ký tự có mã số ≥ 128 (chẳng hạn ký tự tiếng Việt có dấu unicode) trình chấm ngồi cần giải mã utf-8 để có tên thư mục thật Trình chấm ngồi cần đưa luồng chuẩn (standard output) nhận xét kết chấm, dòng cuối luồng chuẩn gồm số thực phạm vi từ 0.00 tới 1.00 đánh giá điểm Giá trị nhân với điểm test Để đưa nhận xét tiếng Việt có dấu unicode, cách làm tương tự xuất file văn utf-8: Trình 39 chấm trước tiên phải xuất ký tự ASCII mã số 239, 187 191 (utf-8 BOM), sau thơng báo unicode mã hóa utf-8 Dĩ nhiên xuất ký tự ASCII khơng cần quan tâm tới vấn đề  Cấu hình test: Thiết lập cho test bao gồm: điểm, giới hạn thời gian, giới hạn nhớ làm chạy test lúc chấm Nếu khơng có thiết lập riêng cho test, thơng tin lấy từ thiết lập chung 40 CHƢƠNG 3: XÂY DỰNG HỆ THỐNG NỘP VÀ CHẤM BÀI TỰ ĐỘNG Chương tiếp tục vận dụng công nghệ công cụ chấm tự động để đề xuất giải pháp xây dựng hệ thống nộp chấm tự động hỗ trợ dạy học lập trình Các phần Chương tập trung nghiên đề xuất quy trình nộp chấm tự động, cơng đoạn xây dựng hệ thống đánh giá kết triển khai 3.1 QUY TRÌNH NỘP VÀ CHẤM BÀI TỰ ĐỘNG Sau sơ đồ triển khai quy trình nộp chấm tự động (Hình 1): Hình 3.1: Quy trình nộp chấm tự động 41 3.1.1 Viết code Sau trang bị kiến thức cần thiết, với đề cho, sinh viên thực bước sau:  Bƣớc 1: Đọc để hiểu đề toán  Bƣớc 2: Xác định đầu vào đầu toán  Bƣớc 3: Phát thảo mơ hình để giải tốn  Bƣớc 4: Phân tích chi tiết cụ thể toán  Bƣớc 5: Chọn củng cố mơ hình tối ưu để giải toán  Bƣớc 6: Phân rã giải pháp chọn thành modul nhỏ để lập trình  Bƣớc 7: Viết mã lệnh  Bƣớc 8: Chạy thử nghiệm  Bƣớc 9: Kiểm tra tính đắn, tính phổ qt tính hiệu chương trình 3.1.2 Nộp Sau kiểm tra, hoàn thiện làm mình, sinh viên nộp làm lên hệ thống chấm thơng qua trang website tạo để hỗ trợ việc nộp thuận tiện 3.1.3 Hệ thống chấm Hệ thống sau nhận sinh viên tự động biên dịch, chạy chương trình chấm kết theo test đáp án mà xây dựng Sau chấm xong, hệ thống tự động thông báo kết cho người học kết làm mình: nhiệm vụ hoàn thành, ngược lại người học phải quay lại để kiểm tra sai sót đâu, cập nhật viết code gởi lại cho hệ thống chấm Trong giai đoạn này, giáo viên tham gia hỗ trợ, tư vấn cho sinh viên điểm sai, thiếu sót người học để họ hồn thiện kỹ thực hành 42 3.2 XÂY DỰNG HỆ THỐNG NỘP VÀ CHẤM BÀI TỰ ĐỘNG Để triển khai xây dựng hệ thống, thực theo trình tự sau: 3.2.1 Cơ sở vật chất mơi trƣờng xây dựng hệ thống  Máy chấm: dùng máy sever laptop  Hệ thống máy tính cá nhân để làm  Hệ thống mạng cục mạng internet: kết nối máy làm với máy chấm  Phần mềm chấm tự động: Themis 3.2.2 Xây dựng website nộp tự động Chúng sử dụng ngôn ngữ PHP sở liệu MySQL để xây dựng website nộp tự động Các bước tiến hành xây dựng website nộp thực sau: Bƣớc 1: Xây dựng sở liệu người học, sinh viên có tài khoản (user) mật (password) (Hình 3.2) Hình 3.2: Cơ sở liệu người học Bƣớc 2: Thiết kế trang nộp tự động 43 Ngoài user password, trang web cịn có thêm thơng tin: Tên tốn (Problem ID), chọn ngơn ngữ lập trình (Programming Language) vùng Source code (chứa nội dung đoạn code chương trình sau hồn thiện) Cuối nút Submit để nộp lên hệ thống (Hình 3.3) Hình 3.3: Trang nộp tự động 3.2.3 Xây dựng test cho đáp án Đây công đoạn vất vả tốn nhiều thời gian Mỗi test gồm file text: *.INP: chứa liệu đầu vào *.OUT: chứa liệu đầu Có nhiều cách để sinh liệu: Làm thủ công; dùng Excel tạo mảng liệu copy sang file text; viết chương trình để sinh liệu… Để đánh giá xác phân loại sinh viên, test phải biện luận hết tình toán đặt ra, kể trường hợp ngoại lệ Sau cấu trúc tập mẫu: 44 TONGLE: Cho dãy số nguyên gồm n phần tử: a1, a2, ,an Tính tổng số lẻ dãy cho * Input: - Dòng đầu: n (n

Ngày đăng: 04/09/2021, 06:57

Tài liệu cùng người dùng

Tài liệu liên quan