Prerequisites & Foundations
Before we architect skyscrapers, we pour the foundation. This module ensures you have the conceptual toolkit โ networking, databases, concurrency, and environment setup โ required to reason about distributed systems without hand-waving.
1.1 What You Need Before Starting
System design sits at the intersection of computer science, software engineering, and product thinking. You do not need a PhD, but you do need comfort with certain primitives. Think of it like learning to navigate the open ocean: you don't need to build the boat on day one, but you must understand tides, compass headings, and how sails catch wind.
โ Required Comfort Level
- โข Basic programming in any language (Python, Java, JavaScript, Go)
- โข Understanding of variables, functions, loops, and basic data structures
- โข Familiarity with HTTP (you've made or consumed a REST API)
- โข Willingness to learn math-lite concepts (Big-O, percentages, orders of magnitude)
๐ฏ Helpful But Not Mandatory
- โข Prior backend or full-stack development experience
- โข Exposure to cloud platforms (AWS, GCP, Azure)
- โข Database query experience (SQL or NoSQL)
- โข Systems programming or OS course material
Analogy โ The Island Cartographer: A cartographer mapping an archipelago doesn't need to have sailed every route, but they must understand scale, coordinates, and how islands connect via shipping lanes. System designers map software islands (services) connected by network lanes (APIs, queues, databases).
1.2 Networking Fundamentals
Every distributed system is, at its core, computers talking to each other over a network. When you design a chat app, a payment gateway, or a video streaming platform, you are really designing who talks to whom, over what protocol, with what latency budget, and what happens when the message never arrives.
Key Concepts You Must Internalize
IP Address & DNS
An IP address is a street address for a machine. DNS is the phone book that translates api.example.com into 203.0.113.42. In system design, DNS is also a load distribution tool (round-robin, geo-routing).
TCP vs UDP
TCP is reliable, ordered, connection-oriented โ like registered mail with delivery confirmation. Use it for HTTP, database connections, file transfers. UDP is fire-and-forget โ like shouting across a lagoon. Use it for live video, gaming, DNS queries where speed beats guaranteed delivery.
HTTP/HTTPS & REST
HTTP is the lingua franca of web APIs. REST is an architectural style using HTTP verbs (GET, POST, PUT, DELETE) on resources identified by URLs. HTTPS adds TLS encryption โ non-negotiable for production systems handling user data.
Latency, Bandwidth, Throughput
Latency is how long one request takes (ms). Bandwidth is pipe width (Mbps). Throughput is completed requests per second (RPS/QPS). A wide pipe (bandwidth) doesn't help if each message takes forever (latency).
1.3 Database Fundamentals
Data is the treasure buried on every island in your architecture. Choosing where and how to store it determines consistency, scalability, and operational complexity. At a foundation level, understand the two great families of databases and their trade-offs.
The ACID vs BASE Mental Model
ACID (Atomicity, Consistency, Isolation, Durability) guarantees that database transactions behave predictably โ critical for banking. BASE (Basically Available, Soft state, Eventually consistent) accepts temporary inconsistency in exchange for availability and partition tolerance โ common in globally distributed systems. You'll revisit this deeply when we cover CAP theorem in Module 13.
-- Foundational SQL you'll encounter in LLD discussions
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_users_email ON users(email);
-- Indexes are the "table of contents" โ trade write speed for read speed
1.4 Computer Science Building Blocks
These concepts appear in every system design discussion. You don't need to implement a B-tree from scratch, but you must speak fluently about them when justifying design decisions.
| Concept | Layman's Terms | System Design Relevance |
|---|---|---|
| Big-O Notation | How cost grows as input grows | Choosing algorithms, estimating database query cost |
| Hash Tables | Instant lookup by key (O(1) average) | Caching, sharding keys, consistent hashing |
| Trees & Graphs | Hierarchical or connected data structures | File systems, org charts, social networks, DNS |
| Queues & Stacks | FIFO vs LIFO processing order | Message queues, job schedulers, undo buffers |
| Concurrency | Multiple things happening "at once" | Thread pools, race conditions, locks, async I/O |
| Memory Hierarchy | Fast/small (CPU cache) โ slow/big (disk) | Why caching layers exist at every level |
1.5 Environment & Tooling Setup
Hands-on practice reinforces theory. Set up a lightweight environment for sketching architectures, running local services, and experimenting with APIs.
1. Diagramming Tools
- โข Excalidraw (free, hand-drawn aesthetic) โ great for interviews
- โข draw.io / diagrams.net โ professional architecture diagrams
- โข Mermaid โ diagram-as-code in Markdown (used in this course)
2. Local Development Stack
# Recommended baseline tooling
# macOS (Homebrew)
brew install git node python@3.12 docker
# Verify installations
git --version && node --version && python3 --version && docker --version
# Optional: run local Redis + PostgreSQL via Docker
docker run -d --name local-redis -p 6379:6379 redis:7-alpine
docker run -d --name local-postgres -e POSTGRES_PASSWORD=dev \
-p 5432:5432 postgres:16-alpine
3. API Testing
Install curl (built into macOS/Linux) or use Postman / HTTPie to probe REST endpoints. Understanding request/response cycles is essential for API design modules later.
curl -X GET https://api.github.com/users/octocat
curl -X POST https://httpbin.org/post -H "Content-Type: application/json" \
-d '{"message": "hello from system design course"}'
1.6 How to Use This Masterclass
- Read sequentially first. Modules build on each other. Skipping to "Design Twitter" without understanding caching is like sailing without charts.
- Sketch as you read. Redraw every diagram from memory on paper or Excalidraw. Active recall beats passive reading 10:1.
- Complete every quiz. Each module ends with MCQs designed to surface gaps in understanding. Read explanations even for questions you got right.
- Time-box deep dives. Aim for 15โ20 minutes per module section, 5 minutes per quiz. The full course targets 5โ6 hours.
- Revisit case studies. Modules 16โ18 apply everything. Return to them after completing the theory modules.