# How to Track Your Progress in the OSSU Curriculum: A Complete Guide

> Easily track your progress in the OSSU computer science curriculum. Fork the GitHub repo, update your README.md with completed courses, and sync to Google Sheets for a clear overview.

- Repository: [Open Source Society University/computer-science](https://github.com/ossu/computer-science)
- Tags: how-to-guide
- Published: 2026-02-24

---

**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`](https://github.com/ossu/computer-science/blob/main/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.

1.  **Fork the repository** on GitHub by clicking the *Fork* button at the top of `ossu/computer-science`.
2.  **Clone your fork locally**:

    ```bash
    git clone https://github.com/<YOUR_USERNAME>/computer-science.git
    cd computer-science
    ```

3.  **Open [`README.md`](https://github.com/ossu/computer-science/blob/main/README.md)** in 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`](https://github.com/ossu/computer-science/blob/main/README.md), find the course listings. For example, the entry for Systematic Program Design appears as:

```markdown
- [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:

```markdown
- ✅ [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:

```bash
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)](https://docs.google.com/spreadsheets/d/1y2kMsIg9VaHMVmw35x_aH1hpty3V-ZMuV2jA13P_Cgo/copy)

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`](https://github.com/ossu/computer-science/blob/main/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`](https://github.com/ossu/computer-science/blob/main/mark_done.sh) in your repository root to programmatically insert ✅ markers:

```bash
#!/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`](https://github.com/ossu/computer-science/blob/main/README.md):

```bash
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:

```python
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`](https://github.com/ossu/computer-science/blob/main/README.md), you can also maintain separate tracking files.

| File | Purpose | Location |
|------|---------|----------|
| [`README.md`](https://github.com/ossu/computer-science/blob/main/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`](https://github.com/ossu/computer-science/blob/main/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`](https://github.com/ossu/computer-science/blob/main/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`](https://github.com/ossu/computer-science/blob/main/README.md) checklist.

## Summary

- **Fork the repository** to isolate your personal progress markers from the main OSSU curriculum.
- **Edit [`README.md`](https://github.com/ossu/computer-science/blob/main/README.md)** to 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`](https://github.com/ossu/computer-science/blob/main/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`](https://github.com/ossu/computer-science/blob/main/README.md) directly in the GitHub mobile app or mobile web interface. Simply navigate to your fork, tap the pencil icon on [`README.md`](https://github.com/ossu/computer-science/blob/main/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.