Skip to content
All resources

CS Fundamentals

How computers, systems and algorithms actually work.

The theory behind everything else. Hardware, operating systems, networks and algorithms, from free university-grade material.

91 resourcesSuggest a resource

Learning path

Work through these in order. Each step builds on the last.

Everything in CS Fundamentals

Crash Course Computer Science

Forty short, friendly videos covering how computers work, from transistors to the internet.

youtube.com

Video

Nand2Tetris

Build a computer from NAND gates up to an OS and a game, one layer at a time.

nand2tetris.org

Course

CS50x

Harvard's intro to computer science and programming.

cs50.harvard.edu

Course

Operating Systems: Three Easy Pieces

A free, readable textbook on virtualization, concurrency and persistence.

pages.cs.wisc.edu

Book

Beej's Guide to Network Programming

Sockets and networking explained with humour and working C code.

beej.us

Book

MIT 6.006 Introduction to Algorithms

Full MIT lectures, notes and problem sets on core algorithms and data structures.

ocw.mit.edu

Course

Teach Yourself Computer Science

An opinionated list of the best book and lecture series for each CS subject.

teachyourselfcs.com

Guide

OSSU Computer Science

A complete, free CS degree path built from online courses.

github.com

Repo

CMU 15-445 Database Systems

How databases work inside, from storage to query execution, with recorded lectures.

15445.courses.cs.cmu.edu

Course

Designing Data-Intensive Applications

The go-to book on how real systems store, replicate and process data.

dataintensive.net

Book

The Missing Semester of Your CS Education

MIT's short course on the shell, Git, editors, debugging and other tools classes never teach.

missing.csail.mit.edu

Course

MIT 6.042J Mathematics for Computer Science

Proofs, graphs, counting and probability for CS, with full lectures and the free textbook.

ocw.mit.edu

Course

Mathematics for Computer Science (Book)

The free MIT textbook on discrete maths, proofs and probability used across many CS programs.

courses.csail.mit.edu

Book

MIT 6.046J Design and Analysis of Algorithms

MIT's follow-up to 6.006 covering advanced algorithm design, with full video lectures.

ocw.mit.edu

Course

MIT 6.004 Computation Structures

Digital logic, processors and memory hierarchies, building up to a working computer.

ocw.mit.edu

Course

MIT 6.824 Distributed Systems

The classic distributed systems course with Raft and key-value store labs in Go.

pdos.csail.mit.edu

Course

MIT 6.828 / 6.1810 Operating System Engineering

Learn OS internals by hacking on xv6, a small Unix-like teaching kernel.

pdos.csail.mit.edu

Course

xv6 Book

A short, readable walkthrough of a real Unix-like kernel and its source code.

pdos.csail.mit.edu

Book

MIT 6.045 Automata, Computability and Complexity

Theory of computation from finite automata to Turing machines and P vs NP.

ocw.mit.edu

Course

MIT 18.404J Theory of Computation

Michael Sipser's own lectures on automata, computability and complexity.

ocw.mit.edu

Course

MIT 6.001 Structure and Interpretation of Computer Programs

The legendary MIT course on abstraction and program design using Scheme.

ocw.mit.edu

Course

Structure and Interpretation of Computer Programs

The classic SICP textbook, free online, on how to think about programs.

mitp-content-server.mit.edu

Book

CS 61A Structure and Interpretation of Computer Programs

Berkeley's intro to programming and abstraction in Python, with labs and projects.

cs61a.org

Course

Composing Programs

The free textbook behind CS 61A, a Python take on SICP.

composingprograms.com

Book

CS 61B Data Structures

Berkeley's data structures course in Java, with lectures, labs and projects.

sp24.datastructur.es

Course

CS 61C Great Ideas in Computer Architecture

Berkeley's machine structures course covering C, RISC-V, caches and parallelism.

cs61c.org

Course

CMU 15-213 Introduction to Computer Systems

CMU's famous systems course with the bomb, attack and malloc labs.

