# How the OSSU Computer Science Curriculum Is Structured: A Complete Guide to the Free CS Degree

> Discover the OSSU computer science curriculum structure. Learn about its five layers: Prerequisites, Intro CS, Core CS, Advanced CS, and Final Project. All free!

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

---

**The OSSU computer science curriculum is organized into five sequential layers—Prerequisites, Intro CS, Core CS, Advanced CS, and a Final Project—mapping exactly to the CS 2013 guidelines, with all course materials curated in modular `coursepages/` directories and tracked via simple Markdown checkboxes in the repository's [`README.md`](https://github.com/ossu/computer-science/blob/main/README.md).**

The `ossu/computer-science` repository provides a fully open-source, self-paced educational path that replicates the requirements of a traditional undergraduate computer science degree without tuition costs. This curriculum structures freely available MOOCs, textbooks, and university lectures into a rigorous progression governed by the *Curricular Guidelines for Undergraduate Degree Programs in Computer Science* (CS 2013). By following the repository's hierarchy, learners move from high-school math foundations through advanced electives to a capstone project that demonstrates mastery.

## The Five-Layer Architecture of the OSSU CS Curriculum

The curriculum is designed as a vertical stack where each layer builds upon the previous, starting with remedial math and culminating in independent research.

### Prerequisites and Intro CS

