Calendar
Week 1
- Sep 4
- Introduction
- Mandatory reading: the Individual Project 0 Specification and the syllabus (No reading quiz today, but these are fair game for any subsequent reading quiz.)
Your Choice reading: Brooks’ No Silver Bullet
- Sep 6
- Code-level Design
- Mandatory reading: Spolsky’s The Joel Test (note that this article is from 2000, so the examples are a little dated), Gransee’s Opinions on Opinionated Formatters, the Prettier team’s Option Philosophy, and Wikipedia’s Law of Triviality.
Your Choice reading: Ajami et al.’s Syntax, predicates, idioms — what really affects code complexity?
Week 2
- Sep 9
- Individual Project 0 due
- Sep 11
- Reading Code
- Mandatory reading: Atwood’s Learn to Read the Source, Luke, Coleman’s How to quickly and effectively read other people’s code, and the Individual Project 1 Specification
Your Choice reading: Endres et al.’s Relating Reading, Visualization, and Coding for New Programmers: A Neuroimaging Study
- Sep 13
- Testing (1)
- Mandatory reading: Shore’s The Art of Agile Development: Test-Driven Development
Your Choice reading: Saff and Ernst’s An Experimental Evaluation of Continuous Testing During Development
Week 3
- Sep 18
- Testing (2)
- Mandatory reading: Petrovic’s Mutation Testing
Your Choice reading: Memon et al.’s Taming Google-Scale Continuous Testing
- Sep 20
- Testing (3)
- Mandatory reading: SQLite’s How SQLite is Tested and
Your Choice reading: Barr et al.’s The Oracle Problem in Software Testing: A Survey
Week 4
- Sep 23
- Individual Project 1 due
- Sep 25
- Requirements and Specifications (1)
- Mandatory reading: Spolsky’s How to be a Program Manager, Ubl’s Design Docs at Google, and the Individual Project 2 Specification
Your Choice reading: Ernst et al.’s The Daikon system for dynamic detection of likely invariants
- Sep 25
- Project Formation survey due
- Sep 27
- Requirements and Specifications (2)
- Mandatory reading: Wayne’s Using Formal Methods at Work and the Group Project Specification
Your Choice reading: Lamport’s Introduction to TLA
Week 5
- Oct 2
- Version Control
- Mandatory reading: Ernst’s Version control concepts and best practices and Thompson’s My favourite Git commit
Your Choice reading: De Rosso et al.’s Purposes, concepts, misfits, and a redesign of git
- Oct 4
- Process
- Mandatory reading: The Agile Manifesto and its Twelve Principles (this should be a quick read, but I suggest you think about what it is advocating for at least a few minutes before moving onto the next article) and Santo’s “Waterfall” doesn’t mean what you think it means
Your Choice reading: Anda et al.’s Variability and Reproducibility in Software Engineering: A Study of Four Companies that Developed the Same System
Week 6
- Oct 7
- Project Plan due
- Oct 9
- Working in Teams
- Mandatory reading: Fowler’s Two Pizza Team and Jackson’s The Google Technical Interview
Your Choice reading: Behroozi et al.’s Hiring is Broken: What Do Developers Say About Technical Interviews?
- Oct 11
- Code Review
- Mandatory reading: Google’s How to do a code review (read all six linked sub-pages in the bulleted list)
Your Choice reading: Bacchelli and Bird’s Expectations, Outcomes, and Challenges Of Modern Code Review
Week 7
- Oct 14
- Individual Project 2 due
- Oct 16
- Languages
- Mandatory reading: Howarth’s Why Discord is Switching from Go to Rust
Your Choice reading: Hoare’s Hints on Programming Language Design (shorter than it looks!)
- Oct 18
- Build Systems
- Mandatory reading: Atwood’s The F5 Key Is Not a Build Process
Your Choice reading: Mokhov et al.’s Build Systems à la Carte
Week 8
- Oct 21
- Revised Project Plan due
- Oct 23
- Static Analysis
- Mandatory reading: Ayewah et al.’s Experiences Using Static Analysis to Find Bugs and Schwartz-Narbonne’s How to integrate formal proofs into software development
Your Choice reading: Chapter 2 (“Abstract Interpretation”) of Ernst’s Notes on Program Analysis
- Oct 25
- Debugging (1)
- Mandatory reading: Zeil’s Debugging – Using Hypotheses to Track Down the Culprit and Taylor’s Debugging
Your Choice reading: Ko and Myers’ Designing the WhyLine: A Debugging Interface for Asking Questions about Program Behavior
Project Deployment Demo due
Week 9
- Oct 30
- Debugging (2)
- Mandatory reading: Zeller’s Automated Debugging: Are We Close?
Your Choice reading: Cleve and Zeller’s Locating Causes of Program Failures
- Nov 1
- Mid-term Exam (in-class)
- see the exams page for old and practice exams (with keys)
Week 10
- Nov 6
- Software Architecture
- Mandatory reading: Kästner’s Thinking Like a Software Architect and Ross’ How Architecture Diagrams Enable Better Conversations
Your Choice reading: Garlan’s Software Architecture
- Nov 8
- Design Patterns
- Mandatory reading: Fowler’s Writing Software Patterns (read up to, but not including, “Common Pattern Forms”) and Lewis and Fowler’s Microservices
Your Choice reading: Kellogg et al.’s Verifying Object Construction
Project Wizard-of-Oz Demo due
Week 11
- Nov 13
- Tech debt, refactoring, and maintenance (1)
- Mandatory reading: Allman’s Managing Technical Debt
Your Choice reading: Kim et al.’s A Field Study of Refactoring Challenges and Benefits
- Nov 15
- Tech debt, refactoring, and maintenance (2)
- Mandatory reading: Spolsky’s Things you should never do, part I and Majors’ Friday Deploy Freezes Are Exactly Like Murdering Puppies
Your Choice reading: Malkawi’s The art of software systems development: Reliability, Availability, Maintainability, Performance (RAMP) (read up through the 4 “Cases” and then skip to and read the Discussion)
Week 12
- Nov 20
- DevOps (1)
- Mandatory reading: Sloss’ “Introduction” and Baye’s “Emergency Response” from Google’s Site Reliability Engineering
Your Choice reading: Dean and Barroso’s “The Tail at Scale”
- Nov 22
- DevOps (2)
- Mandatory reading: Lunney and Lueder’s “Postmortem Culture: Learning from Failure” from Google’s Site Reliability Engineering and Luu’s “Postmortem Lessons”
Your Choice reading: Xu et al.’s “Do Not Blame Users for Misconfiguration”
- Nov 22
- Project Preliminary Demo due
Week 13
- Nov 27
- Free and Open-source Software
- Mandatory reading: Stallman’s Why Open Source Misses the Point of Free Software and Zaitsev’s The Future of Open Source is Polarized
Your Choice reading: Terrell et al.’s Gender differences and bias in open source: pull request acceptance of women versus men
- Nov 29
- No class (Thanksgiving holiday)
Week 14
- Dec 4
- Software Engineer Panel
- Mandatory reading: none, but you must submit questions (TODO: link to assignment)
Your Choice reading: none
- Dec 6
- What is Software Engineering?
- Mandatory reading: Shaw’s “What makes good research in software engineering?”
Your Choice reading: read 10 abstracts in the latest ICSE proceedings and make a list of words you don’t know. Then, look up at least 5 of those words and write a brief definition. Send me the list of words, the 5 definitions, and the titles of the papers whose abstracts you read over email. (The reading quiz question for this reading will cover a topic that everyone who chooses this reading has read.)
Totally Optional, For Fun Readings: Gross’ The Grug Brained Developer and Kingsbury’s Reversing the technical interview
Week 15
- Dec 10
- All group project final deliverables due
- Dec 11
- Group project presentations, all final deliverables due BEFOREHAND. Attendence (in-person) is required. At least one group member must bring a laptop with a working demo of your group project (running in a publicly-accessible, deployed covey.town instance).
Week 16
- Exam Slot (TBD)
- Dec TBD
- All group project final deliverables (re-submission) due
- Dec TBD+1
- Individual Reflection due