Lectures

Date Lecture Topic(s) Homework (for next class)
2021-07-09 30 Open Office Hours
  • Have a great summer break!
2021-07-07 29 Ethics in Software Development
ACM Code of Ethics and Professional Conduct
  • Readings:
    • None
  • Project 2
    • Keep up with PRs!
    • Final submission due by last day of class
2021-07-05 28 Ethics in Software Development
ACM Code of Ethics and Professional Conduct
  • Readings:
    • None
  • Hawkins—Industry Guest Written Summary (Gradescope)
  • Project 2
    • Keep up with PRs!
    • Final submission due by last day of class
2021-07-02 27 No Class — Happy Independence Day!
  • Readings:
    • None
  • Hawkins—Industry Guest Written Summary (Gradescope)
  • Project 2
    • Keep up with PRs!
    • Final submission due by last day of class
2021-06-30 26 Industry Guest
Will Hawkins (U. of Cincinnati)
  • Readings:
    • None
  • Dorn—Industry Guest Written Summary (Gradescope)
  • Hawkins—Industry Guest Written Summary (Gradescope)
  • Project 2
    • Keep up with PRs!
    • Final submission due by last day of class
2021-06-28 25 Software Design
Design Patterns Part 3
Project Work Time
  • Readings:
    • None
  • Industry Guest Written Summary (Gradescope)
  • Project 4 due by class June 30
  • Project 2
    • Keep up with PRs!
    • Final submission due by last day of class
2021-06-25 24 Industry Guest
Jonathan Dorn (Grammatech)
  • Readings:
    • None
  • Industry Guest Written Summary (Gradescope)
  • Project 4 due by class June 30
  • Project 2
    • Keep up with PRs!
    • Final submission due by last day of class
2021-06-23 23 Software Design
Design Patterns Part 2
2021-06-21 22 Software Design
Design Patterns Part 1
2021-06-18 21 Industry Guest
Samyukta Jadhwani (Microsoft)
  • Industry Guest Written Summary (Gradescope)
  • Readings:
    • None
  • Project 4 due by class June 30
  • Project 2
    • Keep up with PRs!
    • Final submission due by last day of class
2021-06-16 20 Delta Debugging Conclusion
Project Work Time
  • Project 4 due by class June 30 (start early!)
  • Readings:
    • "An Overview of Test Case Reduction" by Donaldson and MacIver (Perusall—Lecture 20 Reading)
  • Project 2
    • Keep up with PRs!
    • Final submission due by last day of class
2021-06-14 19 Debugging as Hypothesis Testing
Delta Debugging
Git Bisect Example
  • Readings:
    • None
  • Project 2
    • Keep up with PRs!
    • Final submission due by last day of class
2021-06-11 18 Fault Localization
Debugging as Hypothesis Testing
Fault Localization Exercise Bug Information
Bisection Exercise Information
2021-06-09 17 Fault Localization
Codebases (Millions of lines of code)
Fault Localization Exercise Bug Information
2021-06-07 16 Defect Reports and Triage
Bug Life Cycle
Bug Life Cycle (alternate)
  • Readings:
    • "Bug Tracking System" from Wikipedia
    • "What Makes a Good Bug Report?" by Bettenburg et al.
    • Complete your annotations to these using Perusall—Lecture 16 Reading
  • Project 3 due by class June 14
  • Project 2
    • Keep up with PRs!
    • Final submission due by last day of class
2021-06-04 15 No class — reading day
  • Project 3 due by class June 14 (start early!)
  • Readings:
    • None
  • Project 2
    • Keep up with PRs!
    • Final submission due by last day of class
2021-06-02 14 Quality Assurance Review
Project Work Day
  • Project 3 due by class June 14 (start early!)
  • Bonus: Submit P3A and/or P3B to Gradescope and receive non-zero points
  • Readings:
    • None
    • Bonus:
      • "The Oracle Problem in Software Testing: A Survey" by Barr et al. (Perusall—Lecture 13 Bonus)
      • Ten (10) annotations are required for full bonus point credit
  • Project 2
    • Keep up with PRs!
    • Final submission due by last day of class
2021-05-31 13 Test Input Generation
The Oracle Problem
invariants.py
  • Project 3 due by class June 14 (start early!)
  • Readings:
    • "Fuzzing: Breaking Things with Random Inputs" by Zeller (Perusall—Lecture 13 Reading)
    • Bonus:
      • "The Oracle Problem in Software Testing: A Survey" by Barr et al. (Perusall—Lecture 13 Bonus)
      • Ten (10) annotations are required for full bonus point credit
  • Project 2
    • Keep up with PRs!
    • Final submission due by last day of class
