COMP 4299 · Winter 2026
System Design
Notes & Documentation
Collaborative learning notes for system design concepts, built throughout the Winter 2026 semester. Topics are organized into chapters following the Neetcode curriculum.
7Chapters
17Notes
Chapters
01
Fundamentals
Core building blocks: scaling, storage, availability, reliability, and latency.
02
Networking
OSI Layers, TCP & UDP, DNS, sockets, and API usage in system design and maintenance
03
APIs
Designing APIs: REST, GraphQL, gRPC, versioning, and documentation.
- API ParadigmsREST, GraphQL, gRPC: paradigms, pros & cons, and use casesrestgraphqlgrpc
- API Design PrinciplesCRUD, backwards compatibility, versioning, pagination, idempotency, and rate limiting.crudversioningpagination
- Serverless FunctionsStatelessness, cold starts, provider differences, and when to use serverless.serverlessvercelaws-lambda
04
Proxies
Forward proxies, reverse proxies, load balancers, and how they fit into scalable system design.
05
Caching
Caching types, use cases, when and where to implement
06
Storage
Relational databases, ACID properties, and how data is stored and queried at scale.
- Relational DatabasesB+ trees, schemas, foreign keys, joins, and ACID: atomicity, consistency, isolation, durability.sqlrdbmsacid
- NoSQL DatabasesKey-value, document, wide-column, and graph databases. BASE properties and eventual consistency.nosqlmongodbredis
- Replication and ShardingScaling reads and writes across multiple nodes with replication and sharding.replicationshardingscaling
- CAP TheoremConsistency, availability, and partition tolerance — and the PACELC extension.cap-theorempacelcconsistency
- Object StorageBLOBs, flat namespaces, unique keys, and when to use S3-style storage.object-storages3blob
07
Big Data
Message queues, pub/sub patterns, and event-driven architectures for large-scale systems.