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 a question by December 3 AoE

Your Choice reading: none

Dec 6
No class (Martin at NJPLS).
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
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 13
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.

Week 16

Dec 16
Final exam at 11:30am in GITC 1100
Dec 18
All group project final deliverables (re-submission) due
Dec 19
Individual Reflection due

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