Table of Contents
Fetching ...

ICLF: An Immersive Code Learning Framework based on Git for Teaching and Evaluating Student Programming Projects

Pierre Schaus, Guillaume Derval, Augustin Delecluse

TL;DR

The paper addresses scalable teaching and evaluation of programming projects in settings like MOOCs by introducing the Immersive Code Learning Framework (ICLF). ICLF leverages a Git-centric, template-stripping pipeline in which students start from a pre-existing codebase, collaborate on private forks, and receive continuous feedback as the teacher updates the template via a hidden solution repository. Key contributions include a detailed architectural description, a JavaGrader-based automated grading mechanism with secure test execution, and practical demonstrations in a Discrete Optimization course and an edX Constraint Programming MOOC. The work reduces dependence on grading platforms, supports plagiarism detection and progress tracking, and aligns classroom workflows with real-world software development, with positive student evaluations.

Abstract

Programming projects are essential in computer science education for bridging theory with practice and introducing students to tools like Git, IDEs, and debuggers. However, designing and evaluating these projects (especially in MOOCs)can be challenging. We propose the Immersive Code Learning Framework (ICLF), a scalable Git-based organizational pipeline for managing and evaluating student programming project. Students begin with an existing code base, a practice that is crucial for mirroring real-world software development. Students then iteratively complete tasks that pass predefined tests. The instructor only manages a hidden parent repository containing solutions, which is used to generate an intermediate public repository with these solutions removed via a templating system. Students are invited collaborators on private forks of this intermediate repository, possibly updated throughout the semester whenever the teacher changes the parent repository. This approach reduces grading platform dependency, supports automated feedback, and allows the project to evolve without disrupting student work. Successfully tested over several years, including in an edX MOOC, this organizational pipeline provides transparent evaluation, plagiarism detection, and continuous progress tracking for each student.

ICLF: An Immersive Code Learning Framework based on Git for Teaching and Evaluating Student Programming Projects

TL;DR

The paper addresses scalable teaching and evaluation of programming projects in settings like MOOCs by introducing the Immersive Code Learning Framework (ICLF). ICLF leverages a Git-centric, template-stripping pipeline in which students start from a pre-existing codebase, collaborate on private forks, and receive continuous feedback as the teacher updates the template via a hidden solution repository. Key contributions include a detailed architectural description, a JavaGrader-based automated grading mechanism with secure test execution, and practical demonstrations in a Discrete Optimization course and an edX Constraint Programming MOOC. The work reduces dependence on grading platforms, supports plagiarism detection and progress tracking, and aligns classroom workflows with real-world software development, with positive student evaluations.

Abstract

Programming projects are essential in computer science education for bridging theory with practice and introducing students to tools like Git, IDEs, and debuggers. However, designing and evaluating these projects (especially in MOOCs)can be challenging. We propose the Immersive Code Learning Framework (ICLF), a scalable Git-based organizational pipeline for managing and evaluating student programming project. Students begin with an existing code base, a practice that is crucial for mirroring real-world software development. Students then iteratively complete tasks that pass predefined tests. The instructor only manages a hidden parent repository containing solutions, which is used to generate an intermediate public repository with these solutions removed via a templating system. Students are invited collaborators on private forks of this intermediate repository, possibly updated throughout the semester whenever the teacher changes the parent repository. This approach reduces grading platform dependency, supports automated feedback, and allows the project to evolve without disrupting student work. Successfully tested over several years, including in an edX MOOC, this organizational pipeline provides transparent evaluation, plagiarism detection, and continuous progress tracking for each student.
Paper Structure (14 sections, 8 figures)

This paper contains 14 sections, 8 figures.

Figures (8)

  • Figure 1: Set of repositories involved
  • Figure 2: Enrollment of a new student.
  • Figure 3: Example of a strip operation on a Java source file. The code on the top is the teacher (solution) implementation. The code below corresponds to the public template. It is generated automatically by parsing the solution file and processing the strip tokens. We rely on a small utility tool for this: https://pypi.org/project/amanda/
  • Figure 4: The update of the template repository. A GitHub action is triggered at each push on the solution repository, stripping the code and pushing it to the template project.
  • Figure 5: Creation of the template repository through stripping and of the student repository through forking. Only the template repository is public, the teacher and student ones are private.
  • ...and 3 more figures