Orientation · Lesson 1 of 2
How this track works
What low-level design is, how it differs from system design, and how this track runs: principles first, then patterns, then modelling, then full case studies worked the way interviews run them.
Why it matters
System design asks how services, databases and queues fit together. Low-level design asks what happens inside one of those services: which classes exist, what each is responsible for, how they collaborate, and how the code absorbs the next requirement without a rewrite. It is the design work most engineers do every week, and it is a separate interview round at many companies, sometimes called object-oriented design or machine coding.
The idea
Low-level design is the craft of turning requirements into a small set of classes and interfaces with clear responsibilities, sensible boundaries and room to change. A good design is not the one with the most patterns; it is the one where each likely change touches one place.
| System design | Low-level design | |
|---|---|---|
| Unit | Services, data stores, queues | Classes, interfaces, methods |
| Main question | How does it scale, stay available and stay consistent? | How does it stay correct, readable and changeable? |
| Typical artefacts | Architecture diagram, data flow, capacity estimates | Class diagram, sequence diagram, code |
| Failure looks like | Outages, data loss, latency | Bugs, rigid code, every change touching ten files |
| Interview format | Whiteboard a system for 45 minutes | Model a domain, then often write working code |
How the track is organised
Foundations covers object thinking (responsibilities, composition, contracts, value objects), the SOLID principles with the smells they prevent, and the three diagrams worth drawing. Patterns walks the classic catalogue, each with the problem it solves and the trap it sets, plus the anti-patterns that masquerade as design. Modelling covers domain models, objects that stay correct under concurrency, and class APIs that others can use and extend. Case studies works through the interview staples (parking lot, elevator, LRU cache, rate limiter, ticket booking and more) the way an interview runs them.
Relation to the other tracks
The Core CS track's object-oriented programming stage covers the language mechanics this track assumes: classes, inheritance, polymorphism, equality, generics. If those feel shaky, do that stage first. The System Design track covers what happens between services; many case studies here (a rate limiter, a cache) have a distributed version there, and comparing the two is instructive.
How to study it
- 1
Learn each principle through the smell it prevents
Every lesson starts with code that hurts and shows the change that removes the pain. Remember the pain; the principle follows. - 2
Draw before you code
For every example, sketch the classes and arrows first. A design that is hard to draw is hard to build. - 3
Do the drills out loud, against the clock
Drills are timed scenarios like the interview: requirements, then a model, then the change that tests it. - 4
Write the code for at least one case study per module
Low-level design interviews increasingly end with working code. Turning a diagram into compiling classes exposes every vague arrow.
Trade-offs
Principles and patterns are tools for managing change, and every one has a cost in indirection. The track teaches when to apply each and, just as often, when not to: a ten-class design for a problem that needs three is as much a failure as a single god class. Judgement about that balance is what separates senior design from pattern recitation.
In an interview
Low-level design rounds reward a visible process: clarify requirements, name the core entities and their responsibilities, draw the relationships, walk a key flow, then show how the design handles a change the interviewer introduces. The next lesson breaks down exactly what interviewers score.
Check yourself
Which question belongs to a low-level design discussion rather than a system design one?