Schedule

1
Intro + Contributing to Open Source
Week of September 2
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 9
Understanding the architecture of large codebases and recognizing real-life applications of design patterns in a large codebase.
3
Operational Non-functional requirements
Week of September 16
What does it mean for a system to be performant? What are the operational requirements that we need to consider when designing a software system?
4
Structural Non-functional requirements
Week of September 23
Considerations to ensure the code quality of the system to enable it to be operated and maintained in quality.
5
Architecture Styles
Week of September 30
Architecture styles govern the way we should build our software system. We'll revisit monolithic architectures, and then dive into components of distributed architectures.
6
Distributed Architecture Styles
Week of October 7
“Microservice architecture” should not be the only buzzword in your arsenal. Let’s go one step up and look at various architectures that we may know and analyze them in the context of non-functional requirements.
7
Architecture Problem Solving
Week of October 14
There are no right answers to architecture, only trade-offs. In this lecture, we will be establishing a problem solving mindset and find strategies to justify our architecture decision-making process.
8
Communicating Software Architecture Part 1 - Decisions and Risk
Week of October 21
Architecture is about communication and decision making. This lecture covers how architects analyze architectural risk in order to determine which decisions needs to be communicated to the rest of the team.
9
Communicating Software Architecture Part 2 - Diagramming and Whiteboarding
Week of November 4
A picture is worth a thousand words. Visualizations are one of the most powerful tools in an architect's belt. This lecture discusses how diagramming and whiteboarding can be used to augment the communication that ensures software projects succeed.
10
Communicating Software Architecture Part 3 - Solution Architecture Document
Week of November 11
In this lecture we will discuss how to write a Solution Architecture Document (SAD), in prepratation for the final deliverable for this course.
11
Guest Lectures
Week of November 18
Lectures from industry professionals. Topic TBD
12
Guest Lectures
Week of November 25
Lectures from industry professionals. Topic TBD