# How to Fork the OSSU Computer Science Repository: A Complete Guide

> Learn how to fork the OSSU computer science repository to track progress, experiment, and contribute. This guide provides step-by-step instructions for your personal GitHub copy.

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

---

**Forking the OSSU computer science repository creates a personal copy under your GitHub account, allowing you to track curriculum progress, experiment with modifications, and submit contributions back to the upstream project.**

The Open Source Society University (OSSU) maintains its comprehensive computer science curriculum on GitHub at `github.com/ossu/computer-science`. When you fork the OSSU computer science repository, you establish an independent workspace that mirrors the entire project history, branches, and file structure while maintaining a connection to the original source for future updates.

## Why Fork the OSSU Computer Science Repository?

Creating a fork serves multiple practical purposes for learners and contributors. The repository's own [`README.md`](https://github.com/ossu/computer-science/blob/main/README.md) explicitly recommends forking as the primary method to **track your progress** through the curriculum, enabling you to mark completed courses and add personal notes directly in your copy.

Additionally, forking allows you to:

- **Experiment safely** with modifications to course schedules or resource links without affecting the canonical curriculum
- **Submit contributions** such as typo fixes, resource updates, or curriculum improvements via pull requests
- **Maintain version control** of your personal learning journey alongside the evolving upstream content

## Step-by-Step Guide to Fork the OSSU Computer Science Repository

### Navigate to the Repository

Open your web browser and navigate to the official repository URL:

```

https://github.com/ossu/computer-science

```

