https://eecs481.org
EECS 481 — Software Engineering
EECS 481 — Software Engineering Toggle navigation Software Engineering Lectures Assignments HW0 — Dev Setup HW1 — Test Coverage HW2 — Test Automation HW3 — Mutation Testing HW4 — Defect Detection HW5 — Debugging Automation HW6 — Contribution Homework Submission Exams Advice Switch Color Theme Lectures and Details (Winter 2025) Jan 19 - Everything at this point should be finalized. In case of any changes, we will post on Piazza and email all students. Websites Canvas — while this course does not use Canvas, we still create a Canvas entry for this course which points to this website. Every student enrolled in this course should have access to Canvas; from there, they can access 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? email EECS481Staff@gmail.com) Structured Activities — see the below "Attendance Policies" section to learn about how structured activities work. Discussion Section Materials — all discussion sections are optional. SSD approved extended exam time confirmation Google Form — you have to (1) first obtain approval from SSD and (2) then fill this form in order to get the extended exam time. Remote Office Hours Queue Meetings Section 001 / 002 (Live Lecture) — MoWe 3:00-4:30pm — STAMPS (recorded via CAEN) Primary Discussion Section — Fri 1:30-2:30pm — 1014 DOW — led by Adit and Hanchi (recorded via CAEN) Other (In-Person) Discussion Sections — all optional, all start Jan 13. Note: all discussion sections are converted to in person OHs, except for the primary discussion section. Thu 4:30-5:30 — 1008 FXB — Max Fri 9:30-10:30 — 1014 DOW — Rohit Fri 10:30-11:30 — 1014 DOW — Rohit Fri 11:30-12:30 — 1017 DOW — Leena Fri 12:30-1:30 — 1018 DOW — Hanchi Fri 2:30-3:30 — 1014 DOW — Adit Textbook None (but a personal computer or laptop is required) Instructors Brendan Kochunas Xinyu Wang Course Staff GSIs Adit Kolli Arjav Patel Hanchi Li Rohit Saripalle IAs Derek Yang Leena Khan Max Liu Prajna Polamarasetti Graders Rhea Bhanushali Ruiqi He Omkar Vodela Danny Jiang Ritij Jutur Dondati Nivedhitha Bridget Peil Varun Sadasivam Victoria Spencer Layne Stephens Alan Teng Jovan Yap Office Hours (all starting Jan 13) 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? 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 Policies In Person vs. Remote Participation All sections of this course share the same meeting location and time (see above), however, we provide two attendance modalities. You can choose to attend a lecture in person and receive participation credit for that lecture by completing an in-class in-person activity. We use iClicker for in-person participation check. At least one staff member will be sitting in the classroom to manage iClicker. Students who do not have access to iClicker can still get participation credit using a physical notecard: (1) ask the staff for a notecard right before the lecture begins; (2) write down your umich unique name on the card; (3) turn in the card at the end of the lecture. It is the student's responsibility to submit the card to the staff (before leaving the classroom). The staff then will record your attendance. In case you don't attend a lecture in person (for whatever reason), you can receive participation credit for that lecture by completing an offline "structured activity". It typically requires: (1) watching the lecture recording, and (2) attempting to solve a problem related to the lecture content. We use Gradescope to collect submissions. Note that, no matter which section you are officially enrolled in, you can always choose between these two participation modalities. Also, you can switch in between these two options throughout the entire semester: attending in person for lecture X and remote for lecture Y is totally fine. We encourage students to attend in person if possible so you can physically interact with you peers and instructors, but we also offer the flexibility to allow remote learning when that's preferred. We note a few differences between in person and remote participation: Grading: In-person attendance submissions are graded for completion. You get full points, as long as you submit your name. Remote attendance submissions are graded slightly differently. The key difference lies in the structured activities. We grade your submitted solution lightly: it's not required for your solution to be correct to get full credit, but we'd like to see your attempts. If you don't show attempts at all, you will lose some fraction of the total credit. As long as you show attempts, we typically give full points. Amount of work: In-person participation requires less work in terms of solving the problem since it's graded for completion, but students have to travel to the classroom which can be viewed as a different form of work. Remote participation has a structured activity that students need to attempt to solve, which is slightly more work, but is much more flexible in terms of where and when to complete it. Due dates: In-person participation must be done during lecture. However, remote participation checks are submitted via gradescope and are due typically by the end of each week (for lectures during that week). Number of checks: Typically, we have both in-person and remote check for every lecture, and you can get participation credit by either attending in person or remotely. It's possible (though rare) a lecture does not have any attendance check---we typically reveal that beforehand, but it's also possible we do not. The rationale of providing two participation options is to maximize flexibility; we make this change based on student feedback from past semesters. This approach is slightly different from prior offerings, and we welcome feedback from students. We tested this approach during Winter 2024, and students seemed to like it very much. So we are doing this one more time for Winter 2025. The goal of providing this flexibility is to achieve better learning, and we trust students can choose the right combination of in person and remote based on their individual situations. In general, the in-person option requires some overhead to travel to the classroom at the lecture time, while the remote counterpart might require some more time to attempt to solve the structured activity. With the exception of lecture attendance and participation, all other aspects of the course are identical across sections. In particular, all students have equal access to lecture recordings, participation activities, discussion section materials, the same homeworks, the same exams, the same due dates (except for participation assignments), etc. "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 (two in person, two remote, or one in person plus one remote) 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. Discussion Sections All discussion sections are in-person (unless otherwise specified). They are not required, do not feature mandatory participation, and do not assess attendance. All discussion section materials are made available online. Recordings of the primary discussion section will be made available to all students, while the rest of discussion sections are turned to in-person office hours. 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. What should I do if I am sick or need other accommodations? If you believe you have been exposed to or have COVID-19, you should follow the updated University instructions on the Campus Maize and Blueprint, which include contacting University Health Services at 734-764-8320 and isolating yourself. Let the course staff know and you will be excused from any in-person participation requirements on those days. We want to avoid any tension between the health of the community and your grade. (The length of time you should isolate depends on University policies and your health. The University currently recommends following the CDC guidelines.) For absences due to other illness or circumstances, coordination with the C.A.R.E. Center may be appropriate. If you miss an assignment deadline or in-class activity, we can be very lenient about extensions or makeups but only if you provide documentation. For example, for death or bereavement, a copy of the obituary or funeral program suffices; for illness or injury, any sort of doctor's note suffices. This policy follows that of other professors in the department. You may email EECS481Staff@gmail.com with supporting documentation (rather than posting it to Gradescope). Regarding Services for Students with Disabilities (SSD), we offer additional time on all examinations. No accommodations can be offered for reading comprehension quizzes, attendance activities, or homework assignments, but all due dates are posted at the start of the semester and all assignments can be completed remotely. If relevant, you may want to enroll in Section 2 so that you are graded on non-timed participation activities. Advice From Former Students Read what former students say about lecture attendance. 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. How can I calculate my projected 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. 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. There are no secret tricks or hidden weightings, all of the grading is based just on the numbers you can see. Similarly, suppose, hypothetically, that there are only two reading comprehension 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 Comprehension Quizzes portion of your grade (which is 5% of your total course grade). As an example, suppose only HW1 and two reading quizzes have happened so far (as above). A student who scored 19, 11, 13, and 4 on the HW1 parts would have (19+11+13+4)/51 = 92% on HW1 overall. If that student also scored 1 and 3.5 on the two quizzes, that student would have (1+3.5)/7 = 64% on the quizzes. The projected grade would thus be (10%*92 + 5%*64) / 15% = 83% (a "B" grade in this course). Note that the actual course grading does not round for intermediate calculations and instead uses floating point numbers. Students often wonder what grade will be needed on subsequent assignments to pass the class (or meet any other goal). This can be computed with linear algebra. Continuing the previous example, suppose the student with an 83% "so far" on 15% of the course wants to get an 93% ("A") grade overall. What score, Z, would the student need on the remaining 85% of the course material for the total to be 93? The student solves the equation 83*15 + Z*85 = 93*100, or Z = (93*100 - 83*15) / 85, yielding Z = 95. So the student would need to get about 95% on the rest of the course material to have an overall score of of 93%. A grade projection service is typically not available, but students can project grades and resolve queries directly using mathematics. While reading comprehension and participation vary based on how often they are assessed, for other assignments, the last time the course was offered: HW0 was graded out of 1 point HW1 was graded out of 51 points (20+12+14+5) HW2 was graded out of 25 points HW3 was graded out of 17 points (12+5) HW4 was graded out of 50 points HW5 was graded out of 31 points (6+5+15+5) HW5 was graded out of 31 points (6+5+15+5) HW6 was graded out of 70 points (20+50) Exam 1 was graded out of 100 points Exam 2 was graded out of 100 points In previous semesters, the grading cutoffs (each "+" and "-" grade has 3 points associated with it) were: 60% = D- 63% = D 67% = D+ 70% = C- 73% = C 77% = C+ 80% = B- 83% = B 87% = B+ 90% = A- 93% = A 98% = A+ 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. What happens if a website is unavailable? If the autograder.io 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 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 day 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 personally are unable to attend a lecture (e.g., if your internet access disappears), all of the due dates and times remain unchanged (plan ahead!). In extreme cases, send proof (e.g., a photo of the dead router or network selection screen) to EECS481Staff@gmail.com for possible (but not guaranteed) accommodations. With these policies, we are attempting to strike a balance between being as supportive as possible of students while holding students to similar standards of preparation and accountability. We may revisit these policies later in the semester if there are extenuating circumstances. 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 72 hour span near the associated lecture to begin your reading quiz. Quizzes are announced on Gradescope, typically on Wednesday. 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?" If you are on the waiting list or add the course late, you must complete any assignments (including participation) and bring me any forms (e.g., SSD forms) as if you were a registered student. If you add late or come in off the waiting list, all of the assignments (including participation) are due for you at the usual time, with no extension. If you are on the waiting list and do not have access to the Autograder or Gradescope submission websites, please email the course staff. It is my firm intention to fill the class up to the enrollment limit with students from the waiting list, in order. There are two relevant details: The system often seems to keep two separate orderings: one for lectures and one for discussion sections. It is unknown to the instructor which one is used. The instructor does not have any special view into waiting list orderings (i.e., students often want to know their "true waiting list position", but we do not have any such information). There is nothing 481-specific about this: students come in off the waiting list in an "automated" fashion, and the instructor does not have any particular view into that. In theory, 481 should operate just like every other CSE class in this regard. The undergraduate advising office may direct that certain students be let in (or swapped between electives or sections or whatever) so that everyone can graduate on time. This is basically the only reason we would not use the default waiting list ordering. For various reasons, students may be let in to this course every few days, in batches, not every minute. If you are first on the waiting list and the course is currently at 99/100, rest easy: you will be let in to the course in the next batch. Although your apparent deadline to sign up for courses is Day X, if you are on the waiting list for this class and a slot opens up after that date, you may still be added (this has happened in previous semesters, but is not a guarantee). Punam Vyas, the Course Scheduling Coordinator, adds students to this class manually from the waiting list, and she has the power to add students after Day X even though you do not. Yes, it is scary to trust that you will be added to a course after the manual student deadlines. If you are a graduate student, know that the EECS undergraduate advising office policy has been that graduate students may only be allowed to take the course for credit after all undergraduates are off the waiting list. There is a special list the graduate students can sign up on; contact the CSE Undergraduate Advising Office (ugadmin@eecs.umich.edu) for more information. Regardless of your enrollment status, you are welcome to sit in on the class (as long as you do not take a seat in a room that is at capacity). Anyone who is interested may attend the lectures. Now, for the most common student question: The first time this class was offered, it started with 100/100 students enrolled and 60 on the waiting list. By the time things settled down, we ended up with 102/100 students enrolled and 20 on the waiting list (i.e., 20 who did not get in). (The "extra" students relate to that advising office exception detailed above.) The second time this class was offered, it started with 120/120 students enrolled and 22 on the waiting list. It ended with 118/120 and 0 on the waiting list. The third time this class was offered, it started with 154/154 students enrolled and 58 on the waiting list. At the add/drop deadline, it had 153 students enrolled and 0 on the waiting list. The fourth time this class was offered, it started with 157/160 students enrolled and 85 on the waiting list. At the add/drop deadline, it had 156/160 student enrolled and 35 on the waiting list. The fifth time this class was offered, there were two sections. We had a total of 245 student enrolled out of 258 slots after the add/drop deadline. In Fall 2021, there were 151/154 students enrolled with 78 on the waiting list on the first day of class. By the middle of the semester, enrollment was 156/154 with 0 students on the waiting list. In Winter 2022, there were 300 students enrolled and 300 on the waiting list on the first day. By the last day of the add/drop period, there were 104 students on the waiting list. 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. 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.
en
en
https://eecs481.org
Edit your site?
What are you doing?