Core Systems
This section explores how computers work at a fundamental level, from basic logic gates to operating systems and network protocols. You’ll gain a deep understanding of the systems that run our software.
Topics Covered
- Procedural programming
- Manual memory management
- Boolean algebra
- Gate logic
- Memory
- Computer architecture
- Assembly
- Machine language
- Virtual machines
- High-level languages
- Compilers
- Operating systems
- Network protocols
- And more
Course Sequence
| Course | Duration | Effort | Prerequisites |
|---|---|---|---|
| Build a Modern Computer from First Principles: From Nand to Tetris | 6 weeks | 7-13 hours/week | C-like programming language |
| Build a Modern Computer from First Principles: Nand to Tetris Part II | 6 weeks | 12-18 hours/week | Nand to Tetris Part I |
| Operating Systems: Three Easy Pieces | 10-12 weeks | 6-10 hours/week | Nand to Tetris Part II |
| Computer Networking: a Top-Down Approach | 8 weeks | 4-12 hours/week | Algebra, probability, basic CS |
Why These Courses?
This sequence provides a comprehensive bottom-up understanding of computer systems:
- Nand to Tetris teaches you how to build a computer from fundamental logic gates
- Nand to Tetris Part II continues by implementing a compiler and an operating system
- Operating Systems dives deeper into OS concepts, including virtualization, concurrency, and persistence
- Computer Networking explains how computers communicate through network protocols
Learning Outcomes
After completing the Core Systems sequence, you will understand:
- How computers are built from the transistor level up
- How hardware and software interact
- How operating systems manage resources and provide abstractions
- How computer networks enable communication between systems
- How compilers translate high-level code to machine code
Importance for Computer Science
Systems knowledge is critical because:
- It removes the mystery of how computers work
- It helps you write more efficient code
- It enables you to debug complex problems
- It provides insight into performance issues
- It forms the foundation for many specialized fields (embedded systems, cybersecurity, etc.)
Whether you plan to work at a high level of abstraction or close to the hardware, understanding the full stack of computing will make you a more effective computer scientist.