This page contains the main curriculum files, including the [`README.md`](https://github.com/ossu/computer-science/blob/main/README.md) that provides the fork instructions referenced throughout the community.

### Create Your Fork

Locate the **"Fork" button** in the upper-right corner of the repository page, positioned between the "Watch" and "Star" buttons. Click this button to initiate the forking process.

GitHub will present a dialog prompting you to select the destination account or organization. Choose your personal GitHub account (or an organization where you have appropriate permissions). GitHub will then create a new repository named `computer-science` under your selected account.

### Verify Your Fork

Once the process completes, your browser will redirect to your new fork URL:

```

https://github.com/<YOUR_USERNAME>/computer-science

```

Verify that the repository header displays "**forked from ossu/computer-science**" beneath the repository name, confirming the upstream relationship. Your fork now contains identical content to the original, including all branches, commit history, and files such as [`CONTRIBUTING.md`](https://github.com/ossu/computer-science/blob/main/CONTRIBUTING.md) and the `.github/workflows/` directory.

## Working with Your Fork: Essential Git Workflows

After forking, you'll need to clone the repository locally and configure it for ongoing use. The following workflows assume you have Git installed on your local machine.

### Clone Your Fork Locally

Open your terminal and clone your fork to create a local working copy:

```bash

# Clone your fork to a local machine

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

```

Replace `<YOUR_USERNAME>` with your actual GitHub username. This command downloads the entire repository history, including the `coursepages/` directory containing course-specific resources.

### Configure Upstream Remote

To keep your fork synchronized with the original OSSU repository, add the upstream remote:

```bash

# Add the upstream OSSU repo as a remote

git remote add upstream https://github.com/ossu/computer-science.git

```

Verify the configuration:

```bash
git remote -v

```

You should see both `origin` (pointing to your fork) and `upstream` (pointing to ossu/computer-science).

### Sync with Upstream Changes

Periodically update your fork to incorporate changes from the main OSSU repository:

```bash

# Fetch upstream changes

git fetch upstream

# Checkout your main branch

git checkout main

# Merge upstream changes into your fork

git merge upstream/main

# Push updated main branch to your fork

git push origin main

```

This workflow ensures your local copy includes the latest curriculum updates, bug fixes in [`.github/workflows/delete-empty-issues.yml`](https://github.com/ossu/computer-science/blob/main/.github/workflows/delete-empty-issues.yml), or changes to [`CONTRIBUTING.md`](https://github.com/ossu/computer-science/blob/main/CONTRIBUTING.md).

### Track Progress and Contribute

Use branches to track your personal progress or prepare contributions:

```bash

# Create a new branch for tracking progress

git checkout -b my-progress

# Make changes (e.g., mark completed courses in README)

git add .
git commit -m "Add progress marker for Algorithms course"

# Push branch to your fork

git push origin my-progress

```

To contribute changes back to OSSU, open a **Pull Request** via the GitHub web interface, selecting your branch as the compare branch and `ossu/computer-science:main` as the base.

## Key Files in the OSSU Repository

Understanding the repository structure helps you navigate your fork effectively:

- **[`README.md`](https://github.com/ossu/computer-science/blob/main/README.md)** – The central curriculum hub containing course listings, prerequisites, and the official fork instructions referenced throughout the community.
- **[`CONTRIBUTING.md`](https://github.com/ossu/computer-science/blob/main/CONTRIBUTING.md)** – Guidelines for submitting improvements, essential reading if you plan to open pull requests from your fork.
- **[`.github/workflows/delete-empty-issues.yml`](https://github.com/ossu/computer-science/blob/main/.github/workflows/delete-empty-issues.yml)** – Example GitHub Actions configuration demonstrating that forks retain automation workflows from the original repository.
- **`coursepages/`** – Directory containing detailed course-specific README files and resources for each subject in the curriculum.

## Summary

- **Forking** the OSSU computer science repository creates a personal GitHub copy at `github.com/<YOUR_USERNAME>/computer-science` while maintaining an upstream link to `ossu/computer-science`.
- The **Fork button** in the upper-right corner of the repository page initiates the process, which the [`README.md`](https://github.com/ossu/computer-science/blob/main/README.md) explicitly recommends for tracking curriculum progress.
- After forking, **clone locally**, **add an upstream remote**, and periodically **sync with `git fetch upstream`** to incorporate curriculum updates.
- Use **branches** to track personal progress or prepare contributions, following guidelines in [`CONTRIBUTING.md`](https://github.com/ossu/computer-science/blob/main/CONTRIBUTING.md) when submitting pull requests.

## Frequently Asked Questions

### How do I keep my fork of the OSSU computer science repository updated with the latest curriculum changes?

Configure an upstream remote pointing to `https://github.com/ossu/computer-science.git`, then periodically run `git fetch upstream`, checkout your main branch, and execute `git merge upstream/main` followed by `git push origin main`. This workflow ensures your personal copy includes the latest updates to course listings in [`README.md`](https://github.com/ossu/computer-science/blob/main/README.md) and resources in the `coursepages/` directory.

### Can I use my fork to track which OSSU courses I've completed?

Yes, forking is the recommended method for progress tracking according to the repository's [`README.md`](https://github.com/ossu/computer-science/blob/main/README.md). After creating your fork, you can edit the [`README.md`](https://github.com/ossu/computer-science/blob/main/README.md) file in your personal copy to mark completed courses, add completion dates, or include personal notes. Commit these changes to a dedicated branch such as `my-progress` to maintain a clear history of your academic journey through the curriculum.

### What is the difference between forking and cloning the OSSU repository?

**Forking** creates a copy of the repository under your GitHub account on GitHub's servers, establishing a persistent relationship with the upstream `ossu/computer-science` repository that enables pull requests and synchronization. **Cloning** merely downloads a copy of a repository (either the original or your fork) to your local machine for editing. To contribute to OSSU or maintain a personal progress tracker, you should first fork the repository on GitHub, then clone your fork locally using `git clone https://github.com/<YOUR_USERNAME>/computer-science.git`.

### Do I need special permissions to fork the OSSU computer science repository?

No, forking requires no special permissions because the OSSU computer science repository is publicly available under an open-source license. Any GitHub user can click the **Fork** button in the upper-right corner of the repository page to create a personal copy. However, if you wish to contribute changes back to the upstream repository via pull requests, you should review the [`CONTRIBUTING.md`](https://github.com/ossu/computer-science/blob/main/CONTRIBUTING.md) file in your fork for guidelines on submission standards and commit message conventions.