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.
- Networking / the Web
- Hardware systems
- Operating systems
- Concurrency
- Database internals
- Compilers
- Math / logic
- Data structures and algorithms
- Low-level programming
- HTTP:
- 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.).
- π²Grokking Web Application Security and the free accompanying site Hacksplaining
- PortSwigger - web security exercises
- π²Code: The Hidden Language of Computer Hardware and Software
- NandGame and solutions: 1, 2, 3
- From Nand to Tetris: Part 1, Part 2
- Practice building a computer in CircuitVerse, Logisim Evolution, or π²Turing Complete
- Dive into Systems
- π²Digital Design and Computer Architecture
- π²Computer Systems: A Programmer's Perspective
- Is Parallel Programming Hard, And, If So, What Can You Do About It?
- Distributed Systems
- Gossip Glomers (distibuted systems challenges)
- How does a relational database work?
- Architecture of a Database System
- How Does a Database Work?
- π²Database Internals
- Transaction Processing
- The Internals of PostgreSQL
- Readings in Database Systems
- PGTune
- π²Build a Database Server
- π²Build Your Own Database From Scratch in Go
- Build Your Own Redis with C/C++
- Build Redis from scratch
- Destroy All Software - A Compiler from Scratch
- Writing a compiler in Ruby, bottom up and related resources at the bottom of that page
- π²Crafting Interpreters
- π²Build Your Own Compiler from Scratch
- π²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 in Java along with VisuAlgo
- Maybe this instead: π²A Common-Sense Guide to Data Structures and Algorithms
- Or: π²Algorithms Unlocked
- π²Practical Analysis of Algorithms
- π²The Algorithm Design Manual plus lecture videos
- π²Algorithm Design
- Maybe this instead: π²Algorithms
- Or: π²Introduction to Algorithms
- Tech Interview Handbook
- π²Cracking the Coding Interview
- π²Beyond Cracking the Coding Interview (solutions for free at interviewing.io)
- π²Elements of Programming Interviews
- 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
- Introduction to Zig: a project-based book
- Zig - "Learn" page listing other resources
- π²Systems Programming with Zig
- Zig + raylib: raylib-zig (based on RayZig?), examples, a template with raygui
- π²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)
- 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