EECS 481: Software Engineering W21


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


  Kevin Leach
  kjleach at
  Office Hours: Zoom Link
  T 12PM - 1:30PM Eastern Time;
  W 11AM - 12:30PM Eastern Time

Course Staff

Parth Aggarwal

Hammad Ahmad

Arjun Chaliha

Kareen Faisal

Hridey Sahgal

Meera Shivakumar

Mollie Bakal

Course Calendar and Office Hours
(starting Wed Jan 20)

Piazza Forum Homework Code Submission (you will be automatically added on January 18. After that, if you need access, email

Gradescope Homework Report Submission (need access? use course entry code YVDDGP)


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.

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, and Claire Le Goues.


This course is delivered entirely remotely. There is no physical room or office in which to meet.

Live attendance at the lectures is required and significantly contributes to the participation portion of the course grade. Students with extenuating circumstances, such as living in a different time zone or certain medical conditions or SSD accommodations, should complete this form or email both the instructor ( and with documentation. Regretfully, time conflicts with other courses or jobs cannot be accepted.

Lecture recordings will be available via the course Piazza.

To encourage you to keep pace with the material, we will randomly assign quizzes for some lectures. These quizzes may consist of (1) comprehension questions about that day's readings, (2) questions about that day's lecture materials, (3) a 4-sentence summary of that day's lecture, or (4) a random code word shared during the lecture. You will have 24 hours to submit such quizzes after they are assigned in lecture. The goal is to encourage engagement and retention.

With a small number of exceptions (e.g., for Homework 4), no graded assignments or graded participation will be recorded during discussion sections. However, students are encouraged to attend one discussion section each week.

The course schedule is available in advance so that you can plan accordingly.

Advice From Former Students

Read what former students say about lecture attendance.

Office Hours Policy

During scheduled office hours, you join the corresponding link provided on the calendar (each staff member has their own OH Zoom link). We will not visit you in a room you create. You must be present in the staff's Zoom room or we may skip over you. If there is a large crowd, join the queue at and join the EECS 481 queue. We will call students out in the main Zoom room in the order in which they appear on the OH queue. Again, we will not visit any room that you create; you must be present in the staff-created Zoom room.

Remote Education and Technical Difficulties

If the or gradescope assignment websites are inaccessible to all students for a short time, all due dates and times remain unchanged (plan ahead!). If they are down for a longer period of time, the course staff will likely extend the deadline slightly and post a notification to that effect. We will make such determinations on a case-by-case basis.

If you personally are unable to access an assignment website due to a temporary internet outage on your end, all of the due dates and times remain unchanged (plan ahead!).

If the main course webpage is inaccessible to all students, all due dates and times remain unchanged. (It is hosted by the EECS department, not by the professors personally, and occasionally exhibits service interruptions.) If it is down for a longer period of time, the course staff will likely extend a deadline slightly and post a notification.

If the course staff are unable to deliver a lecture at the scheduled time (i.e., if it fails for all students), no live participation grades for that lecture will be counted. If the lecture has not started within fifteen minutes of the scheduled time, you may consider it canceled. The course staff will post a notification and deliver the lecture later. No attendance will be taken at that make-up time, and the lecture recording will be made available as usual.

If you are unable to attend one or more lectures due to technical difficulties, just send an email to us at so we can address it.

With these policies, we are attempting to strike a balance between being as supportive as possible of students and remote education will holding students to similar standards of preparation and accountability. We may revisit these policies later in the semester if there are extenuating circumstances.

Technical Elective

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.

Reading and Comprehension

We do not require purchasing an expensive textbook for this class. Instead, we have carefully curated a number of freely-available readings associated with each lecture. You can view the required readings for each lecture on the lecture schedule.

Because software engineering is often more engineering than science, the basic concepts are often 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). These detailed readings serve to flesh out high-level concepts that can otherwise be introduced via Wikipedia without costing you money.

The readings will help you understand the lecture material, prepare you for the quizzes, and prepare you for some exam questions. Please expect to complete the readings before the associated lecture.

Finally, you may notice that some of the readings are marked optional. Next to each such optional reading I have included a small "advertisement" for why you might want to take a look. 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.

Participation, Quizzes and Grading

In-class chat: You are expected to be present in lecture and respond to in-class questions. We will use the chat log to check if you were present and responsive to in-class questions on each day of the lecture. If you are excused by the staff from attending live lecture, we will make alternate grading arrangements (e.g., your final score may be computed out of 95 instead of 100 or similar).

Reading quizzes: For reading comprehension quizzes, you will have 24 hours from the end of the lecture period to begin your reading quiz (via Gradescope). Once you begin the quiz, you will typically have 10 minutes to complete it.

Homework Assignments

There are seven 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.

Grading and Examinations

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

  • 1% Homework 0 — Dev Setup (Optional)
  • 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

Advice From Former Students

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

Regrade and Makeup Policy

Regrade requests for exams, assignments, or written assignments must be received within one week of you receiving your score unless otherwise specified. All regrade requests should be made via Gradescope (if a request absolutely cannot be made via Gradescope for a certain assignment, please submit it privately on the course forum). 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.

If you miss an assignment deadline or in-class activity, we can be very lenient about extensions or makeups, but we must have some amount of documentation for accounting and student equity. For example, a doctor's note or discharge note if you are sick. This policy follows that of other professors in the department. Please email me at and the course staff at to submit documentation and/or discuss our particular situation.

Late Policy: If you miss an assignment deadline without an approved, documented extension, you may receive no points for that assignment. In some caes, you may elect to receive h% off, where h is the number of hours late the assignment was submitted. No late submissions will be accepted after 4 days (96 hours).

The dates for the in-class examinations are posted well in advance. To request a rescheduled examination (e.g., for reasons other than a documented one as above, etc.), you must notify us via email at (privately) at least one week before the date of the examination. We cannot guarantee that we will accommodate alternate exams. If you miss an exam for a documented extenuating circumstance, we may consider doubling the contribution of the other exam, or we may find some other resolution at the instructor's discretion.

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

The Waitlist, Course Permission, Overrides

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

Now, for the most common student question:

I do not have an other information regarding waitlists or how likely it is that you will get off the waitlist. Ultimately, this question is asking whether another student will drop the class. I have already extended the enrolment cap to 280 slots — no other information is available to me, and I have no individual control over the waitlist (instead, email the undergraduate advising office if you have other questions).

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.