Schedule
Note
This is a tentative schedule. It will be updated as the course progresses.
| Date | Lecture topic | Materials | Notes | |
|---|---|---|---|---|
| Week 1 | ||||
| Jan 20 (Tue) |
Lecture 1: IntroductionSyllabus, projects, context |
|
||
| Jan 22 (Thu) |
Lecture 2: Projects and processStakeholders, risk, development methodologies |
|||
| Week 2 | ||||
| Jan 27 (Tue) |
Lecture 3: Requirements |
|||
| Jan 29 (Thu) |
Lecture 4: Models |
|
||
| Week 3 | ||||
| Feb 3 (Tue) |
Lecture 5: Planning, Architecture |
|||
| Feb 5 (Thu) |
Lecture 6: Architecture 2 |
|||
| Week 4 | ||||
| Feb 10 (Tue) |
In-Class Activity: Requirements and Project Plan |
|||
| Feb 12 (Thu) |
Lecture 8: Virtualization, Program Design |
|
||
| Week 5 | ||||
| Feb 17 (Tue) |
February break
|
|||
| Feb 19 (Thu) |
Lecture 9: Design Patterns |
|||
| Week 6 | ||||
| Feb 24 (Tue) |
Lecture 10: Design Patterns 2 and Programming |
|||
| Feb 26 (Thu) |
Lecture 11: Version Control Systems |
|||
| Week 7 | ||||
| Mar 3 (Tue) |
Lecture 12: Version Control Systems 2, Presentations |
|||
| Mar 5 (Thu) |
In-Class Activity: AI Coding Tools |
|||
| Week 8 | ||||
| Mar 10 (Tue) |
In-class Exam 1 (Syllabus: Lecture 1 - Lecture 12) |
|||
| Mar 12 (Thu) |
In-class activity: Midpoint Presentation |
|
||
| Week 9 | ||||
| Mar 17 (Tue) |
In-class activity: Midpoint Presentation |
|||
| Mar 19 (Thu) |
External Talk: Rajdeep Mukherjee (Tech Lead and Senior Applied Scientist at Amazon) |
Talk Details | ||
| Week 10 | ||||
| Mar 24 (Tue) |
Lecture 14 |
|
||
| Mar 26 (Thu) |
Lecture 15 |
|||
| Week 11 | ||||
| Mar 31 (Thu) |
Spring break
|
|||
| Apr 2 (Tue) |
Spring break
|
|||
| Week 12 | ||||
| Apr 7 (Thu) |
Lecture 16 |
|||
| Apr 9 (Tue) |
Lecture 17 |
|||
| Week 13 | ||||
| Apr 14 (Thu) |
Lecture 18 |
|
||
| Apr 16 (Tue) |
In-class Exam 2 |
|
||
| Week 14 | ||||
| Apr 21 (Tue) |
Lecture 19 |
|||
| Apr 23 (Thu) |
Lecture 20 |
|
||
| Week 15 | ||||
| Apr 28 (Tue) |
Lecture 21 |
|
||
| Apr 30 (Thu) |
In-class activity: Final Presentation |
|
||
| Week 16 | ||||
| May 5 (Tue) |
Lecture 22 |
|
||
External Talk Details
Speaker: Dr. Rajdeep Mukherjee (Tech Lead and Senior Applied Scientist at Amazon)
Date: Mar 19, 2026
Title: Spec-Driven Development in the Age of Foundation Models and AI Agents
Abstract: In this lecture, I will introduce Spec-Driven Development (SDD) in the era of large foundation models and autonomous AI agents, arguing for re-centering the Software Development Life Cycle (SDLC) around specifications to improve alignment, reliability, and long-term maintainability. By placing structured, semi-formal specifications at the core of development, we can ensure higher fidelity between intent, implementation, and system behavior. I will use Kiro (https://kiro.dev/) as a concrete example to demonstrate how development begins with specifications that systematically guide code generation, validation, and evolution. We will explore how SDD supports both greenfield systems, by enforcing clarity and architectural rigor from inception, and brownfield systems, by extracting and leveraging specs from legacy codebases for feature development, bug fix, and modernization. I’ll discuss how coding agents grounded in specs can improve correctness, reduce hallucination, and enforce invariants, while also highlighting open challenges such as spec completeness, ambiguity, trust, and semantic alignment. Finally, we’ll discuss the need for offline benchmarks, high-quality {Code, Spec} datasets, and rigorous evaluation metrics, and conclude with a forward-looking perspective on how specifications may evolve into the primary artifact of software engineering, with code becoming a compiled byproduct of intent.
Bio: Dr. Rajdeep Mukherjee is a Tech Lead and Senior Applied Scientist at Amazon, leading developer tool products such as Amazon Q Developer, Kiro, and Amazon CodeGuru that power developer experiences both inside and outside Amazon. He earned his PhD in Computer Science from University of Oxford, specializing in formal methods and program analysis for system correctness. Prior to joining Amazon, Rajdeep worked in the Electronic Design Automation industry, where he built formal verification applications to ensure the correctness of safety critical systems. He has also held research roles at Arm, Microsoft Research, IBM Research, and Diffblue. His expertise spans coding agents, LLM applications, static analysis, program synthesis, and formal verification systems.