FLOD: Full-Lifecycle Online Judge For Accompanying Programming Teaching
S.H. Zhang, Ji Tao Wu, Qing Sun · 2023
To achieve the primary teaching goal of a programming course, the typical teaching method is to improve students’ programming skills by assigning them a number of programming tasks and to check the quality of programs finished by students by using online judge system. Currently, these judge systems mainly contribute to evaluating how well a program satisfies its task requirement. Besides this basic role, a program judge system should also help students to progressively improve their programs’ quality throughout the entire development lifecycle, rather than simply assessing the correctness of their programs. This assistance encompasses program construction, testing, and bug fixing stages. To meet the diverse needs of program evaluation and handle the high workload generated by a large number of evaluation tasks, this paper proposes a distributed micro-service based program judge system called FLOD (Full Lifecycle Online juDge) built on time driven interactive judge cores, together with the configurable testing services. FLOD provides teachers with configurable judge workflow and running environment, upon which various programming tasks can be assigned and implemented. FLOD can automatically access the code repositories of students by integrating with Gitlab and provide interactive code judge services to feedback students instantly with the bugs and bad code styles found such that students can improve their programs at their own paces. FLOD has been successfully deployed to serve the Object Oriented Design and Construction (OODC) course offered in Beihang university since 2019. To assess its effectiveness, we propose the metrics and collect the usage data from 2019 to 2022. The results show that FLOD effectively supports the accompanying programming teaching with considerable reliability and scalability, which is very important to achieve the teaching goal for our course with over 300 students.