Before attempting university-level material, learners must demonstrate proficiency in high-school algebra, geometry, and pre-calculus as specified in the **Prerequisites** section of [`README.md`](https://github.com/ossu/computer-science/blob/main/README.md).

Once ready, students complete **Intro CS**, a single "taste-test" course that introduces computation, imperative programming, and basic data structures. The repository directs learners to *Introduction to Computer Science and Programming using Python*, with specific guidance located in [[`coursepages/intro-cs/README.md`](https://github.com/ossu/computer-science/blob/main/coursepages/intro-cs/README.md)](https://github.com/ossu/computer-science/blob/master/coursepages/intro-cs/README.md).

### Core CS: The Eight Sub-Domains

**Core CS** represents roughly the first three years of a bachelor's program and is divided into eight distinct sub-domains. Each sub-domain maintains its own directory under `coursepages/` containing a [`README.md`](https://github.com/ossu/computer-science/blob/main/README.md) with course links, prerequisites, and effort estimates.

The eight sub-domains are:

- **Programming** – Foundational software engineering courses like *Systematic Program Design* ([[`coursepages/spd/README.md`](https://github.com/ossu/computer-science/blob/main/coursepages/spd/README.md)](https://github.com/ossu/computer-science/blob/master/coursepages/spd/README.md))
- **Math** – Calculus and discrete mathematics sequences, including MIT's *Calculus 1A-C* via OpenLearning
- **Tools** – Essential developer tooling covered in *The Missing Semester of Your CS Education* ([`coursepages/cs-tools`](https://github.com/ossu/computer-science/blob/master/coursepages/README.md))
- **Systems** – Hardware and operating systems, including *Build a Modern Computer from First Principles* (Nand-to-Tetris) referenced in [`coursepages/ostep`](https://github.com/ossu/computer-science/blob/master/coursepages/ostep/README.md)
- **Theory** – Algorithm analysis and complexity theory via Stanford's *Algorithms: Design and Analysis*
- **Security** – Foundational cybersecurity through *Cybersecurity Fundamentals* on EDX
- **Applications** – Practical domains such as *Databases: Modeling and Theory*
- **Ethics** – Professional responsibility and societal impact via *Ethics, Technology and Engineering*

### Advanced CS Elective Tracks

After completing all Core CS requirements, learners select from **Advanced CS** elective tracks to specialize or deepen expertise. These tracks are optional but recommended for mastery:

- **Programming** – Advanced paradigms like *Parallel Programming* (Scala)
- **Systems** – Deep dives such as *Compilers* (EDX)
- **Theory** – Formal methods including *Theory of Computation* (MIT OCW)
- **Information Security** – Specialized security courses like *Web Security Fundamentals*
- **Math** – Linear algebra and advanced statistics via resources like *Essence of Linear Algebra*

### The Final Project

The curriculum concludes with a **capstone project** where learners independently design and deliver a solution to a real-world problem. This project demonstrates integration of knowledge across all prior layers and is self-directed without prescribed course materials.

## Navigating the Repository Structure

The `ossu/computer-science` repository functions as a lightweight learning-management system using only Markdown and Git.

### Key Files and Their Purpose

Understanding the repository layout is essential for efficient progress:

| File | Purpose |
|------|---------|
| [`README.md`](https://github.com/ossu/computer-science/blob/main/README.md) | The master curriculum containing the full course hierarchy, effort estimates (in hours), and Discord/forum links for community support |
| [`CURRICULAR_GUIDELINES.md`](https://github.com/ossu/computer-science/blob/main/CURRICULAR_GUIDELINES.md) | Verbatim reproduction of the CS 2013 standards that justify the curriculum's scope and sequence |
| [`CONTRIBUTING.md`](https://github.com/ossu/computer-science/blob/main/CONTRIBUTING.md) | Community guidelines for proposing new courses or updating broken links via pull requests |
| `coursepages/<topic>/README.md` | Granular sub-domain details (e.g., `coursepages/spd/`, `coursepages/ostep/`) |
| [`extras/readings.md`](https://github.com/ossu/computer-science/blob/main/extras/readings.md) | Supplementary classic textbooks and free online readings for deeper study |

### Tracking Progress with Git

Because the curriculum is pure Markdown, learners track completion by editing [`README.md`](https://github.com/ossu/computer-science/blob/main/README.md) directly. The community convention is to append a ✅ emoji to course lines upon completion.

Clone the repository to begin:

```bash
git clone https://github.com/ossu/computer-science.git
cd computer-science
code README.md  # Opens in VS Code or similar

```

Automate progress tracking with the following Python script saved as [`mark_done.py`](https://github.com/ossu/computer-science/blob/main/mark_done.py):

```python
import sys, re

def tick_course(course_name, path='README.md'):
    with open(path, 'r', encoding='utf-8') as f:
        lines = f.readlines()

    pattern = re.compile(rf'^(\s*\[.*\]\(.*\)\s*\|\s*.*\|\s*.*\|\s*.*\|\s*\[chat\]\(.*\))$', re.I)
    for i, line in enumerate(lines):
        if course_name.lower() in line.lower() and pattern.search(line):
            if '✅' not in line:
                lines[i] = line.rstrip() + ' ✅\n'
                break

    with open(path, 'w', encoding='utf-8') as f:
        f.writelines(lines)

if __name__ == '__main__':
    if len(sys.argv) != 2:
        print('Usage: python mark_done.py "Course title substring"')
    else:
        tick_course(sys.argv[1])

```

Execute the script after finishing a course:

```bash
python mark_done.py "Systematic Program Design"

```

To generate a personal checklist of remaining courses, use this Bash script saved as [`list_pending.sh`](https://github.com/ossu/computer-science/blob/main/list_pending.sh):

```bash
#!/usr/bin/env bash

# Prints every course line that does NOT contain a ✅

grep -E '\| \[[^\]]+\]\([^)]+\) \|' README.md | grep -v '✅' | nl

```

Run it to see your current queue:

```bash
bash list_pending.sh

```

These utilities transform the static Markdown into an interactive progress dashboard without external dependencies.

## Summary

- The **OSSU computer science curriculum** follows a five-layer progression from prerequisites through a final capstone project, strictly adhering to CS 2013 guidelines documented in [`CURRICULAR_GUIDELINES.md`](https://github.com/ossu/computer-science/blob/main/CURRICULAR_GUIDELINES.md).
- **Core CS** splits into eight sub-domains (Programming, Math, Tools, Systems, Theory, Security, Applications, Ethics) with dedicated `coursepages/<topic>/README.md` files for detailed course listings.
- **Advanced CS** offers elective specialization tracks in Programming, Systems, Theory, Information Security, and Math, activated only after Core completion.
- Progress tracking relies on community conventions: learners edit [`README.md`](https://github.com/ossu/computer-science/blob/main/README.md) to add ✅ marks beside completed courses, enabling simple Git-based version control of their academic journey.

## Frequently Asked Questions

### Is the OSSU computer science curriculum equivalent to a formal bachelor's degree?

The OSSU computer science curriculum covers the same **core CS content** required by the CS 2013 guidelines used by accreditation bodies, but it does not award academic credit or a diploma. It provides the knowledge equivalent minus general-education requirements, making it ideal for self-taught developers or degree-holders seeking CS fundamentals.

### How long does it take to complete the entire OSSU CS curriculum?

Completion time varies by prior experience and study intensity. According to estimates in [`README.md`](https://github.com/ossu/computer-science/blob/main/README.md), Core CS alone requires approximately **1,000 to 1,500 hours** of study. Learners studying part-time (10-15 hours weekly) typically finish in **18 to 36 months**, while full-time students may complete it in **9 to 12 months**.

### Can I skip courses or change the order within the OSSU curriculum?

While the repository recommends a specific sequence—especially completing **Intro CS** before **Core CS**—experienced learners can skip material they already master. However, the eight Core CS sub-domains assume cumulative knowledge; for example, *Theory* courses assume competency from *Math* and *Programming* prerequisites listed in their respective `coursepages/` entries.

### How do I contribute a new course or fix a broken link in the curriculum?

The `ossu/computer-science` repository is community-driven. Contributors should consult [`CONTRIBUTING.md`](https://github.com/ossu/computer-science/blob/main/CONTRIBUTING.md) for submission guidelines, then submit a pull request modifying the relevant [`README.md`](https://github.com/ossu/computer-science/blob/main/README.md) or `coursepages/<topic>/README.md` file. All additions must align with CS 2013 learning outcomes and link to permanently open-access resources.