IRB Protocol ID: 2025-03-18384
- A command-line interface (CLI) to retrieve OkPy backup data (the "backups CLI") and store it in a local SQLite database
- A full-stack web application (the "web app") to display the OkPy backup data to help TAs give qualitative feedback on a student's code
- Exploratory data analysis (EDA) of OkPy backups to examine students' working habits in UC Berkeley's introductory computing courses, CS 61A and DATA C88C, from Fall 2023 - Fall 2025
- Clone the repository with SSH:
git clone git@github.com:berkeley-cdss/assignment-snapshots.git- Follow the instructions in the Backups CLI README's Setup section. You may skip step 4 (retrieving your OkPy backup token) if you don't intend to actually request any backups.
- You only need step 4 if you intend to run the
requestcommand of the Backups CLI. This also requires that you are added as a course staff member for the course you are requesting the backups from.
- You only need step 4 if you intend to run the
- Follow the instructions in the Web App README (read and do all the sections; only do the AWS section once you have AWS access).
- AWS access is only granted to internal UC Berkeley contributors. See internal onboarding documentation.
- When you run the
./bin/devcommand, you should only be able to view the home page with the Login button. If you click the button, it will error until you have done the next step.
- To get started with some toy development data if you are on the IRB protocol (internal contributors only):
- Replace the
datadirectory with the contents of this zip file (unzip it first): data.zip - Follow the steps in the "Dumping the database" section of the Backups CLI README to pipe the data from your local data directory into the snapshots Rails development database
- Replace the
All source code is located in the src directory. All OkPy backup data is located in the data directory (most of which is ignored by git for privacy reasons).
- All code related to the backups CLI is located in the
src/backupsdirectory. - The
main.pyfile contains the CLI command functions, and then other functions implement specific parts of the backups CLI such as database functions or functions that request or parse the raw OkPy backup data.
- All code related to the assignment snapshots interface/web app is located in the
src/snapshots-appdirectory. - All frontend code (React components) is located in the
src/snapshots-app/clientdirectory (specifically you define components in thesrc/snapshots-app/client/bundlesdirectory) - All backend code (Ruby on Rails) is located in other folders. These are the main ones you will need to edit:
src/snapshots-app/appcontains the code for models, views, and controllerssrc/snapshots-app/config/routes.rbcontains the backend API routessrc/snapshots-app/db/schema.rbcontains the database schemassrc/snapshots-app/db/seeds.rbcontains the code to seed the development database (e.g. set the initial values of the database programmatically)
- All code related to the assignment snapshots EDA is located in the
src/notebooksdirectory.
This repository uses GitHub Actions to run various unit tests and linters. See .github/workflows.
This repository uses the pre-commit package to automatically run
the black Python formatter upon running git commit. Hooks can be added to .pre-commit-config.yaml.
- Faculty advisors
- Lisa Yan (Spring 2025 - present)
- Michael Ball (Spring 2025 - present)
- Kay Ousterhout (Spring 2026 - present)
- Students
- Rebecca Dang (Spring 2025 - present) (5th Year MS EECS)
- Richard Villagomez (Spring 2026 - present)
- Jasmine Sov (Spring 2026 - present)
If you are affiliated with UC Berkeley and are interested in working on this project long-term, please reach out to us!
If you are external to UC Berkeley and/or only wish to make code changes, please feel free to fork the repo and create a pull request to contribute code to the repository. Before requesting a review and merging, ensure that all status checks are passing.