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

Calendar

Week 1

Sep 6
Introduction
No reading, but you should come to class (even if you’re on the waitlist) to do an in-class activity. If you’re unable to come to class (e.g., you’re sick), email me - the activity can also be completed remotely, and it’s important that everyone does it.
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) and Triglia’s Why you should use Black for your Python style linting

Your Choice reading: Ajami et al.’s Syntax, predicates, idioms — what really affects code complexity?

Week 2

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

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

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

Week 3

Sep 20
Testing (3)
Mandatory reading: SQLite’s How SQLite is Tested

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

Sep 22
Version Control
Mandatory reading: Ernst’s Version control concepts and best practices

Your Choice reading: De Rosso et al.’s Purposes, concepts, misfits, and a redesign of git

Week 4

Sep 25
Individual Project 1 due
Sep 27
Requirements and Specifications (1)
Mandatory reading: Spolsky’s How to be a Program Manager and the Group Project Specification

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

Sep 27
Project Formation survey due
Sep 29
Requirements and Specifications (2)
Mandatory reading: Wayne’s Using Formal Methods at Work

Your Choice reading: Lamport’s Introduction to TLA

Week 5

Oct 4
Process
Mandatory reading: The Agile Manifesto (this should take under a minute to read, but I suggest you think about what it is advocating for at least a few minutes before moving onto the next article) and Hosking’s Agile Projects Have Become Waterfall Projects With Sprints.

Your Choice reading: Anda et al.’s Variability and Reproducibility in Software Engineering: A Study of Four Companies that Developed the Same System

Oct 6
Working in Teams
Mandatory reading: Jackson’s The Google Technical Interview and the Individual Project 2 Specification

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

Week 6

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

Oct 13
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!)

Week 7

Oct 16
Individual Project 2 due
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

Oct 20
Static Analysis (1)
Mandatory reading: Ayewah et al.’s Experiences Using Static Analysis to Find Bugs

Your Choice reading: Bessey et al.’s A Few Billion Lines of Code Later: Using Static Analysis to Find Bugs in the Real World

Week 8

Oct 23
Revised Project Plan due
Oct 25
Static Analysis (2)
Mandatory reading: 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 27
Mid-term Exam (in-class)
see the exams page for old and practice exams (with keys)

Week 9

Nov 1
Debugging (1)
Mandatory reading: Zeil’s Debugging – Using Hypotheses to Track Down the Culprit

Your Choice reading: Ko and Myers’ Designing the WhyLine: A Debugging Interface for Asking Questions about Program Behavior

Nov 3
Debugging (2)
Mandatory reading: Zeller’s Automated Debugging: Are We Close?

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

Nov 3
Project Wizard-of-Oz Demo due

Week 10

Nov 8
Software Architecture (1)
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 10
Software Architecture (2)
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

Week 11

Nov 15
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 17
Tech debt, refactoring, and maintenance (2)
Mandatory reading: Spolsky’s Things you should never do, part I and Prokopov’s Software disenchantment

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 22
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 24
No class (Thanksgiving holiday)

Week 13

Nov 29
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”

Dec 1
Free and Open-source Software
Mandatory reading: Stallman’s Why Open Source Misses the Point of Free Software

Your Choice reading: Terrell et al.’s Gender differences and bias in open source: pull request acceptance of women versus men

Dec 1
Project Preliminary Demo due

Week 14

Dec 6
In-class Project Workday (Martin is traveling at FSE)
Mandatory reading: none

Your Choice reading: none

Totally Optional, For Fun Readings: Gross’ The Grug Brained Developer and Kingsbury’s Reversing the technical interview

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

Week 15

Dec 12
All group project final deliverables due
Dec 13
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 (Dec 18, 11:30am, TIER 114)
Dec 18
All group project final deliverables (re-submission) due
Dec 19
Individual Reflection due

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