Well, that's interesting.
SEP 23, 2026 · RESOURCES
CS Fundamentals Learning Resources
CS Fundamentals — Best Learning Resources
A curated resource list for Operating Systems, DBMS, and Computer Networks, with an emphasis on deep understanding, placement preparation, and practical systems knowledge.
How to use this list
Do not try to finish every resource.
For each subject, use:
Primary course/resource
↓
Corresponding textbook/notes
↓
Practice problems
↓
Hands-on implementation (optional but highly valuable)
1. Operating Systems
Recommended learning path
Start with IIT Bombay lectures, then read the matching OSTEP chapters.
You do not need to read all ~600 pages of OSTEP before beginning. IIT Bombay's OS course explicitly maps its lectures to OSTEP chapters and recommends reading those chapters for deeper understanding.
1.1 IIT Bombay — Lectures on Operating Systems ⭐ PRIMARY
Website:
https://www.cse.iitb.ac.in/~mythili/os/
Instructor: Mythili Vutukuru, IIT Bombay
What it contains:
- Video lectures
- IIT Bombay lecture slides
- OSTEP chapter references
- Practice problems with solutions
- Programming labs
- xv6 material
- Linux exercises
- Advanced systems topics
Structure:
- Lectures 1–20: core OS concepts
- Lectures 21–32: deeper OS concepts using xv6
- Lectures 33–35: advanced systems topics
Important topics:
- Processes
- System calls
- Process execution
- CPU scheduling
- IPC
- Virtual memory
- Memory management
- Concurrency
- File systems
Best use: Start here. Watch a lecture first, then read the corresponding OSTEP chapter.
Link: https://www.cse.iitb.ac.in/~mythili/os/
1.2 Operating Systems: Three Easy Pieces (OSTEP) ⭐ PRIMARY BOOK
Website:
https://pages.cs.wisc.edu/~remzi/OSTEP/
Authors: Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, University of Wisconsin–Madison
Why use it:
OSTEP organizes operating systems around three major ideas:
Virtualization
+
Concurrency
+
Persistence
It covers:
- Processes
- Process API
- CPU scheduling
- Address spaces
- Memory management
- Paging
- TLBs
- Threads
- Locks
- Semaphores
- Deadlocks
- I/O devices
- File systems
- Storage
- Security
The book is freely available online and is designed to teach both the conceptual and practical aspects of operating systems.
Best use: Use it alongside the IIT Bombay lectures. Do not treat the 600+ pages as a checklist to finish before moving on.
Link: https://pages.cs.wisc.edu/~remzi/OSTEP/
1.3 OSTEP Homework and Projects
Website:
https://pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html
OSTEP includes simulation-based homework and programming exercises.
These are useful for making concepts such as scheduling, virtual memory, and concurrency concrete.
Best use: After learning a concept, use the corresponding simulation/homework instead of only rereading theory.
1.4 xv6
Reference through IIT Bombay:
https://www.cse.iitb.ac.in/~mythili/os/
IIT Bombay's later OS lectures use xv6, a small teaching operating system, to explore how OS concepts are implemented.
Best use: Do this after understanding the fundamentals.
Suggested progression:
IIT Bombay basic lectures
↓
OSTEP
↓
xv6
↓
Read/trace kernel code
1.5 Nand2Tetris
Official website:
https://www.nand2tetris.org/
Projects:
https://www.nand2tetris.org/course
Official GitHub:
https://github.com/nand2tetris/projects
Nand2Tetris takes a bottom-up approach. You build a computer system from elementary logic gates toward hardware and software, including a basic operating system.
The complete journey contains 12 major projects:
Boolean Logic
Boolean Arithmetic
Memory
Machine Language
Computer Architecture
Assembler
VM
High-Level Language
Compiler
Operating System
Best use: Optional and deeper than what is normally needed for placements. Excellent for understanding how hardware, architecture, compilers, and OS fit together.
1.6 Operating System Concepts — Silberschatz, Galvin, Gagne
Book: Operating System Concepts
This is a traditional comprehensive OS textbook.
Best use: Reference book when you need another explanation or more formal treatment of a topic.
For a placement-focused learner, use OSTEP + IIT Bombay first rather than trying to read this book cover-to-cover.
2. Database Management Systems
Recommended learning path
SQL + relational model
↓
ER model
↓
Relational algebra
↓
Functional dependencies
↓
Normalization
↓
Transactions + ACID
↓
Concurrency control
↓
Indexes / B+ trees
↓
Query processing
↓
Database internals
2.1 CMU 15-445/645 — Intro to Database Systems ⭐ PRIMARY
Official course:
https://15445.courses.cs.cmu.edu/fall2026/
CMU Database Group:
https://db.cs.cmu.edu/courses/
This is a project-oriented course focused on the design and implementation of database management systems.
Topics include:
- Relational, document, and key/value models
- Storage models
- Heap files
- Log-structured storage
- Indexes
- Trees
- Hash tables
- Vector indexes
- Transactions
- ACID
- Concurrency control
- Recovery
- Logging
- Checkpoints
- Joins
- Sorting
- Aggregation
- Query optimization
- Parallel and distributed systems
The course is especially valuable if you want to understand what happens inside a database rather than only learning SQL.
Best use: Start this after you have basic DBMS and SQL knowledge.
2.2 Database System Concepts — Silberschatz, Korth, Sudarshan
Book: Database System Concepts
CMU 15-445 lists the 7th edition as its textbook.
Useful for:
- Relational model
- SQL
- Database design
- Transactions
- Concurrency
- Recovery
- Storage
- Indexing
- Query processing
Best use: Use it as a reference alongside CMU 15-445.
2.3 Stanford — Database Systems: The Complete Book
Official website:
https://infolab.stanford.edu/~ullman/dscb.html
Authors: Hector Garcia-Molina, Jeffrey D. Ullman, Jennifer Widom
The official Stanford page provides:
- Sample chapters
- Slides
- Lecture notes
- Database projects
- Exercises
- Selected exercise solutions
- Exams and homework
- Oracle/database material
Best use: Particularly useful for database theory, relational algebra, SQL, database design, and normalization.
2.4 Stanford — A First Course in Database Systems
Official website:
https://infolab.stanford.edu/~ullman/fcdb.html
A more introductory database resource from Ullman and Widom.
Useful if CMU 15-445 feels too implementation-heavy at first.
2.5 Stanford Database Exercise Solutions
Website:
https://i.stanford.edu/~ullman/dscbsols/sols.html
Contains selected solutions for chapters of Database Systems: The Complete Book.
Best use: Use only after attempting exercises yourself.
3. Computer Networks
Recommended learning path
Internet basics
↓
Application layer
↓
HTTP
↓
DNS
↓
Transport layer
↓
UDP
↓
TCP
↓
Congestion control
↓
IP
↓
Routing
↓
Link layer
↓
Wireless
↓
Network security
3.1 Kurose & Ross — Computer Networking: A Top-Down Approach ⭐ PRIMARY
Official website:
https://gaia.cs.umass.edu/kurose_ross/
The current official site is for the 9th edition.
The book uses a top-down approach, beginning with applications and then moving toward lower network layers.
Major topics:
- Internet architecture
- Application layer
- HTTP
- DNS
- Transport layer
- UDP
- TCP
- Congestion control
- Network layer
- IP
- Routing
- Link layer
- Ethernet
- Wireless
- Network security
Best use: This should be your main networking textbook.
3.2 Kurose & Ross Online Lectures
Online lectures:
https://gaia.cs.umass.edu/kurose_ross/online_lectures.htm
Provides online lecture material organized by chapter.
Chapters include:
- Computer Networks and the Internet
- Application Layer
- Transport Layer
- Network Layer — Data Plane
- Network Layer — Control Plane
- Link Layer
- Wireless and Mobile Networks
- Network Security
Best use: Watch/learn the topic and then read the corresponding textbook chapter.
3.3 Kurose & Ross Knowledge Checks
Website:
https://gaia.cs.umass.edu/kurose_ross/knowledgechecks/
Interactive questions are available by chapter and section.
Best use: Use these after each chapter to check whether you actually understand the material.
3.4 Kurose & Ross Videos
Chapter 1:
https://gaia.cs.umass.edu/kurose_ross/videos/1/
Chapter 2 — Application Layer:
https://gaia.cs.umass.edu/kurose_ross/videos/2/
Chapter 3 — Transport Layer:
https://gaia.cs.umass.edu/kurose_ross/videos/3/
Chapter 4 — Network Layer/Data Plane:
https://gaia.cs.umass.edu/kurose_ross/videos/4/
Chapter 5 — Network Layer/Control Plane:
https://gaia.cs.umass.edu/kurose_ross/videos/5/
Chapter 6 — Link Layer:
https://gaia.cs.umass.edu/kurose_ross/videos/6/
Chapter 7 — Wireless and Mobile Networks:
https://gaia.cs.umass.edu/kurose_ross/videos/7/
3.5 Stanford CS144 — Introduction to Computer Networking
Course:
https://cs144.github.io/
Stanford course information:
https://bulletin.stanford.edu/courses/2075241
CS144 focuses heavily on practical networking.
Topics include:
- Packet switching
- Layering
- Routing
- Reliable delivery
- TCP
- Flow control
- Congestion control
- Ethernet
- Internet addressing
Students implement significant portions of Internet/TCP-IP software in C/C++.
Best use: Do this after learning networking fundamentals from Kurose & Ross.
3.6 Berkeley CS168 — Introduction to the Internet
Course:
https://cs168.io/
Course description:
https://www2.eecs.berkeley.edu/Courses/CS168/index.html
Textbook/notes:
https://textbook.cs168.io/
GitHub source:
https://github.com/berkeley-cs168/textbook
Topics include:
- Layering
- Addressing
- Routing
- Reliable delivery
- Congestion control
- TCP
- UDP
- IP
- DNS
- HTTP
- Ethernet
- Wireless
Best use: Excellent advanced networking material after Kurose & Ross.
4. Computer Systems — The Bridge Between OS, Hardware and Networking
4.1 CS:APP — Computer Systems: A Programmer's Perspective ⭐ BONUS
Official website:
https://csapp.cs.cmu.edu/
Book perspective:
https://csapp.cs.cmu.edu/3e/perspective.html
Authors: Randal E. Bryant and David R. O'Hallaron, Carnegie Mellon University
This is a very useful bridge between:
C
↓
Machine code
↓
CPU
↓
Memory
↓
Processes
↓
Virtual memory
↓
I/O
↓
Networking
↓
Concurrency
The book takes a programmer's perspective rather than teaching systems only from the perspective of someone building the hardware or OS.
Best use: Very useful after/between OS and networking study, especially for someone interested in backend and systems programming.
5. Placement Revision / Quick Reference
GitHub — CS Fundamentals
Repository:
https://github.com/Krishnagangwal/CS-Fundamentals
A curated collection aimed at placement preparation.
Contains folders/resources for:
- Operating Systems
- DBMS and SQL
- Computer Networks
- DSA
- OOP
- System Design
- Software Engineering
- Interview questions
- Short notes
Best use: Revision and interview preparation.
Do not use this as your primary learning source. Use proper courses/books first, then use this type of repository for quick revision.
6. Recommended Stack — Short Version
If you don't want to use everything above, use this:
| Subject | Primary | Secondary | Practice |
|---|---|---|---|
| OS | IIT Bombay OS | OSTEP | OSTEP homework + xv6 |
| DBMS | CMU 15-445 | Database System Concepts | SQL + BusTub |
| CN | Kurose & Ross | Stanford CS144 | Wireshark + networking projects |
| Systems | CS:APP | — | Programming exercises |
7. Recommended Order for Placement + Real Understanding
Operating Systems
IIT Bombay Lectures 1–20
↓
OSTEP corresponding chapters
↓
Practice problems
↓
IIT Bombay xv6 lectures
↓
xv6
Must-know OS topics
- Processes
- System calls
- Process states
- Context switching
- CPU scheduling
- Threads
- Race conditions
- Critical sections
- Mutex/locks
- Semaphores
- Deadlocks
- Virtual memory
- Paging
- Page tables
- TLB
- Page replacement
- File systems
- I/O
DBMS
SQL
↓
ER Model
↓
Relational Algebra
↓
Functional Dependencies
↓
Normalization
↓
Transactions
↓
ACID
↓
Concurrency
↓
Indexes
↓
B+ Trees
↓
Query Processing
↓
CMU 15-445
↓
BusTub
Computer Networks
Kurose & Ross
↓
Knowledge Checks
↓
Wireshark
↓
Stanford CS144
↓
Berkeley CS168
Must-know networking topics
- OSI/TCP-IP models
- HTTP/HTTPS
- DNS
- TCP
- UDP
- TCP handshake
- TCP reliability
- Flow control
- Congestion control
- IP addressing
- Subnetting
- NAT
- ARP
- Routing
- Ethernet
- DHCP
- TLS basics
8. Final Recommendation
Don't try to consume all of these.
For your first pass, use:
OS
IIT Bombay → OSTEP → problems → xv6
DBMS
SQL fundamentals → CMU 15-445 → Database System Concepts → BusTub
CN
Kurose & Ross → Knowledge Checks → Wireshark → CS144
Later
CS:APP → deeper systems understanding
The goal is not:
"I completed 600 pages."
The goal is:
"I can explain the concept, solve a problem about it, and understand what is happening underneath."
Source Notes
All major course/book links above point to official university, author, publisher, or project sources where available. In particular:
- IIT Bombay OS: https://www.cse.iitb.ac.in/~mythili/os/
- OSTEP: https://pages.cs.wisc.edu/~remzi/OSTEP/
- CMU 15-445: https://15445.courses.cs.cmu.edu/fall2026/
- Stanford Database Systems: https://infolab.stanford.edu/~ullman/dscb.html
- Kurose & Ross: https://gaia.cs.umass.edu/kurose_ross/
- Stanford CS144: https://cs144.github.io/
- Berkeley CS168: https://cs168.io/
- CS:APP: https://csapp.cs.cmu.edu/
- Nand2Tetris: https://www.nand2tetris.org/
- CS Fundamentals GitHub: https://github.com/Krishnagangwal/CS-Fundamentals