Lectures and Details (Winter 2026)

Websites

Canvas — this course does not use Canvas (the Canvas entry points to this website)

Piazza (need access? email EECS481Staff@gmail.com)

Autograder Homework Code Submission (need access? email EECS481Staff@gmail.com)

Gradescope Homework Report Submission (need access? use "Entry code: 2D7NG2" or email EECS481Staff@gmail.com)

Discussion Section Materials — all discussion sections are optional.

SSD approved extended timed assignment confirmation Google Form — you have to (1) first obtain approval from SSD and (2) then fill this form in order to get the extended time for timed assignments.

Remote Office Hours Queue


Meetings

Section 001 (Live Lecture) — TR 1:30-3:00pm — 1365 LCSIB (recorded via CAEN)

Primary Discussion Section — Time To Be Announced — Online — (recorded)


Textbook

None (but a personal computer or laptop is required)


Instructor

Course Staff
Danniell Hu
Victoria Spencer
Derek Yang

Office Hours (all starting Sep. 7)

Overview

This Course Considers ...

  • How can you get a patch accepted in a large software project?
  • Can we be confident that your code is correct?
  • How can we best use and guide AI automation?
  • 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, making effectively use of AI, 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 and AI 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 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. The workload is primarily reading rather than writing code manually.

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 Policies and Participation

This course provides support for in person instruction:

In some other semesters, an asynchronous remote section ("481-002") was also offered. For Fall 2026, no remote option is available. This is a result is reduce course staffing availability for 481.

"Two Plus Infinite"

To reduce student stress and provide support for individual circumstances, each student may miss two (please read this whole sentence before worrying) graded participation activities without excuse without penalty, and also infinite graded 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 or exam.)

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.

The two no-excuse no-penalty instances are not shown in the Gradescope reports of attendance/participation. Instead, the monthly Gradescope reports of attendance/participation show the raw amounts, and the +2 is added at the end of the semester when final grades are calculated.

Discussion Section

This course features a single online discussion section in which a course staff member presents prepared material (e.g., demonstrations about how to get started on the homework, slides giving alternate presentations of course concepts, etc.). The discussion section is online because in-person sections are usually poorly-attended and are not seen as a good use of 481 staff resources. The discussion section is not required, does not feature mandatory participation, and does not assess attendance. All discussion section materials are made available online. Recordings of the discussion section are made available to all students.

Waiting List

If you are currently on the waiting list but hope to eventually take this course, you should choose the remote participation option until you're officially enrolled into one of the sections. This means, you should watch the lecture recordings offline and complete the participation check offline. This way, we have your participation record on file and we can give you participation credit should you later be officially added to the course. On the other hand, if you do not complete such participation checks, you will lose their points when you are officially enrolled. Basically, you should pretend you're taking the course remotely and complete all the required work, until you are officially part of the class.

You should also complete other components (such as homeworks) while you're waiting. We do not offer late due dates for late enrollments.


Advice From Former Students

Read what former students say about lecture attendance.

Grading Breakdown

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
  • 10% Reading Quizzes + Policy Checklist Quiz
  • 8% Participation and Professionalism
  • 1% Examination Checkpoint
  • 15% Examination(s) or Final Project

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 exam is intentionally given a low weight to reduce student stress. Similarly, because there is no curve, students are never in competition with each other.

Calculating Your Grade

For each category in the grading breakdown above, add together all of your points and divide by the total number of points. Then you weight each category as listed above.

There are no secret tricks or hidden weightings, all of the grading is based just on the numbers you can see. There are no "minimum thresholds" where you need to get a certain amount on a particular assessment category (like homeworks or exams) to pass the class.

For example, if HW1a is 20 points, HW1b is 12 points, HW1c is 14 points, and HW1d is 5 points, you would add up your points from those four sources and divide by 51. That result would be your overall HW1 score, which (following the breakdown above) is 10% of your grade in the course. Similarly, suppose that there are only two quizzes: the first worth 3 points, the second worth 4 points. You would add up your points, divide by 7, and that would be your total for the Quizzes portion of your grade.

While reading comprehension and participation vary based on how often they are assessed, for other assignments, based on the last time the course was offered:

We use standard rounding on your final grade (e.g., 92.5% becomes 93%, 92.4% becomes 92%). In previous semesters, the grading cutoffs (each "+" and "-" grade has 3 points associated with it) were:

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 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 on Gradescope, typically on Wednesday. The quizzes are designed to be completable in 5 minutes. (At the start of the semester, additional time may be given to some students 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.

Scheduling and Deadlines

Real-world software engineering jobs often involve multiple deadlines associated with different tasks, people and systems. A software developer might have a daily standup meeting in the morning, a pair programming meeting scheduled for the afternoon, and a code check-in due before the end of the sprint or feature freeze.

Similarly, EECS 481 students often have different deadlines and assignments. In one week, you might have to show your participation for a lecture via one system, completing a reading quiz via another system, and turn in a programming assignment via a third system. Students often report that they struggle to keep track of a handful of assignments. Schedule, especially in the face of risk, is a key course topic: it is something we will teach, and you will learn, in EECS 481.

We intentionally do not provide a unified list of assignments. There is no comprehensive list on Canvas, for example. This gives students an opportunity to practice and improve their scheduling skills. In addition to the management level scheduling considerations we discuss in the lectures, we also provide a student-facing video with suggestions about how to practice and improve your scheduling skills (e.g., by setting recurring Google calendar reminders, or by investigating approaches like Pomodoro or Timeboxing).

Regrade Policy

Regrade requests for coding 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 assessment, 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.

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.

CSE Undergraduate Advising Office Resources

Alongside scheduling advising appointments, regular virtual drop-in advising, and Fall/Winter semester peer advising, the Computer Science and Engineering Undergraduate Advising Office (CSE UAO) provides the following resources:

Where can I find the EECS 481 webpage?

The UM EECS 481 webpage can be found at https://eecs.481.org. It is the responsibility of the student to locate course materials.

Students can find this information in multiple ways:

We discuss ways of locating courses both because students are sometimes uncertain (e.g., "I added the course late and decided not to look up the course before then, am I still bound by the course policies?" "Yes.") but also because this may help students taking future EECS courses build up a toolkit of ways to locate course information when planning course enrollment.

Research

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.