Skip to main content Link Search Menu Expand Document (external link)

Calendar

Week 1

Sep 1
No Class (Labor Day)
Totally Optional, For Fun Readings: Gross’ The Grug Brained Developer and Kingsbury’s Reversing the technical interview
Sep 3
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

Week 2

Sep 8
Individual Project 0 due
Sep 8
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?

Sep 10
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

Week 3

Sep 15
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

Sep 17
Testing (2)
Mandatory reading: Petrovic’s Mutation Testing

Your Choice reading: Memon et al.’s Taming Google-Scale Continuous Testing

Week 4

Sep 22
Individual Project 1 due
Sep 22
Testing (3)
Mandatory reading: SQLite’s How SQLite is Tested and the Group Project Specification.

Your Choice reading: Barr et al.’s The Oracle Problem in Software Testing: A Survey

Sep 24
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

Week 5

Sep 29
Individual Project Proposal due
Sep 29
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

Oct 1
Working in Teams
Mandatory reading: Fowler’s Two Pizza Team and Arguelles’ My favorite coding question to give candidates (and why)

Your Choice reading: Behroozi et al.’s Hiring is Broken: What Do Developers Say About Technical Interviews?

Oct 3
Team Assignments published no later than this date.

Week 6

Oct 6
Requirements and Specifications (1)
Mandatory reading: Spolsky’s How to be a Program Manager and Ubl’s Design Docs at Google.

Your Choice reading: Ernst et al.’s The Daikon system for dynamic detection of likely invariants

Oct 8
Requirements and Specifications (2)
Mandatory reading: Wayne’s Using Formal Methods at Work.

Your Choice reading: Lamport’s Introduction to TLA

Week 7

Oct 13
Project Plan due
Oct 13
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

Oct 15
Languages
Mandatory reading: Howarth’s Why Discord is Switching from Go to Rust and Schwab’s Safety through Incompatibility

Your Choice reading: Hoare’s Hints on Programming Language Design (shorter than it looks!)

Week 8

Oct 20
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

Oct 22
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

Week 9

Oct 27
Revised Project Plan due
Oct 27
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

Oct 29
Debugging (2)
Mandatory reading: Zeller’s Automated Debugging: Are We Close? and Alpert’s TODOs aren’t for doing

Your Choice reading: Cleve and Zeller’s Locating Causes of Program Failures

Oct 31
Project Deployment Demo due

Week 10

Nov 3
Mid-term Exam (in-class)
see the exams page for old and practice exams (with keys)
Nov 3
First Project Team Survey due
Nov 5
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 7
Project Wizard-of-Oz Demo due

Week 11

Nov 10
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

Nov 12
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

Week 12

Nov 17
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: Scully et al.’s Machine Learning: The High-Interest Credit Card of Technical Debt

Nov 19
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 21
Project Preliminary Demo due

Week 13

Nov 24
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 26
No class (Friday classes meet for Thanksgiving holiday)
Nov 26
Second Project Team Survey due

Week 14

Dec 1
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

Dec 3
Software Engineer Panel
Mandatory reading: none, but you must submit a question by December 2 AoE

Your Choice reading: none

Week 15

Dec 8
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.)

Dec 10
All group project final deliverables due
Dec 10
TBD/Slack, for now
Dec 12
Group project demos for the instructor must be done by this date AoE. 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). Your team can sign up for a timeslot here.
Dec 13
Third Project Team Survey due
Dec 13
Individual Reflection due

Week 16

Dec X
Final exam at TBD
Dec 18
All group project final deliverables (re-submission) due

© 2022-2025 Martin Kellogg, Jonathan Bell, Adeel Bhutta and Mitch Wand. Released under the CC BY-SA license