Learn Computer Science
June 2, 2026 ยท View on GitHub
I'm second-career web developer (writing mostly Ruby) since 2022, meaning I didn't get a computer science degree. So this list is me catching up.
My "Learn Ruby" list slightly overlaps with the material in this list, namely the section "Foundations" and some of the section"Beyond Ruby web development", which include resources that are more engineering-related than what's in this list.
Table of contents
- Networking / the Web
- Hardware systems
- Operating systems
- Linux / command line
- Concurrency / distributed systems
- Database internals
- Compilers
- Math / logic
- Data structures and algorithms
- Software architecture
- Low-level programming
Networking / the Web
- HTTP:
- ๐ฒNoah Gibbs - Rebuilding HTTP.
- http2 explained
- HTTP/3 explained
- ๐ฒHTTP/2 in Action
- ๐ฒBuild Your Own Web Server From Scratch In Node.JS <!-- Related: Ruby HTTP server from the ground up, Building a simple websockets server from scratch in Ruby, Build Your Own Web Server, How to Build a Web App with and without Rails Libraries, a Reddit discussion with helpful comments
- Networking:
- High Performance Browser Networking
- Computer Networking : Principles,Protocols and Practice
- ๐ฒComputer Networking: A Top-Down Approach
- Jesse Storimer - Working with TCP Sockets.
- Beej's Guide to Network Programming
- Experiment with CDNs or reverse proxies (e.g. Nginx, Varnish, HAProxy, Cloudflare) to understand caching, TLS termination, load balancing, and security filtering (rate limiting, WAF, etc.).
- Security:
- ๐ฒGrokking Web Application Security and the free accompanying site Hacksplaining
- PortSwigger - web security exercises
- Browsers:
Hardware systems
- ๐ฒCode: The Hidden Language of Computer Hardware and Software
- NandGame and solutions: 1, 2, 3
- From Nand to Tetris: Part 1, Part 2
- Circuit sandboxes:
- Dive into Systems
- What Every Programmer Should Know About Memory
- ๐ฒDigital Design and Computer Architecture
- ๐ฒComputer Systems: A Programmer's Perspective
Operating systems
Linux / command line
- The Command Line Murders
- Linux Journey
- Sundeep Agarwal - Linux Command Line Computing
- The Linux Command Line
- The Art of Command Line
- Sundeep Agarwal - "Linux CLI and shell scripting" list
- Julia Evans - Your Linux Toolbox
- ๐ฒEfficient Linux at the Command Line
- ๐ฒHow Linux Works
- ๐ฒJulia Evans - Bite Size zine pack
- ๐ฒWicked Cool Shell Scripts
- ๐ฒSystems Performance
Concurrency / distributed systems
- ๐ฒFoundations of Scalable Systems
- ๐ฒDesigning Data-Intensive Applications, 2nd ed.
- Is Parallel Programming Hard, And, If So, What Can You Do About It?
- Distributed Systems
- On Transactional Concurrency Control
- Gossip Glomers (distibuted systems challenges)
Database internals
Database readings
- How does a relational database work?
- Architecture of a Database System
- ๐ฒDatabase Internals
- Transaction Processing
- Introduction to PostgreSQL Indexes
- The Internals of PostgreSQL
- Readings in Database Systems
- PGTune
Database exercises
- ๐ฒBuild a Database Server
- ๐ฒBuild Your Own Database From Scratch in Go
- Build Your Own Redis with C/C++
- Build Redis from scratch
Compilers
- Destroy All Software - A Compiler from Scratch
- Writing a compiler in Ruby, bottom up and related resources at the bottom of that page
- Let's make a Teeny Tiny compiler
- Stanford: SOE-YCSCS1 Compilers
- ๐ฒCrafting Interpreters
- ๐ฒBuild Your Own Compiler from Scratch
Math / logic
- ๐ฒLogic for Programmers
- ๐ฒMath for Programming
- ๐ฒConcrete Mathematics: A Foundation for Computer Science
- ๐ฒCoding The Matrix: Linear Algebra Through Computer Science Applications
Data structures and algorithms
Textbooks / courses
- ๐ฒData Structures and Algorithms in Java along with VisuAlgo
- Maybe this instead: ๐ฒA Common-Sense Guide to Data Structures and Algorithms
- Or: ๐ฒAlgorithms Unlocked
- Codeintuition
- ๐ฒPractical Analysis of Algorithms
- ๐ฒThe Algorithm Design Manual plus lecture videos
- ๐ฒAlgorithm Design
- Maybe this instead: ๐ฒAlgorithms
- Or: ๐ฒIntroduction to Algorithms
Interview guides
- Tech Interview Handbook
- ๐ฒBeyond Cracking the Coding Interview (preview csolutions for free at interviewing.io)
- ๐ฒElements of Programming Interviews
LeetCode
- Ruby solutions: 1, 2, 3, 4, 5
- Algorithms Ruby gem that is included in the LeetCode environment.
- NeetCode 250
- Grind75
- 14 Patterns to Ace Any Coding Interview Question
- 20 Essential Coding Patterns to Ace Your Next Coding Interview
- Coding Interview Patterns
- AlgoMonster - Patterns
- LeetCode Patterns
- ๐ฒGrokking the Coding Interview: Patterns for Coding Questions
- An interview algorithms tier list
- Another algorithms tier list
- Other resource lists: 1, 2, 3
Software architecture
Low-level programming
Zig
- Ziglings
- Zen of Zig
- Learning Zig
- Introduction to Zig: a project-based book
- Zig Cookbook
- ๐ฒSystems Programming with Zig
- Working with Strings in Zig
- Karl Seguin's blog
Implement a Forth
- Starting FORTH or Easy Forth
- Thinking Forth
- Implementing a Forth
- Minimal FORTH interpreters: 1, 2
- Fitting a Forth in 512 bytes
- Design Decisions in the Forth Kernel
- Threaded Interpretive Languages: Their Design and Implementation
- Factor if I want to explore a "high-level FORTH"
C
- ๐ฒC Programming: A Modern Approach
- CS50 problem sets (1-5) and solutions: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
- Tutorial on pointers and arrays in C
- Exercism - C
- Advent of Code: CLI/runner written in C; I can't find any repos with solutions for all years, but probably there are repos with solutions for a specific year.
- Look into other "better C" languages besides Zig: Odin, Beef, V, Jai, C3, MiniLang, and others (minus the C++ replacements like Rust, which are too complex for my purposes)
C game programming
- Handmade Hero videos plus Handmade Penguin to follow along in Linux
- Handmade Quake videos and source code
- Kohi Game Engine videos
- Make a game, taking inspiration from high_impact, raylib, Box2D 3.x (or see box2d-raylib)
- Or make a text-based game: see How to program a text adventure in C and Knuth's C port of Colossal Cave Adventure (which, incidentally, is an example of literate programming, now reincarnated in Entangled)
- Handmade Network