How to Track Your Progress in the OSSU Curriculum: A Complete Guide
You track your progress in the OSSU computer science curriculum by forking the GitHub repository and prefixing completed courses with ✅ in your local README.md, then optionally syncing dates to the linked Google Sheets tracker.
The Open Source Society University (OSSU) maintains its computer science curriculum as a static-site repository rendered from Markdown files. Because the entire degree path lives in plain text on GitHub, you can transform your personal fork into a version-controlled academic transcript. This approach leverages GitHub’s native task-list rendering and community-built spreadsheets to create a durable, shareable record of your completed coursework.
Fork and Clone Your Progress Repository
To begin tracking, you must create your own copy of the curriculum repository. This isolates your progress markers from the upstream source while allowing you to pull updates when the curriculum changes.
-
Fork the repository on GitHub by clicking the Fork button at the top of
ossu/computer-science. -
Clone your fork locally:
git clone https://github.com/<YOUR_USERNAME>/computer-science.git cd computer-science -
Open
README.mdin your editor. Locate the How to show your progress section, which contains the master curriculum table where you will insert completion markers.
Mark Courses Complete with GitHub Task Lists
The OSSU curriculum uses GitHub-flavored Markdown task lists to visualize completion status. When you prepend a line with the ✅ emoji (or the standard - [x] syntax), GitHub renders it as a checked box in the web interface.
Locate the curriculum table
In README.md, find the course listings. For example, the entry for Systematic Program Design appears as:
- [Systematic Program Design](coursepages/spd/README.md) | 13 weeks | 8-10 h/week | none | chat: part 1 / part 2
Add the completion marker
Change the leading hyphen to include the ✅ symbol:
- ✅ [Systematic Program Design](coursepages/spd/README.md) | 13 weeks | 8-10 h/week | none | chat: part 1 / part 2
Save the file, then commit and push your change:
git add README.md
git commit -m "Mark Systematic Program Design complete"
git push origin main
When you view your fork on GitHub, the course will display a checked checkbox, providing an instant visual summary of your progress through the OSSU curriculum.
Update the Progress Spreadsheet
While the Markdown checklist shows what you have finished, the linked Google Sheets tracker helps forecast when you will graduate. The spreadsheet automatically recalculates your projected completion date as you log actual start and end dates.
Access the template here: Progress Spreadsheet (copyable)
After copying the sheet to your Google Drive, fill in the Actual Start Date and Actual End Date columns for each course you complete. The formula in the Projected Graduation cell updates dynamically based on your historical pace.
Automate Progress Updates
For students tracking dozens of courses, manually editing README.md becomes tedious. You can automate the checkbox insertion using shell scripts or the GitHub API.
Bash automation script
Save the following script as mark_done.sh in your repository root to programmatically insert ✅ markers:
#!/usr/bin/env bash
# Usage: ./mark_done.sh "Operating Systems: Three Easy Pieces"
COURSE_NAME="$1"
FILE="README.md"
# Escape special characters for grep
escaped=$(printf '%s\n' "$COURSE_NAME" | sed 's/[][\.*^$/]/\\&/g')
# Insert a ✅ before the matching line
sed -i.bak "/$escaped/ s/^- /- ✅ /" "$FILE"
git add "$FILE"
git commit -m "Mark \"$COURSE_NAME\" as completed"
git push origin main
Run the script with the exact course name as it appears in README.md:
chmod +x mark_done.sh
./mark_done.sh "Operating Systems: Three Easy Pieces"
Python automation with PyGithub
If you prefer editing files directly via the API without cloning locally, use the PyGithub library. Store your Personal Access Token in an environment variable rather than hardcoding it:
from github import Github
import os
# Authenticate using a token stored in an environment variable
g = Github(os.getenv("GITHUB_TOKEN"))
repo = g.get_user().get_repo("computer-science")
contents = repo.get_contents("README.md")
readme = contents.decoded_content.decode()
# Add a checkmark for a specific course
course = "[Operating Systems: Three Easy Pieces]"
new_readme = readme.replace(f"- {course}", f"- ✅ {course}")
repo.update_file(
path="README.md",
message="Mark OS3EP as completed",
content=new_readme,
sha=contents.sha,
)
Security note: Never commit tokens to version control. Always use environment variables or GitHub Secrets for authentication.
Key Files for Progress Tracking
Understanding the repository structure helps you decide where to log your progress. While most students edit README.md, you can also maintain separate tracking files.
| File | Purpose | Location |
|---|---|---|
README.md |
Contains the How to show your progress section and the master curriculum table. This is the primary location for ✅ checkmarks. | Repository root |
extras/courses.md |
Supplementary list of elective or advanced courses. Useful if you want to track electives separately from core requirements. | extras/ directory |
extras/readings.md |
Curated list of textbooks and papers. You can create a reading checklist here parallel to your course tracking. | extras/ directory |
If you prefer a Kanban-style visualization, enable GitHub Projects in your fork’s settings and configure columns (To Do, In Progress, Done). You can then reference issues or notes that link to specific lines in your README.md checklist.
Summary
- Fork the repository to isolate your personal progress markers from the main OSSU curriculum.
- Edit
README.mdto insert ✅ before completed courses; GitHub renders these as checked task-list items. - Commit and push changes regularly to maintain a backed-up, timestamped history of your academic journey.
- Use the Google Sheets tracker to calculate projected graduation dates based on your actual completion pace.
- Automate updates with Bash or Python scripts if you are tracking large volumes of coursework.
Frequently Asked Questions
Do I need to submit my progress to OSSU to earn the "degree"?
No. OSSU is a self-directed curriculum with no formal accreditation or submission requirements. Your forked repository serves as your unofficial transcript and proof of completion for personal or portfolio purposes only.
Can I track progress without forking the repository?
Yes, but forking is strongly recommended. If you avoid forking, you lose the ability to use GitHub’s native task-list rendering for your specific progress, making it harder to visualize remaining coursework at a glance. You could alternatively download the README.md and track it locally with any Markdown editor, but you would lose the collaborative and backup benefits of Git.
What happens when the OSSU curriculum updates its course list?
Because you own a fork, you control when to sync with the upstream ossu/computer-science repository. Use git remote add upstream https://github.com/ossu/computer-science.git to fetch updates, then merge them into your local branch. Your checked ✅ items will persist unless the specific course line is deleted or radically restructured in the upstream source.
Is there a mobile-friendly way to track my progress?
Yes. You can edit README.md directly in the GitHub mobile app or mobile web interface. Simply navigate to your fork, tap the pencil icon on README.md, and add the ✅ emoji before the course you completed. The change renders instantly, though committing from mobile requires a brief commit message entry.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →