Assignments Overview
Programming assignments are the core of Pawtograder. Each assignment consists of a “handout” repository, and optionally, a “grader” repository. When an assignment is released, Pawtograder automatically creates a new private repository for each student based on that handout. Pawtograder automatically manages permissions for all of these repositories, allowing staff to view all of a course’s repositories, and ensuring students can only view their own repositories.GitHub Permissions
Pawtograder creates two GitHub teams for each class: a “staff” team and a “students” team. Staff are granted access to all class repositories, and students are only granted access to their own repositories. The “students” team can be used by instructors who want to create additional GitHub repositories that are only accessible to students (e.g. for distributing in-class exercises).Repositories
Two repositories are automatically created for each assignment: a “handout” repository and a “grader” repository. These repositories must be configured by the staff before the assignment is released. A handout repository is a repository that contains the starter code for an assignment. It is used to provide students with the necessary files to complete the assignment. A grader repository is a repository that contains the code that will be used to grade the assignment. It is used to provide instructors with the necessary files to grade the assignment.Syncing Handout Updates
When you need to push updates from the handout repository to student repositories (for example, to fix a bug in starter code), Pawtograder provides a sync-to-handout feature. The system has been improved for better resilience:- Automatic retry logic: Failed syncs are automatically retried
- Conflict detection: The system detects and reports merge conflicts
- Selective sync: Choose which students receive the update
- Status tracking: Monitor sync progress across all student repositories