Schedule

1
Intro + Contributing to Open Source
Week of September 8
Introduction to course structure, the fundamentals of large software systems, and how to effectively contribute to large software systems.
2
Analyzing and Understanding Large Codebases
Week of September 15
Understanding the architecture of large codebases and recognizing real-life applications of design patterns in a large codebase.
3
Non-functional requirements pt 1
Week of September 22
What happens when more users show up than a single server can handle? How do we scale a system to meet demand without wasting money?
4
Non-functional requirements pt 2
Week of September 29
Can we horizontally scale a database? What do we give up when copies of our data disagree, how do we keep a system available and fast, and how do we ship a new version without breaking the people already using the old one?
5
Non-functional requirements pt 3
Week of October 6
TBA
6
Forming an Architecture
Week of October 13
The lecture covers forming an architecture for large software systems, discussing application architecture patterns, the transition from monoliths, and service-oriented architecture. It highlights maintainability, testability, layered architecture styles like MVC, and the microkernel architecture style. The lecture also examines trade-offs in distributed architectures, including latency and network reliability.
7
Analytical Processing and Distributed Architectures
Week of October 20
This lecture covers various distributed architectures, including pipeline, broker, and mediator topologies, and their application in report generation and AI. It also differentiates between operational and analytical data, discussing data warehousing, data lakes, and data mesh approaches.
8
Guest Lectures (TBC)
Week of November 3
Lectures by industry professionals. Speakers to be announced.
9
Guest Lecture (TBC) / Evaluating Architecture Risk
Week of November 10
Guest lecture by an industry speaker to be announced; Evaluating the architecture risks and important things to look out for.
10
Mitigating Architecture Risk
Week of November 17
Architecture is about communication and decision making. This lecture covers case studies on how architects might mitigate architecture risks and augment their designs based on real-life scenarios.
11
More Architectural Ideas
Week of November 24
In this lecture, we will go through various interesting architecture patterns that are implemented by big software companies through reviewing their architecture blogs. We will then use what we learnt to evaluate the trade-offs made in each architecture and brainstorm how these ideas could be enhanced given new requirements.
12
Guest Lecture (TBC)
Week of December 1
Guest lecture by an industry speaker to be announced.