2021-05-28 12 Mutation Testing
Test input generation
  • Project 2 released
    • Finish the checkpoint if you haven't already
    • Final submission due by last day of class
  • Review these tips for reading research papers before completing the reading.
  • Readings:
    • "Test Generation" from Wikipedia
    • "Pex-White Box Test Generation for .NET" by Tillmann and de Halleux
    • Complete your annotations to these using Perusall—Lecture 12 Reading
  • Catch up on any assignments you haven't finished
2021-05-26 11 Test Suite Quality Metrics
Testing as Sampling
  • Project 2 released
    • Checkpoint due by class 2021-05-28
    • Final submission due by last day of class
  • Readings:
2021-05-24 10 Quality Assurance and Testing
Unit testing
Test Suite Quality Metrics
2021-05-21 9 Quality Assurance and Testing
  • Project 2 released
    • Checkpoint due by class 2021-05-28
    • Final submission due by last day of class
  • Readings:
    • Sections 2.0–2.5 of Henderson's Software Engineering at Google for Monday (Perusall—Lecture 8 Reading)
    • Quality Assurance and Software Testing on Wikipedia (Perusall—Lecture 9 Reading)
  • Do something fun this weekend (e.g., watch Eurovision)
2021-05-19 8 Git: Workflows
Quality Assurance and Testing
  • Bonus: Complete the remaining Learn Git Branching levels for bonus points (one point per level — row of challenges). You can earn up to four bonus points.
  • Readings:
    • "Git Branching", "Distributed Git", and "Interactive Staging" from "Pro Git" for Friday (Perusall—Lecture 7 Reading)
    • Sections 2.0–2.5 of Henderson's Software Engineering at Google for Monday (Perusall—Lecture 8 Reading)
2021-05-17 7 Git: Branching
Commit Messages
Remote Repositories
  • Complete level 1 of the Remote tab (Push & Pull -- Git Remotes!) on Learn Git Branching
    • There are eight challenges to complete; a check mark will appear over each once you finish
    • Upload a selfie showing your completed challenges to Gradescope
    • Note that you can open the levels window by typing levels in the prompt
  • Bonus: Complete the remaining levels for bonus points (one point per level — row of challenges). You can earn up to four bonus points.
  • Readings:
    • "Git Branching", "Distributed Git", and "Interactive Staging" from "Pro Git" (Perusall—Lecture 7 Reading)
2021-05-14 6 Version Control Systems
Git / GitHub
  • Complete level 2 (Ramping Up) on Learn Git Branching
    • There are four challenges to complete; a check mark will appear over each once you finish
    • Upload a selfie showing your completed challenges to Gradescope
    • Note that you can open the levels window by typing levels in the prompt
  • Readings:
    • None
  • Project 1 due by class Monday May 17 (Gradescope)
2021-05-12 5 Shell scripting
Version Control Systems
  • Complete level 1 (Introduction Sequence) on Learn Git Branching
    • There are four challenges to complete; a check mark will appear over each once you finish
    • Upload a selfie showing your completed challenges to Gradescope
    • Note that you can open the levels window by typing levels in the prompt
  • Readings:
    • "Getting Started" and "Git Basics" from "Pro Git" (Perusall—Lecture 5 Reading)
  • Project 1 due by class Monday May 17 (Gradescope)
  • Make sure you have a GitHub account and have signed up for the Student Developer Pack
2021-05-10 4 Shell scripting
Editors
  • Project 1 due by class Monday May 17 (Gradescope)
  • Make sure your computer is set up with Visual Studio Code and the SSH plugin
  • Readings:
    • None
2021-05-07 3 Command-line utilities
Random file system
  • Day 2/3 Exercises due by class Monday (Gradescope)
  • Readings:
    • None
  • Do something fun this weekend!
2021-05-05 2 Linux
Command-line utilities
Random file system
2021-05-03 1 First Class
What is software engineering?
Command-line interfaces
  • Install Git for Windows (or have a Linux distribution configured under WSL) if you plan to use a Windows system for class.
  • Readings:
    • Chapter 1 of "What Is Software Engineering? - Software Engineering at Google" (Perusall—Lecture 1 Reading)