Lectures and Details (Winter 2022)


Live Lecture — MW 1:30-3:00pm — 1013 DOW (also recorded via CAEN with select backup recordings on Twitch)

Lecture Recording and Practice — MW 3:00-4:30pm — 1610 IOE (materials available here) (mix-and-match attending either lecture for credit, regardless of registration)

Discussion Sections — all optional, all start January 14th (materials available here) (~50% review material, ~50% office hours)

Thu 4:30-5:30 — 185 EWRE (Daniel)
Thu 5:30-6:30 — 1303 EECS (Daniel)
Fri 9:30-10:30 — 1003 EECS (Daniel)
Fri 10:30-11:30 — 1018 DOW (Daniel)
Fri 11:30-12:30 — 1940 COOL (Jason)
Fri 12:30-1:30 — 1006 DOW (Jason)
Fri 1:30-2:30 — 1014 DOW (Aidan)
Fri 2:30-3:30 — 1014 DOW (Aidan)


None (but see below, and a personal computer or laptop is required)

Course Staff
Mollie Bakal (GSI)
Jason Debel
Aidan Haase
Conner Hein
Daniel Hoekwater (GSI)
Natalie McKee
Cameron Oglesby
Holly Stauffer
Office Hours
(starting January 10th)
Office Hour Queuesee here for logistics

Mon 8:00-10:00a — Cameron
Mon 11:30-1:30p — Holly
Tue 7:00-8:30a — Holly
Tue 2:00-4:00p — Aidan
Tue 4:30-6:30p — Natalie
Wed 8:00-10:00a — Cameron
Wed 11:30-1:30p — Mollie
Wed 9:00-10:00p — Natalie
Thu 9:00-1:00p — Conner
Thu 1:00-3:00p — Mollie
Fri 3:00-5:00p — Jason

Professor Office Hours
(starting January 10th)

Wed 10:00-10:30a — Wes (4636 BBB)

Fri 1:00-2:00p — Xinyu (via OH queue)

Office Hour Calendar

Piazza Forum

autograder.io Homework Code Submission (need access? email EECS481Staff@gmail.com after January 5th)

Gradescope Homework Report Submission (need access? email EECS481Staff@gmail.com after January 5th)


This Course Considers ...

  • How can you get a patch accepted in a large software project?
  • Can we be confident that your code is correct?
  • What can be automated, and what is best done manually?
  • How can we measure software qualities?
  • How can we avoid problems early?

Advice From Former Students

Read what former students say about whether or not to take this course.

Successful software projects require more than just technical expertise. Figuring out what the client wants, collaborating in a team, managing complexity, mitigating risks, staying on time and budget, and determining, under various constraints, when a product is "good enough" to be shipped are equally important topics that often have a significant human component. This course explores these issues broadly and covers the fundamentals of modern software engineering and analysis.

This course focuses on software engineering and analysis. At a high level, the course is organized around five core topics:

  • overview Measurement and Risk
  • qa Quality Assurance (especially testing)
  • bugs Software Defects
  • design Software Design
  • coding Productivity at Scale
A culminating assignment involves making a contribution to an open source project: identifying an issue, understanding the local development process, and then actually fixing a bug or adding a feature, with extra credit awarded if your contribution is merged into the project.

This course is an upper-level CS technical elective for both CS-Eng and CS-LSA. (It does not show up in some versions of the CS-LSA Program Guide, but it does, in fact, count. Students can check their Audits to confirm.) It is not a capstone course or a major design experience course. It focuses on individual mastery of key software engineering concepts. It does not feature a large team project.

The expected workload for this class is "moderate" — one notch harder than UI Design, but two notches easier than Operating Systems.

Advice From Former Students

Read what former students had to say about how hard this course is.

What will I learn at the end?

Skimming a previous final project report can provide a perspective on the sorts of experiences associated with this class. A number of other final project reports are available.

This course draws inspiration from Carnegie Mellon's Foundations of Software Engineering (15-313) course as well as from the insights of Drs. Prem Devanbu, Christian Kästner, Marouane Kessentini, Kevin Leach, and Claire Le Goues.

Attendance, Participation and COVID

You must attend either one of the lecture slots each day in person. You may mix-and-match which lecture you attend from day to day, regardless of which you are officially signed up for. Attendance participation will be assessed through in-class activities (e.g., notecards, coding, etc.). We typically check attendance each day (Monday and Wednesday), but some weeks we may only check attendance on one day. The course schedule is available in advance so that you can plan accordingly.

