Data | Topic and Notes | Assignments | Reading For This Class
--- | --- | --- | ---
T Aug 30 | What is Software Engineering? [overview] (no attendance/participation check) | Some homeworks are posted. Start early! | Read the HW6 Specification so you can think about it early!
R Sep 01 | Process, Risk and Scheduling [overview] (no attendance/participation check) | Quiz 0 Due Friday (future quizzes may not be posted on this page) | S. Keshav's How to Read a Paper (many students may not be familiar with how to efficiently and effectively read technical papers, and outlines one skill for how to do so) Wikipedia's Software Development Process (Introduction and Section 3, Methodologies) Buse and Zimmermann's Information Needs for Software Development Analytics (if you are low on time, read only Sections I-V) [Microsoft] Note: some students report that Safari may display paper PDFs incorrectly. Optional: "How well do real companies plan and estimate effort?" Find out in: Anda et al.'s Variability and Reproducibility in Software Engineering: A Study of Four Companies that Developed the Same System [Simula]
T Sep 06 | Measurement [overview] (no attendance/participation check) | HW 0 (Dev Setup) Due | Begel and Zimmermann's Analyze This! 145 Questions for Data Scientists in Software Engineering [Microsoft] HW1 Specification Optional: "How does measurement bias relate to software?" Find out in: Mytkowicz et al.'s Producing Wrong Data Without Doing Anything Obviously Wrong!" [IBM] Alternative: Don't want to read the Mytkowicz paper? Watch the video instead!
R Sep 08 | Quality Assurance and Testing [qa] | HW 1a (Test Coverage) Due | Sections 2.0 to 2.5 of Henderson's Software Engineering at Google [Google] Wikipedia's Quality Assurance (Introduction, Approaches and In Practice sections) Wikipedia's Software Testing (Introduction, Overview, Testing Approach, Testing Levels, Testing Types, Testing Processes, and Automated Testing) Optional: "How does Google test each change to all of its software?" Find out in: Memon et al.'s Taming Google-Scale Continuous Testing [Google]
T Sep 13 | Test Suite Quality Metrics [qa] |  | Wikipedia's Code Coverage Wikipedia's Mutation Testing (Introduction, Overview, Goals, Mutation Testing Overview, Mutation Operators) Optional: "How did mutation testing improve code review feedback by over 60% for over 10,000 code authors at Google?" Find out in: Petrovic and Ivankovic's State of Mutation Testing at Google [Google] Optional: "Do coverage metrics really help with critical projects?" Find out in: Dupuy and Leveson's An Empirical Evaluation of the MC/DC Coverage Criterion on the HETE-2 Satellite Software [Alcatel]
R Sep 15 | Test Inputs, Oracles and Generation [qa] | HW 1b, 1c and 1d (Test Coverage) Due | Read up to, but not including, "Program Specific Checkers" in Zeller's Fuzzing: Breaking Things with Random Inputs Tillmann and de Halleux's Pex — White Box Test Generation for .NET (this project became IntelliTest in Visual Studio) [Microsoft] Optional: "What's the state of the art in test oracles?" Find out in: Barr et al.'s The Oracle Problem in Software Testing: A Survey Optional: "Can fuzz testing find security bugs?" Find out in: Godefroid et al.'s Automated Whitebox Fuzz Testing [Microsoft]
T Sep 20 | Code Inspection and Review [qa] |  | Wikipedia's Code Review Bacchelli and Bird's Expectations, outcomes, and challenges of modern code review [Microsoft] HW2 Specification Optional: "How does gender relate to GitHub pull requests?" Find out in: Terrell et al.'s Gender differences and bias in open source: pull request acceptance of women versus men Optional: "How can we automatically resolve merge conflicts?" Find out in MergeResolver — Automatic Merge Conflict Resolution [GrammaTech] Optional: "Where do invariants come from?" Find out in: Ernst et al.'s The Daikon system for dynamic detection of likely invariants
R Sep 22 | Dynamic Analysis Tools [qa] |  | Wikipedia's Dynamic Program Analysis Musuvathi et al.'s Finding and Reproducing Heisenbugs in Concurrent Programs (Abstract, Sections 1, 2, 3, 5, and 7) [Microsoft] Optional: "How can we detect locking bugs?" Find out in: Savage et al.'s Eraser: A Dynamic Data Race Detector for Multithreaded Programs [Digital]
T Sep 27 | Pair Programming and Skill Interviews [coding] | HW 2 (Test Automation) Due (reminder: assignments are due at this time even if there are temporary power or networking issues) | Wikipedia's Pair Programming Cockburn and Williams' The Costs and Benefits of Pair Programming Dean Jackson's The Google Technical Interview [Google] Section 4.1 of Henderson's Software Engineering at Google [Google] Optional: "What did a survey of over 46,000 comments find out about modern technical interviews?" Find out in: Behroozi et al.'s Hiring is Broken: What Do Developers Say About Technical Interviews? [Microsoft] Optional: "What can go wrong in pair programming?" Find out in: Lewis and Shah's How Equity and Inequity Can Emerge in Pair Programming Optional: "How do Agile and Waterfall compare?" Find out in: Hosking's Agile Projects Have Become Waterfall Projects With Sprints
R Sep 29 | Defect Reporting and Triage [bugs] |  | Wikipedia's Bug tracking system Bettenburg et al.'s What Makes a Good Bug Report? (Abstract, Sections 1, 3, and 9) [Apache, Eclipse, Mozilla] Optional: "Are testers more neurotic than developers?" Find out in Smith et al.'s Beliefs, Practices, and Personalities of Software Engineers: A Survey in a Large Software Company [Microsoft]
T Oct 04 | Rachel Frenkel (Meta/Facebook) [guest] | (putting off HW 3 typically works poorly for students)
R Oct 06 | Static & Dataflow Analysis (1/2) [qa] | You should pretend that HW 3 (Mutation Testing) is Due: studying for the exam while completing HW 3 is difficult | Wikipedia's Static Program Analysis Ayewah et al.'s Experiences Using Static Analysis to Find Bugs [Google] Optional: "How does Microsoft find bugs in critical device drivers?" Find out in: Ball et al.'s A Decade of Software Model Checking with SLAM [Microsoft] Optional: "What are deployment challenges for static analysis?" Find out in: Bessey et al.'s A Few Billion Lines of Code Later: Using Static Analysis to Find Bugs in the Real World [Coverity]
T Oct 11 | Static & Dataflow Analysis (2/2) [qa] | HW 3 (Mutation Testing) Due | Schwartz-Narbonne's How to integrate formal proofs into software development [Amazon] Wikipedia's Data-flow Analysis (Introduction, Basic Principles, Iterative Algorithm and Examples) HW3 Specification Optional: Wikipedia's Basic Block (Introduction and Definition)
R Oct 13 | Fault Localization and Profiling [bugs] |  | Wikipedia's Profiling Parnin and Orso's Are Automated Debugging Techniques Actually Helping Programmers? (if low on time, can skip Sections 2 and 4) Graham et al.'s gprof: a Call Graph Execution Profiler (Abstract, Sections 1, 2, 3 and 5) HW4 Specification Optional: "How can we collect per-path information?" Find out in: Ball and Larus's Efficient Path Profiling [Microsoft] Optional: "What other fault localization techniques exist?" Find out in: Wong and Debroy's A Survey of Software Fault Localization
Fri Oct 14 | — | Exam #1 Due (you pick a 2-hour window within this 24-hour day) |
T Oct 18 | — (No Class: Fall Break) | — | —
R Oct 20 | Debugging as Hypothesis Testing [bugs] | (looking into HW 6a projects before the break improves outcomes) | Sections 2.7 to 2.10 of Henderson's Software Engineering at Google [Google] Andreas Zeller's Automated Debugging: Are We Close? Alternative: George Necula's lecture on Delta Debugging at Berkeley may provide a nice alternative to the presentation in this class. Optional: For more information on this project, visit: Zeller's Delta Debugging: from automated testing to automated debugging Optional: For an entire on-line course on this topic, visit: Udacity's Software Debugging: Automating the Boring Tasks
T Oct 25 | Requirements and Specifications [design] | HW 4 (Defect Detection) Due | Wikipedia's Requirements Elicitation Peter K. Shultz's Being a PM [Microsoft] Spolsky's How To Be A Program Manager [Stack Overflow] Zowghi and Coulin's Requirements Elicitation: A Survey of Techniques, Approaches and Tools (read up through 2.3, and then skip to and read 2.6) HW5 Specification
R Oct 27 | Elicitation, Validation and Risk [design] |  | Abstract, Section 1 and Section 2 of Bjarnason et al.'s Challenges and practices in aligning requirements with verification and validation: a case study of six companies (first 5.5 pages only) Sinofsky's PM at Microsoft (cached copy) (original) [Microsoft] Optional: "How do safety-critical industries formalize and mitigate such risks?" Find out in: Wikipedia's Fault Tree Analysis
T Nov 01 | Designing for Maintainability [design] | (we recommend overlapping HW 6a with HW 5) | Up to and including Section II-B of Liu et al.'s Automatic Generation of Pull Request Descriptions (the rest is optional) Malkwai'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) Spolsky's Things You Should Never Do, Part 1 [Stack Overflow]
R Nov 03 | Patterns and Anti-Patterns [design] | HW 5 (Debugging Automation) Due | Wikipedia's Software Design Pattern HW6 Specification Optional: "How do design patterns work in industry?" Find out in: Beck et al.'s Industrial Experience with Design Patterns [AT&T, Motorola, Siemens, IBM]
T Nov 08 | Code Inspection and the Brain [coding, qa] |  | Floyd et al.'s Decoding the representation of code in the brain: An fMRI study of code review and expertise (skip Sections II, III and IV) Siegmund et al.'s Measuring Neural Efficiency of Program Comprehension (skip Sections 3 and 7) [Microsoft] Optional: "What did `reddit` think of this?" Find out in: Does the brain interact with programming languages like it does with natural languages?
R Nov 10 | Sarah D'Angelo (Google) [guest] google meet link | HW 6a (Contribution) Due (no required Lecture attendance or attendance checks) | Jaspan et al.'s Enabling the Study of Software Development Behavior with Cross-Tool Logs (pages 1-9) [Google] Optional: "What can eye tracking tell us about how pair programming works when the partners are remote?" Find out in: D'Angelo and Begel's Improving Communication Between Pair Programmers Using Shared Gaze Awareness [Microsoft]
T Nov 15 | Productivity (bring a coding laptop!) [coding] |  | See special reading instructions
R Nov 17 | Automatic Program Repair [overview] |  | Marginean et al.'s SapFix: Automated End-to-End Repair at Scale [Facebook] Monperrus et al.'s Repairnator patches programs automatically Optional: "Can smaller companies use automated repair?" Find out in: Haraldsson et al.'s Fixing Bugs in Your Sleep: How Genetic Improvement Became an Overnight Success [Janus] Optional: "How does mutation relate to automated repair?" Find out in: Le Goues et al.'s A Systematic Study of Automated Program Repair: Fixing 55 out of 105 Bugs for $8 Each Optional: "How can we repair 50% of standard compilation errors with neural machine translation?" Find out in: Mesbah et al.'s DeepDelta: Learning to Repair Compilation Errors [Google]
T Nov 22 | Samyukta Jadhwani (Microsoft) [guest] | (no required Lecture attendance or attendance checks)
R Nov 24 | — (No Class: Thanksgiving) | —
T Nov 29 | World Building [other] |  |
R Dec 01 | Quantum Computing and Romance Novels [other] |  |
T Dec 06 | Program Synthesis [overview] |  | Interview with Sumit Gulwani [Microsoft] Sections 1 and 2 of Alur et al.'s Syntax-Guided Synthesis Chapter 1 of Gulwani's Program Synthesis [Microsoft]
R Dec 08 | Program Synthesis #2 [overview] | You Should Pretend HW 6b (Contribution) is Due (see below about no late submissions) | Optional: Dong et al.'s WebRobot: Web Robotic Process Automation using Interactive Programming-by-Demonstration (all Sections except Section 8) Optional: Pu et al.'s SemanticOn: Specifying Content-Based Semantic Conditions for Web Automation Programs (Sections 1, 4 and 5) Optional: SemanticOn Demonstration Video
Fri Dec 09 | — | Exam #2 Due (you pick a 2-hour window within this 24-hour day)
Mon Dec 12 | — | HW 6b (Contribution) Due (cannot be accepted later than this, please plan accordingly) All Course Materials Due