Approach to Instruction
The course is scheduled Tuesdays and Thursdays, in person, for a 75-minute session. This page explains how that time is used and what to expect around it.
How class time is used
Each session combines direct instruction with case studies and in-class activities: I introduce a fundamental concept, and we immediately apply it to a case study, often one drawn from a real system design interview question. The goal is to get you comfortable applying an idea right after you learn it, not just hearing about it.
The coursebook chapter for that lecture is released around the same time as the lecture, shortly before or after. Attending lecture does not substitute for reading the chapter. Lecture only covers part of the material; the chapter has the rest.
The Coursebook
The lecture notes are the coursebook. They are posted on the course homepage and are free.
Although we have two lectures per week, I will be releasing an additional chapter on most weekends. The weekend chapters cover material that is important to know (and therefore you will be tested on) but is well-suited to self-study; we may reference it in class but will not walk through it lecture-style.
The ideal cadence is to read coursebook chapters within 48 hours of their release, so that you are caught up by the time the next lecture chapter builds on it. If you cannot keep up with this pace, at least try to stay caught up within a week of each chapter’s release.
Beyond the notes, there is no required textbook for this course. Keep in mind, though, that this course moves through a lot of material, and many topics get only brief coverage. Some of those topics are the entire subject of another course, or a whole book. As far as this course goes, you are not expected to go beyond what is in the coursebook. But if you want to go deeper on a topic, or see it from a different angle, there are plenty of resources online and in print. Here are some books I recommend for further reading:
- Ejsmont, A. (2015). Web Scalability for Startup Engineers. McGraw-Hill Education.
- Kleppmann, M., & Riccomini, C. (2026). Designing Data-Intensive Applications (2nd ed.). O’Reilly Media.
- Gandhi, R., Richards, M., & Ford, N. (2024). Head First Software Architecture. O’Reilly Media.
- Richards, M., & Ford, N. (2025). Fundamentals of Software Architecture: An Engineering Approach (2nd ed.). O’Reilly Media.
- Bass, L., Clements, P., & Kazman, R. (2021). Software Architecture in Practice (4th ed.). Addison-Wesley Professional.
- Ford, N., Richards, M., Sadalage, P., & Dehghani, Z. (2021). Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures. O’Reilly Media.
- Vitillo, R. (2022). Understanding Distributed Systems, Second Edition: What Every Developer Should Know About Large Distributed Applications.
How much time this takes
This is a 3-credit course. The federal standard for a credit hour expects roughly two hours of work on your own for every hour of scheduled instruction. Each class session is 75 minutes, so you should expect to spend about 2.5 hours per lecture on top of that, reading the coursebook chapters and organizing what you have learned.