Hello there πŸ‘‹

Learn what Divekit is and how it can help you manage programming assignments.

What is Divekit?

Divekit is a command-line tool for managing individualized programming assignments at scale. It helps educators create, distribute and evaluate programming exercises for large groups of students.

Visual overview: from origin to distributed repositories

Locally:

my-assignment/
β”œβ”€ .divekit/
β”œβ”€ src/$Vehicle$.java            # placeholder - used by individualization
β”œβ”€ test_sandbox/                 # filter - excluded from student repos
└─ README.md

Gitlab: “Individualized repositories”:

gitlab.example.com/.../my-group/    # Code repositories (main target)
β”œβ”€ my-assignment-4d2c0752-f400-4690-9bac-97c927e68e17/
β”‚  β”œβ”€ src/Car.java                  # $Vehicle$ β†’ Car
β”‚  └─ README.md
β”œβ”€ my-assignment-4d243142-292b-4b95-abbb-af13f102c857/
β”‚  β”œβ”€ src/Bike.java                 # $Vehicle$ β†’ Bike
β”‚  └─ README.md
└─ my-assignment-8153ded6-ee91-4135-b59e-ace2625f83c3/
   β”œβ”€ src/Plane.java                # $Vehicle$ β†’ Plane
   └─ README.md

Gitlab: “Secure pipeline” (students cannot access)

gitlab.example.com/.../my-sandbox/
β”œβ”€ my-assignment-4d2c0752-f400-4690-9bac-97c927e68e17/
β”‚  β”œβ”€ src/Car.java                  # $Vehicle$ β†’ Car
β”‚  β”œβ”€ test/                 
β”‚  └─ README.md
β”œβ”€ my-assignment-4d243142-292b-4b95-abbb-af13f102c857/
β”‚  β”œβ”€ src/Bike.java                 # $Vehicle$ β†’ Bike
β”‚  β”œβ”€ test/                 
β”‚  └─ README.md
└─ my-assignment-8153ded6-ee91-4135-b59e-ace2625f83c3/
   β”œβ”€ src/Plane.java                # $Vehicle$ β†’ Plane
   β”œβ”€ test/                 
   └─ README.md

Key Features

  • Assignment Individualization: Generate unique variations of programming assignments for each student
  • Automated Distribution: Create and manage GitLab repositories for students automatically
  • Test Integration: Built-in support for automated testing and evaluation
  • Bulk Operations: Efficiently manage assignments for large classes
  • Access Control: Manage repository access rights and permissions

Benefits

  • Prevent Plagiarism: Each student receives a slightly different version of the assignment
  • Save Time: Automate repetitive tasks like repository setup and access management
  • Ensure Fairness: Standardized testing and evaluation across all variations
  • Scale Easily: Handle large classes with minimal additional effort

Use Cases

Divekit is primarily used in educational settings where:

  • Programming assignments need to be distributed to many students
  • Each student should receive an individualized version
  • Automated testing and evaluation is desired
  • Manual administrative overhead should be minimized

The tool consolidates functionality that was previously spread across multiple separate tools into a single, easy-to-use CLI application.

Divekit is a toolkit for managing individualized programming assignments at scale.

Who needs Divekit?

Divekit is designed for different stakeholders in programming education:

Course Instructors

Primary users who:

  • Create and manage programming assignments
  • Need to distribute exercises to large groups of students
  • Want to prevent plagiarism through individualization
  • Need efficient ways to evaluate student submissions

Benefits

  • Automated repository management
  • Built-in individualization system
  • Integrated testing capabilities
  • Bulk operations for large classes

Teaching Assistants

Support staff who:

  • Help manage student repositories
  • Assist with assignment evaluation
  • Provide technical support to students

Benefits

  • Standardized repository structure
  • Automated access management
  • Consistent testing environment
  • Clear overview of student progress

Students

End users who:

  • Receive individualized assignments
  • Submit their solutions through Git
  • Get automated feedback on their work

Benefits

  • Personal GitLab repositories
  • Immediate feedback through automated tests
  • Clear assignment structure
  • Consistent submission process