PACT is a simple Github based tool designed to help streamline the process of creating, versioning, and distributing programming assignments.
The core functionality of PACT is to provide a way to automatically convert the "solution" form of a programming assignment into a version that is ready to be distributed to students. To do this, PACT relies on a few keyword triggers that are placed in the solution code. These triggers and the resulting behavior they cause are highly customizable.
This PACT repository is designed to be utilized as a starting template for a repository containing the assignments for your course.
Important
Since this repository will contain the solution versions of the assignments, it is recommended to keep it private to prevent students from accessing the solution code.
- Navigate to github.com/bviggiano/pact
- Click on the "Use this template" button, located above the file list and next to the "Code" button
- Select "Create a new repository"
- On the repository creation page, choose a repository name (e.g.,
CS101) and set the visibility to private
Warning
The automated release workflow will fail with a 403 error until you complete this step.
- Go to your repository's Settings tab
- In the left sidebar, click Actions → General
- Scroll down to Workflow permissions
- Select Read and write permissions
- Click Save
Note
For GitHub Organizations: If your repository is in an organization, you may need to enable this setting at the organization level first. Go to Organization Settings → Actions → General → Workflow permissions.
After configuring permissions, set up the PACT conda environment:
conda env create -f environment.yml
conda activate pact_env
pip install -e .Tip
Check out the pact/README.md file for detailed information on how to use PACT to create assignments, including trigger keywords and customization options.
Contributions to PACT are welcome! Whether it's adding new features, fixing bugs, or improving documentation, all contributions are appreciated. 😁
This project is licensed under the MIT License - see the LICENSE file for details.
Happy Coding! 🚀