In addition, once per week a student may attend any Discussion Section in person and receive one day of attendance/participation credit. (Talk to the course staff member running the Discussion Section to ensure you are recorded.) For example, it may be that one week we check attendance on Monday and also check on Wednesday, and you attend on Monday but miss Wednesday. You could then attend a Discussion Section on Thursday or Friday for participation and end up with both assessments covered for that week.

Students are also required to make use of course websites (such as Piazza and Gradescope) and check them for updates. Some information, including information about certain quizzes and assignments, and any last-minute changes or fixes to assignments or policies, is made presented on course webpages. This course does not use Canvas.

To reduce student stress and provide support for individual circumstances, each student may miss two (please read the whole sentence before worrying) participation activities without excuse without penalty and also infinite activities with approved excuses without penalty. You do not need to report or request anything for the first two; these will be applied automatically. Students with approved documentation can miss more activities, but to simplify things for students, you do not even have to explain to us why you are missing the first two. (Note that this applies to participation only and not for any other other course quiz or assignment.)

If you are uncertain about whether your circumstances are an excused absence, email EECS481Staff@gmail.com with your information and documentation. The course staff will review your information and apply any accommodations merited by course policies. Your email will be read by a real human.

Discussion Sections are not required, do not feature mandatory participation, and do not assess attendance. All discussion section materials are made available online.

This course cannot be taken remotely for full credit. While some computing courses admit remote participation, EECS 481 does not. This course places more of a focus on reading, speaking, prose and similar activities. While the lectures will be recorded and the assignments and exams can be completed online, other activities (such as participation, some discussions, certain quizzes, and certain in class programming) are in person.

Advice From Former Students

Read what former students say about lecture attendance.

Lecture Activities

To better accommodate individual student situations, the course will feature two different uses of lecture time slots.

The 1:30pm slot will feature a traditional live lecture delivery. Students can ask questions, take notes, and listen to the material presented. Students may be "called on" to answer questions or engage with the material. Participation is typically assessed via "how would you (and your partner) deal with topic XYZ?" questions collected on notecards, but other methods (e.g., in-class coding submissions) may be used.

The 3:00pm slot will feature a lecture recordings and practice. Students can watch current or previous lecture recordings (possibly at high speeds), make use of structured study aids (e.g., lecture summaries with blanks for you to fill in to guide you as you follow along, reinforcement activities, practice-with-a-human skills roleplays, etc.), ask questions of the course staff, or coordinate with partners on projects. Participation is typically assessed via sign-up sheets or entering a key word online, but other methods (e.g., in-class coding submissions) may be used.

Students may attend either lecture slot, regardless of registration, and may switch back and forth freely. All materials are always made available to all students regardless (e.g., the lecture from the 1:30 slot is recorded to everyone can see it, and any structured study aids or activities in the 3:00 slot will be posted as course resources). As long as you attend one lecture slot each class day you will receive full participation credit.

Grading Breakdown

There are two exams during the semester. Both are delivered remotely. The grading breakdown is as follows:

  • 1% Homework 0 — Dev Setup
  • 10% Homework 1 — Test Coverage
  • 10% Homework 2 — Test Automation
  • 10% Homework 3 — Mutation Testing
  • 10% Homework 4 — Defect Detection
  • 10% Homework 5 — Debugging Automation
  • 15% Homework 6 — Contribution
  • 5% Comprehension Quizzes
  • 5% Participation and Professionalism
  • 12% Examination 1
  • 12% Examination 2

By default, this class has no curve. If we do implement a curve (which has not happened in the last few semesters), we only ever curve up. If we do implement a curve, it would be calculated at the end of the semester (and not on a per-each-assignment basis).

The exams are intentionally given a low weight to reduce student stress and the impact of a "bad day". Similarly, because there is no curve, students are never in competition with each other.

Advice From Former Students

Read what former students had to say about how to succeed in this course.

Homework Assignments

There are six homework assignments for this course. The assignments involve the electronic submission of artifacts. Some (e.g., test cases) are graded automatically and admit immediate feedback. Others (e.g., prose descriptions) are graded manually. For certain assignments it is possible to work as a team.

Advice From Former Students

Read what former students say about the first homework assignments.

Reading and Comprehension

