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

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

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

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

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

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

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