# Prerequisites for the Algorithms Courses in the Open Source CS Degree

> Discover the exact prerequisites for the Algorithms courses in the Open Source CS degree. Learn about math and programming requirements for Algorithms Part I and II.

- Repository: [Forrest Knight/open-source-cs](https://github.com/ForrestKnight/open-source-cs)
- Tags: architecture
- Published: 2026-05-01

---

**The Open Source CS degree requires Calculus 1A (all) and basic programming for the introductory theory course, followed by sequential completion of *Algorithms, Part I* and *Algorithms, Part II* from Princeton University.**

The `ForrestKnight/open-source-cs` repository curates a comprehensive free curriculum equivalent to a four-year computer science degree. Within the **Theory** section of the [`README.md`](https://github.com/ForrestKnight/open-source-cs/blob/main/README.md), three sequential Princeton algorithm courses form the core theoretical foundation. Understanding the exact prerequisite chain ensures you build the mathematical and programmatic background necessary before attempting these rigorous courses.

## Course Prerequisites Overview

According to the curriculum table in [`README.md`](https://github.com/ForrestKnight/open-source-cs/blob/main/README.md) (lines 50-52), the three algorithm courses have strictly defined dependencies:

- **Computer Science: Algorithms, Theory, and Machines** requires *Calculus 1A (all)* and *basic programming*
- **Algorithms, Part I** requires completion of *Computer Science: Algorithms, Theory, and Machines*
- **Algorithms, Part II** requires completion of *Algorithms, Part I*

Each course is offered by Princeton University and builds directly upon its predecessor, creating a linear learning path with no branching alternatives.

## Detailed Prerequisite Breakdown

### Computer Science: Algorithms, Theory, and Machines

This introductory theory course demands **Calculus 1A (all)** plus **basic programming** proficiency. In the context of this curriculum, "Calculus 1A (all)" refers to the first three calculus modules listed under the Math section: Differentiation, Integration, and Coordinate Systems & Infinite Series. The "basic programming" requirement assumes comfort with variables, control flow, and simple data structures, typically satisfied by completing an introductory programming course like Python for Everybody or an equivalent.

### Algorithms, Part I

Before enrolling in *Algorithms, Part I*, you must complete *Computer Science: Algorithms, Theory, and Machines*. This prerequisite ensures you possess foundational knowledge of computational theory, machine architecture basics, and introductory algorithmic concepts taught in the prerequisite course. The dependency is explicitly listed in the markdown table at line 51 of [`README.md`](https://github.com/ForrestKnight/open-source-cs/blob/main/README.md).

### Algorithms, Part II

The final course in the sequence, *Algorithms, Part II*, requires successful completion of *Algorithms, Part I*. This second part delves deeper into graph algorithms, string processing, and advanced algorithmic analysis, building directly upon the data structures and sorting algorithms covered in Part I. Line 52 of [`README.md`](https://github.com/ForrestKnight/open-source-cs/blob/main/README.md) confirms this dependency.

## The Prerequisite Progression Chain

The dependencies form a strict linear progression with no shortcuts:

```

Calculus 1A (all) + Basic Programming 
    ↓
Computer Science: Algorithms, Theory, and Machines
    ↓
Algorithms, Part I
    ↓
Algorithms, Part II

```

Attempting to skip steps in this chain violates the curriculum design. For example, you cannot jump from the calculus requirement directly into *Algorithms, Part I* without completing the theory course, nor can you take Part II without finishing Part I.

## How to Verify Prerequisites Programmatically

You can extract the exact prerequisite requirements directly from the repository's [`README.md`](https://github.com/ForrestKnight/open-source-cs/blob/main/README.md) using Python. This approach is useful for building custom study planners or validation scripts.

```python
import re
import requests

# Fetch the raw README markdown from the repository

url = "https://raw.githubusercontent.com/ForrestKnight/open-source-cs/master/README.md"
md = requests.get(url).text

# Regex pattern to capture algorithm course rows with prerequisites

pattern = r"\| \[([^\]]+)\]\(.*\) \| ([^\|]+) \| ([^\|]+) \|"
matches = re.findall(pattern, md)

# Filter for theory section algorithm courses (lines 48-53)

theory_courses = [m for m in matches if "Algorithms" in m[0]]

# Output formatted prerequisite list

for title, institution, prerequisite in theory_courses:
    print(f"{title.strip()} ({institution.strip()}): {prerequisite.strip()}")

```

Running this script parses the markdown table structure and outputs each algorithm course with its corresponding prerequisite, matching the official curriculum documentation. The regex specifically targets the table format used in lines 50-52 of [`README.md`](https://github.com/ForrestKnight/open-source-cs/blob/main/README.md) where the algorithm courses are defined.

## Summary

- **Calculus 1A (all)** and **basic programming** are mandatory before starting the algorithm theory sequence.
- Three Princeton courses form a strict linear chain: *Theory and Machines* → *Part I* → *Part II*.
- Each prerequisite is explicitly documented in the [`README.md`](https://github.com/ForrestKnight/open-source-cs/blob/main/README.md) file at the repository root.
- You can programmatically verify requirements by parsing the markdown tables using standard regex patterns.

## Frequently Asked Questions

### Can I take Algorithms, Part I without completing the Calculus 1A requirements?

No. While *Algorithms, Part I* lists only *Computer Science: Algorithms, Theory, and Machines* as its direct prerequisite, that theory course itself requires Calculus 1A (all) and basic programming. The curriculum assumes you have completed the mathematical foundations before attempting any algorithm analysis.

### What does "Calculus 1A (all)" specifically include?

According to the Math section of the curriculum, Calculus 1A (all) encompasses three distinct modules: Differentiation, Integration, and Coordinate Systems & Infinite Series. You must complete all three components, not just the first module, before attempting the algorithms theory course.

### Is there any way to test out of the prerequisites?

The repository documentation in [`README.md`](https://github.com/ForrestKnight/open-source-cs/blob/main/README.md) does not provide alternative pathways or testing mechanisms for bypassing prerequisites. The curriculum is designed as a self-directed learning path, so while you could theoretically attempt courses out of order, the content assumes knowledge from the specified prerequisites, particularly the mathematical maturity gained from Calculus 1A.

### Where are the prerequisite requirements officially documented?

The requirements are explicitly defined in the markdown tables within [`README.md`](https://github.com/ForrestKnight/open-source-cs/blob/main/README.md) at lines 50-52. Each course row contains a dedicated "Prerequisite" column listing the exact dependency. No additional documentation files contain prerequisite information; the single source of truth is the central README table.