A critical part of software engineering is reading — both code and prose. To encourage you to keep pace with the material, we will randomly assign reading comprehension quizzes. These quizzes may consist of elements such as (1) comprehension questions about any readings, especially those new since the last quiz; (2) questions about the lecture materials; (3) a 4-sentence summary of lecture material; or (4) a random code word shared during a lecture. The goal is to encourage engagement and retention.

For on-line reading comprehension quizzes, you will have a 48 hour span near the associated lecture to begin your reading quiz. Quizzes are announced via their visibility on Gradescope, and not via any sort of mass mailing to the class. Once you begin the quiz, you will typically have 10 minutes to complete it. The quizzes are designed to be completable in 5 minutes, but additional time is given as a blanket accommodation. The quizzes are "open notes" (but are typically constructed to favor completing the reading before starting the quiz).

Software engineering is often more engineering than science: the basic concepts may be easy to grasp, but the trouble is found in the details. Questions such as "which of these methods works best in the real world?" and "what are successful companies actually doing?" are paramount. As a result, many of the readings are experience reports from companies (e.g., Microsoft, Google, etc.) or academic papers (e.g., with human studies). We have structured this course so that there is no expensive textbook and all of the readings are available on-line for free.

Some of the readings are marked optional. Next to each such optional reading is a small "advertisement" for it. The optional readings are not required for any class assignments, but there may be extra credit questions on exams or quizzes that reference them.

Advice From Former Students

Read what former students had to say about comprehension quizzes and examinations.

Late Assignment Policy

EECS 481 does not feature a generous late policy. Assignments, quizzes or exams turned in late typically receive zero points. (In some extenuating cases you may receive h% off, where h is the number of hours late.)

In other classes, late policies may be more lenient (e.g., students may receive a number of fungible "late days", etc.). EECS 481 is different because scheduling and risk for projects are explicitly topics in this course (they are covered in lecture and in the readings, etc.). Staying on schedule is part of the material for the course, and is thus part of the assessment. If you are working for a company that is shipping software by a particular date and you miss that deadline, your contribution will not be included.

To support students, all of the course materials, assignments and due dates are provided on the first day of class. No due dates are ever shifted to be earlier. You can access the autograder for any assignment as early as the first day of class. The freedom and responsibility rest with you. (For example, if you know that you struggle with deadlines, or if your other classes have exams around a particular point, you may want to "pretend" that an assignment in this class is due earlier than it actually is. If you miss your internal deadline by a bit, you can still make the official deadline. If you are used to courses where there are frequent email updates or calendar reminders, this is a good opportunity to practice setting up your own reminders for future situations in which organizational ones may not be available.)

All course materials submitted for a grade must be turned in by midnight on the last date listed on the course syllabus.

Regrade Policy

Regrade requests for exams, assignments, or written assignments must be received within one week of you receiving your score. All regrade requests should be made via Gradescope if possible (if a request absolutely cannot be made via Gradescope for a certain assignment or exam, please email it privately to the course staff). When we regrade an assignment we will look over it very carefully for correctness: it is possible that after a regrade you will end up with fewer points than before the regrade. Regrades should be treated with caution and used only when the graders have made a clear mistake evaluating your work.

The Waiting List, Course Permission, Overrides

Historically, the single most common student question about this class relates to the waiting list. The question is some variant of (or logically reduces to) "I am currently at position X on the waiting list; am I likely to get in to the class before the deadline?"

Now, for the most common student question:

Unfortunately, I have no special insight here (i.e., it has never happened that a student has said to me "I plan to drop in X days but won't drop today", so I do not have any secret information about the plans of other students to drop or not). The best we can do is use the past to predict the future (see raw data above).

Student Mental Health

Students often experience strained relationships, increased anxiety, alcohol or drug problems, feeling down, difficulty concentrating, family issues, or a lack of motivation. Student mental health concerns are quite common but we don't always talk about them. The University of Michigan is committed to advancing the mental health and well-being of its students. If you or someone you know is feeling overwhelmed, depressed, or in need of support, confidential mental health services are available on campus.


Your class work might be used for research purposes. For example, we may use anonymized student assignments to design algorithms or build tools to help programmers. Any student who wishes to opt out can contact the instructor or teaching assistant to do so after final grades have been issued. This has no impact on your grade in any manner.

Students interested in considering undergraduate research should make an appointment to talk about it. I am happy to discuss independent study projects, senior projects, paid research work over the summer, research work for credit, and graduate school.