⚙️ Systems Programming Track¶
Operating systems, compilers, databases, networking the infrastructure that everything else runs on.
🎯 Target Roles¶
- Systems Engineer
- Kernel Developer
- Compiler Engineer
- Database Engineer
- Network Engineer (low-level)
- Performance Engineer
- Infrastructure Engineer (bare-metal)
📚 Core Courses¶
Operating Systems¶
| Course | Platform | Institution | Level |
|---|---|---|---|
| Operating Systems (6.828/6.S081) | MIT OCW | MIT | Advanced |
| Operating Systems | NPTEL | IIT Madras | Intermediate |
| Introduction to Operating Systems | Udacity (free) | Georgia Tech | Intermediate |
| Operating Systems: Three Easy Pieces | Free Book | UW-Madison | Intermediate |
| Advanced Operating Systems | Udacity (free) | Georgia Tech | Advanced |
| Linux Kernel Programming | NPTEL | IIT Bombay | Advanced |
Compilers & Language Implementation¶
| Course | Platform | Institution | Level |
|---|---|---|---|
| Compilers (CS143) | edX (audit) | Stanford | Intermediate |
| Compiler Design | NPTEL | IIT Kanpur | Intermediate |
| Crafting Interpreters | Free Book | Bob Nystrom | Intermediate |
| Build Your Own Lisp | Free Book | Daniel Holden | Beginner |
| LLVM Tutorial | Official Docs | LLVM Project | Advanced |
| Programming Languages (CS173) | YouTube | Brown University | Intermediate |
Database Internals¶
| Course | Platform | Institution | Level |
|---|---|---|---|
| Database Systems (15-445) | YouTube/CMU | CMU (Andy Pavlo) | Intermediate |
| Advanced Database Systems (15-721) | YouTube/CMU | CMU (Andy Pavlo) | Advanced |
| Database Management Systems | NPTEL | IIT Madras | Intermediate |
| Architecture of a Database System | Free Paper | UC Berkeley | Advanced |
Computer Networking (Low-Level)¶
| Course | Platform | Institution | Level |
|---|---|---|---|
| Computer Networks | NPTEL | IIT Kharagpur | Intermediate |
| Computer Networking (Stanford) | YouTube | Stanford | Intermediate |
| Beej's Guide to Network Programming | Free Book | Brian Hall | Intermediate |
| High Performance Browser Networking | Free Book | Ilya Grigorik | Advanced |
| TCP/IP Illustrated (lectures) | YouTube | Various | Advanced |
Concurrency & Parallel Programming¶
| Course | Platform | Institution | Level |
|---|---|---|---|
| Parallel Computer Architecture | NPTEL | IIT Kanpur | Advanced |
| Concurrent Programming in Java | Coursera (audit) | Rice University | Intermediate |
| Performance Engineering (6.172) | MIT OCW | MIT | Advanced |
| The Art of Multiprocessor Programming | YouTube | Various | Advanced |
Distributed Systems¶
| Course | Platform | Institution | Level |
|---|---|---|---|
| Distributed Systems (6.824) | MIT OCW | MIT | Advanced |
| Distributed Computing | NPTEL | IIT Patna | Intermediate |
| Designing Data-Intensive Applications (talks) | YouTube | Martin Kleppmann | Advanced |
🛠️ Practical Projects¶
| Project | What You Learn | Resource |
|---|---|---|
| Write a shell | Process management, syscalls | Build Your Own Shell |
| Write a malloc | Memory management | Writing a Memory Allocator |
| Write a TCP stack | Networking from scratch | Let's Code a TCP/IP Stack |
| Write a database | Storage engines, B-trees | Build Your Own Database |
| Write a compiler | Parsing, codegen, optimization | Crafting Interpreters |
| Write an OS | Everything | Writing an OS in Rust |
| Write a container | Namespaces, cgroups | Containers from Scratch |
📖 Essential Reading (Free)¶
| Book | Topic | Link |
|---|---|---|
| OSTEP | Operating Systems | ostep.org |
| Dive into Systems | Computer Systems | diveintosystems.org |
| Crafting Interpreters | Compilers | craftinginterpreters.com |
| Beej's Network Guide | Networking | beej.us/guide/bgnet |
| The Architecture of Open Source Applications | System design | aosabook.org |
| Database Internals (talks) | Storage engines | CMU DB YouTube |
📖 Learning Path¶
Beginner: C programming → Data structures → Computer architecture
Intermediate: OS concepts → Networking → Concurrency → Build a shell
Advanced: Kernel hacking → Compiler construction → Database internals
Expert: Distributed systems → Formal verification → Performance engineering
"Systems programming is where you learn that abstractions leak, hardware lies, and the only truth is the assembly output."