Path to a free self-taught education in Computer Science!
This is a visualization of my personal learning goals and progress. My curriculum doesn't exactly match the OSSU curriculum as I've streamlined the advanced topics and omitted some foundational ones I'm already confident in.
An entry-level course taught by David J. Malan, CS50x teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development. Languages include C, Python, SQL, and JavaScript plus CSS and HTML
Topics covered:
computation
imperative programming
basic data structures and algorithms
and more
Courses | Status | Repo | Final Project |
---|---|---|---|
CS50's Introduction to Computer Science | Not Started | n/a | n/a |
This course will introduce you to the world of computer science. Students who have been introduced to programming, either from the courses above or through study elsewhere, should take this course for a flavor of the material to come. If you finish the course wanting more, Computer Science is likely for you!
Topics covered:
computation
imperative programming
basic data structures and algorithms
and more
Courses | Duration | Status | Repo | Final Project |
---|---|---|---|---|
Introduction to Computer Science and Programming using Python (alt) | 9 weeks | In Progress | n/a | n/a |
All coursework under Core CS is required, unless otherwise indicated.
Topics covered:
design for testing
program requirements
common design patterns
unit testing
object-oriented design
static typing
Courses | Duration | Status | Repo | Final Project |
---|---|---|---|---|
Object-Oriented Design | 4 weeks | Not Started | n/a | n/a |
Design Patterns | 4 weeks | Not Started | n/a | n/a |
Software Architecture | 4 weeks | Not Started | n/a | n/a |
Discrete math (Math for CS) is a prerequisite and closely related to the study of algorithms and data structures.
Topics covered:
discrete mathematics
mathematical proofs
basic statistics
O-notation
discrete probability
and more
Courses | Duration | Status | Repo | Final Project |
---|---|---|---|---|
Mathematics for Computer Science (alt) | 13 weeks | n/a | n/a | n/a |
Understanding theory is important, but you will also be expected to create programs. There are a number of tools that are widely used to make that process easier. Learn them now to ease your future work writing programs.
Topics covered:
terminals and shell scripting
vim
command line environments
version control
and more
Courses | Duration | Status | Repo | Final Project |
---|---|---|---|---|
The Missing Semester of Your CS Education | 2 weeks | Not Started | n/a | n/a |
Topics covered:
procedural programming
manual memory management
boolean algebra
gate logic
memory
computer architecture
assembly
machine language
virtual machines
high-level languages
compilers
operating systems
network protocols
and more
Courses | Duration | Status | Repo | Final Project |
---|---|---|---|---|
Build a Modern Computer from First Principles: From Nand to Tetris (alt) | 6 weeks | Not Started | n/a | n/a |
Build a Modern Computer from First Principles: Nand to Tetris Part II | 6 weeks | Not Started | n/a | n/a |
Operating Systems: Three Easy Pieces | 10-12 weeks | Not Started | n/a | n/a |
Computer Networking: a Top-Down Approach | 8 weeks | Not Started | n/a | n/a |
Topics covered:
divide and conquer
sorting and searching
randomized algorithms
graph search
shortest paths
data structures
greedy algorithms
minimum spanning trees
dynamic programming
NP-completeness
and more
Courses | Duration | Status | Repo | Final Project |
---|---|---|---|---|
Algorithmix Toolbox | 4 weeks | Not Started | n/a | n/a |
Data Structures | 4 weeks | Not Started | n/a | n/a |
Algorithms on Graphs | 4 weeks | Not Started | n/a | n/a |
Algorithms on Strings | 4 weeks | Not Started | n/a | n/a |
Advanced Algorithms and Complexity | 4 weeks | Not Started | n/a | n/a |
Topics covered
Confidentiality, Integrity, Availability
Secure Design
Defensive Programming
Threats and Attacks
Network Security
Cryptography
and more
Courses | Duration | Status | Repo | Final Project |
---|---|---|---|---|
Cybersecurity Fundamentals | 8 weeks | Not Started | n/a | n/a |
Principles of Secure Coding | 4 weeks | Not Started | n/a | n/a |
Identifying Security Vulnerabilities | 4 weeks | Not Started | n/a | n/a |
Identifying Security Vulnerabilities in C/C++Programming | 4 weeks | Not Started | n/a | n/a |
Topics covered:
Agile methodology
REST
software specifications
refactoring
relational databases
transaction processing
data modeling
neural networks
supervised learning
unsupervised learning
OpenGL
ray tracing
and more
Courses | Duration | Status | Repo | Final Project |
---|---|---|---|---|
Databases: Modeling and Theory | 2 weeks | Not Started | n/a | n/a |
Databases: Relational Databases and SQL | 2 weeks | Not Started | n/a | n/a |
Databases: Semistructured Data | 2 weeks | Not Started | n/a | n/a |
Machine Learning | 11 weeks | Not Started | n/a | n/a |
Computer Graphics | 6 weeks | Not Started | n/a | n/a |
Software Engineering: Introduction | 6 weeks | Not Started | n/a | n/a |
After completing every required course in Core CS, students should choose a subset of courses from Advanced CS based on interest. Not every course from a subcategory needs to be taken. But students should take every course that is relevant to the field they intend to go into.
Topics covered:
debugging theory and practice
goal-oriented programming
parallel computing
object-oriented analysis and design
UML
large-scale software architecture and design
and more
Courses | Duration | Status | Repo | Final Project |
---|---|---|---|---|
Parallel Programming | 4 weeks | Not Started | n/a | n/a |
Compilers | 9 weeks | Not Started | n/a | n/a |
Software Debugging | 8 weeks | Not Started | n/a | n/a |
Software Testing | 4 weeks | Not Started | n/a | n/a |
(*) book by Blackburn, Bos, Striegnitz (compiled from source, redistributed under CC license)
Topics covered:
digital signaling
combinational logic
CMOS technologies
sequential logic
finite state machines
processor instruction sets
caches
pipelining
virtualization
parallel processing
virtual memory
synchronization primitives
system call interface
and more
Courses | Duration | Status | Repo | Final Project |
---|---|---|---|---|
Computation Structures 1: Digital Circuits alt1 alt2 | 10 weeks | Not Started | n/a | n/a |
Computation Structures 2: Computer Architecture | 10 weeks | Not Started | n/a | n/a |
Computation Structures 3: Computer Organization | 10 weeks | Not Started | n/a | n/a |
Topics covered:
formal languages
Turing machines
computability
event-driven concurrency
automata
distributed shared memory
consensus algorithms
state machine replication
computational geometry theory
propositional logic
relational logic
Herbrand logic
game trees
and more
Courses | Duration | Status | Repo | Final Project |
---|---|---|---|---|
Theory of Computation (alt) | 13 weeks | Not Started | n/a | n/a |
Computational Geometry | 16 weeks | Not Started | n/a | n/a |
Game Theory | 8 weeks | Not Started | n/a | n/a |
Courses | Duration | Status | Repo | Final Project |
---|---|---|---|---|
Web Security Fundamentals | 5 weeks | Not Started | n/a | n/a |
Security Governance & Compliance | 3 weeks | Not Started | n/a | n/a |
Digital Forensics Concepts | 3 weeks | Not Started | n/a | n/a |
Secure Software Development: Requirements, Design, and Reuse | 7 weeks | Not Started | n/a | n/a |
Secure Software Development: Implementation | 7 weeks | Not Started | n/a | n/a |
Secure Software Development: Verification and More Specialized Topics | 7 weeks | Not Started | n/a | n/a |
Courses | Duration | Status | Repo | Final Project |
---|---|---|---|---|
Essence of Linear Algebra | - | Not Started | n/a | n/a |
Linear Algebra | 14 weeks | Not Started | n/a | n/a |
n/a
- Eric Douglas: founder of OSSU
- Josh Hanson: lead technical maintainer
- Waciuma Wanjohi: lead academic maintainer
- Contributors