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