cs.cmu.edu

Course

Computer Systems: A Programmer's Perspective

The CS:APP textbook on how programs run on real hardware, used in 15-213.

csapp.cs.cmu.edu

Book

CMU 15-721 Advanced Database Systems

Andy Pavlo's graduate course on modern analytical database internals.

15721.courses.cs.cmu.edu

Course

CMU Database Group YouTube

Recorded database lectures and talks from Andy Pavlo's group at CMU.

youtube.com

Video

Stanford CS144 Introduction to Computer Networking

Build a TCP implementation from scratch while learning how the internet works.

cs144.github.io

Course

Stanford CS143 Compilers

Lexing, parsing, semantic analysis and code generation, building a compiler for a small language.

web.stanford.edu

Course

Stanford CS106B Programming Abstractions

Stanford's second programming course on recursion, data structures and abstractions in C++.

web.stanford.edu

Course

Crafting Interpreters

Build two complete interpreters for a scripting language, free online and beautifully written.

craftinginterpreters.com

Book

Writing a C Compiler

A hands-on book that walks you through building a real C compiler step by step.

nostarch.com

Book

Build Your Own Lisp

Learn C by building your own small programming language.

buildyourownlisp.com

Book

Computer Networking: A Top-Down Approach

The Kurose and Ross networking textbook site with free lectures, slides and Wireshark labs.

gaia.cs.umass.edu

Book

Computer Networks: A Systems Approach

A free, open-source networking textbook by Peterson and Davie.

book.systemsapproach.org

Book

High Performance Browser Networking

Free book on TCP, TLS, HTTP/2, WebSockets and what makes the web fast.

hpbn.co

Book

How DNS Works

A short illustrated comic that explains DNS lookups from start to finish.

howdns.works

Article

Julia Evans' Zines

Friendly illustrated zines on networking, Linux, Git and debugging.

wizardzines.com

Guide

Ben Eater

Build an 8-bit computer on breadboards and learn exactly how CPUs work.

youtube.com

Video

Code: The Hidden Language of Computer Hardware and Software

Charles Petzold's classic, approachable book on how computers work from first principles.

charlespetzold.com

Book

Computer Organization and Design RISC-V Edition

Patterson and Hennessy's standard textbook on processor design and the hardware/software interface.

shop.elsevier.com

Book

Onur Mutlu Lectures

Full computer architecture courses from ETH Zurich and CMU, recorded and free.

youtube.com

Video

CPUlator

A browser-based simulator for ARM, MIPS and RISC-V assembly programs.

cpulator.01xz.net

Tool

Compiler Explorer

Type code and instantly see the assembly that dozens of compilers produce.

godbolt.org

Tool

Operating Systems by Neso Academy

A popular, beginner-friendly video series covering a full university OS syllabus.

youtube.com

Video

Gate Smashers

Hindi video lectures on OS, DBMS, networks and theory of computation for GATE and exams.

youtube.com

Video

NPTEL Computer Science

Free IIT and IISc video courses on every core CS subject, with optional certification.

nptel.ac.in

Course

OSDev Wiki

The community wiki for writing your own operating system from bootloader up.

wiki.osdev.org

Docs

Writing an OS in Rust

A blog series that builds a small x86 kernel in Rust, step by step.

os.phil-opp.com

Guide

The Little Book of Semaphores

A free book of concurrency puzzles that teaches synchronization patterns.

greenteapress.com

Book

Linux Kernel Labs

University lectures and hands-on labs for learning Linux kernel development.

linux-kernel-labs.github.io

Course

Database System Concepts

The Silberschatz textbook site with slides and exercises on relational databases.

db-book.com

Book

Use The Index, Luke

A free guide to SQL indexing and query performance for developers.

use-the-index-luke.com

Guide

Architecture of a Database System

A classic paper giving a tour of how relational databases are built inside.

dsf.berkeley.edu

Article

Build Your Own Redis

