https://github.com/bviggiano/pact
A Github based tool designed to help streamline the process of creating, versioning, and distributing programming assignments.
https://github.com/bviggiano/pact
assignments courses education projects school school-assignment school-project teaching teaching-materials teaching-resources teaching-tool
Last synced: 5 months ago
JSON representation
A Github based tool designed to help streamline the process of creating, versioning, and distributing programming assignments.
- Host: GitHub
- URL: https://github.com/bviggiano/pact
- Owner: bviggiano
- License: mit
- Created: 2024-07-14T18:10:26.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-03-02T23:20:11.000Z (over 1 year ago)
- Last Synced: 2025-03-03T00:49:28.619Z (over 1 year ago)
- Topics: assignments, courses, education, projects, school, school-assignment, school-project, teaching, teaching-materials, teaching-resources, teaching-tool
- Language: Python
- Homepage:
- Size: 581 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Programming Assignment Creation Tool (PACT) 📄
PACT is a simple Github based tool designed to help streamline the process of creating, versioning, and distributing programming assignments.
## What is PACT? 📝
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.
## Getting Started 🚀
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.
### 1. Create Your Repository
1. Navigate to [github.com/bviggiano/pact](https://github.com/bviggiano/pact)
2. Click on the **"Use this template"** button, located above the file list and next to the "Code" button
3. Select **"Create a new repository"**
4. On the repository creation page, choose a repository name (e.g., `CS101`) and set the visibility to **private**
### 2. Enable GitHub Actions Permissions
> [!WARNING]
> **The automated release workflow will fail with a 403 error until you complete this step.**
1. Go to your repository's **Settings** tab
2. In the left sidebar, click **Actions** → **General**
3. Scroll down to **Workflow permissions**
4. Select **Read and write permissions**
5. 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.
### 3. Set Up Local Environment
After configuring permissions, set up the PACT conda environment:
```bash
conda env create -f environment.yml
conda activate pact_env
pip install -e .
```
> [!TIP]
> Check out the [pact/README.md](./pact/README.md) file for detailed information on how to use PACT to create assignments, including trigger keywords and customization options.
## Contributing 🤝
Contributions to PACT are welcome! Whether it's adding new features, fixing bugs, or improving documentation, all contributions are appreciated. 😁
## License 📝
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
Happy Coding! 🚀