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 and the Individual Project Proposal specification

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 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
First Project Team Survey due
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
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.)

Week 15

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

Your Choice reading: none

Dec 10
All group project final deliverables due
Dec 10
Optional Oral Exam that replaces IP1 score. Submit this form if you want to take the exam by Monday 12/8 AoE. Exam takes place in GITC 4402.
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 15
Final exam at 8:30-11:00am in CULMT LEC 2
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