Build a Redis-like server in C++ and learn network programming and data structures.

build-your-own.org

Book

Let's Build a Simple Database

Write a SQLite clone in C to learn how databases store and query data.

cstack.github.io

Guide

Build Your Own X

A huge list of tutorials for rebuilding Git, Docker, databases, OSes and more from scratch.

github.com

Repo

CodeCrafters

Guided challenges to build Redis, Git, SQLite and an HTTP server yourself.

codecrafters.io

Practice

The System Design Primer

The most popular open guide to designing large-scale systems, with exercises.

github.com

Repo

ByteByteGo

Short animated videos explaining system design concepts and real architectures.

youtube.com

Video

High Scalability

Long-running blog of real-world architecture write-ups from big companies.

highscalability.com

Article

Awesome Scalability

A curated reading list of articles on scalability, reliability and performance.

github.com

Repo

Hello Interview System Design

A free, practical guide to system design interviews with core concepts and worked examples.

hellointerview.com

Guide

Distributed Systems Lecture Series (Martin Kleppmann)

Cambridge lectures on consensus, replication, time and consistency by the DDIA author.

youtube.com

Video

Distributed Systems for Fun and Profit

A short free book covering the key ideas behind distributed systems.

book.mixu.net

Book

The Raft Consensus Algorithm

The Raft paper, visualization and implementations, the easiest way into consensus.

raft.github.io

Article

Papers We Love

A community repo of classic and influential computer science papers.

github.com

Repo

Introduction to the Theory of Computation (Sipser)

The standard textbook on automata, computability and complexity.

math.mit.edu

Book

Discrete Mathematics by Kimberly Brehm

A clear YouTube course on logic, sets, counting, relations and graphs.

youtube.com

Video

Discrete Mathematics: An Open Introduction

A free, open textbook on counting, logic, graph theory and proofs.

discrete.openmathbooks.org

Book

Book of Proof

A free introduction to writing mathematical proofs, ideal before theory courses.

richardhammack.github.io

Book

Open Data Structures

A free textbook on data structures with analysis and code in Java, C++ and pseudocode.

opendatastructures.org

Book

Algorithms by Jeff Erickson

A free, rigorous algorithms textbook from UIUC with lecture notes.

jeffe.cs.illinois.edu

Book

What Every Programmer Should Know About Memory

Ulrich Drepper's deep dive into caches, RAM and how memory affects performance.

akkadia.org

Article

Latency Numbers Every Programmer Should Know

An interactive chart of how long common operations take, from L1 cache to cross-continent.

colin-scott.github.io

Cheatsheet

Computer Science Distilled

A short, illustrated book on core CS ideas for beginners.

code.energy

Book

Developer Roadmaps Computer Science

A visual roadmap of CS topics with links to learn each one.

roadmap.sh

Roadmap

Coding Interview University

A popular multi-month CS study plan covering everything from hardware to algorithms.

github.com

Repo

Computer Science Video Courses

A huge index of university CS lecture videos available online.

github.com

Repo

Free Programming Books

The largest list of free programming and CS books in many languages.

github.com

Repo

Low Level

Videos on C, assembly, memory safety and how software meets hardware.

youtube.com

Video

Core Dumped

Animated videos explaining OS concepts like processes, scheduling and memory.

youtube.com

Video

Computerphile

Short videos with researchers explaining CS ideas from compilers to cryptography.

youtube.com

Video

Spanning Tree

Beautifully animated short explainers on algorithms and core CS concepts.

youtube.com

Video

Branch Education

Detailed 3D animations of how CPUs, GPUs, SSDs and the internet physically work.

youtube.com

Video

Hussein Nasser

In-depth videos on backend engineering, databases, protocols and networking.

youtube.com

Video

The Architecture of Open Source Applications

Free books where authors explain the design of famous open source systems.

aosabook.org

Book

Linux From Scratch

Build a complete Linux system yourself from source to see how every piece fits.

linuxfromscratch.org

Guide