CS 4278/5278: Principles of Software Engineering S24

Meetings

Lecture — TR 1:15PM - 2:30PM FGH 134

Textbook

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

Instructors

  Yu Huang
  yu.huang at vanderbilt.edu
  Office Hours:
  T 3:00PM - 5:00PM Central Time, Sony 4108;

Course Staff

  Zihan Fang
  zihan.fang at vanderbilt.edu
  Office Hours:
  Monday 3:00-5:00 pm, Sony 4118
  Thursday 3:30-5:00pm, Sony 4118

  Anda Liang
  anda.liang at vanderbilt.edu
  Office Hours:
  Wednesday 3:00-5:00pm, FGH 201
  Friday 3:00-5:00pm, FGH 201

  Eric Li
  jiliang.li at vanderbilt.edu
  Office Hours:
  Tuesday 11:00am-1:00pm, FGH 201
  Friday 11:00am-1:00pm, FGH 201

Websites

Piazza Forum (you will be automatically added on January 8. After that, if you need access, email the course staff)

Autograder: Homework Code Submission (you will be automatically added on January 8. After that, if you need access, email the course staff)

Brightspace: Only for Homework Report Submission and Score Release

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 at UMich and VU say about whether or not to take this course (referred as EECS481 at UMich, CS4278/5278 at VU).

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. Westley Weimer, Kevin Leach, Prem Devanbu, Christian Kästner, Ciera Jaspen, Marouane Kessentini, and Claire Le Goues.

Attendance

This course is delivered in person. However, due to COVID, the guest lectures will be delivered remotely. We are also open to potential changes (e.g., if the instructors are tested positive for COVID). Recordings of lectures are available for students who are in quarantine.

Live attendance at the lectures is required and significantly contributes to the participation portion of the course grade. Students with extenuating circumstances, such as certain medical conditions or SSD accommodations, should email the course staff in advance (see more details in Regrade and Makeup Policy). Regretfully, time conflicts with other courses or jobs cannot be accepted.

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. Students will submit such quizzes in class (bring papers and pens). The goal is to encourage engagement and retention.

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

Technical Difficulties

If the autograder or Brightspace 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 for a short time, all due dates and times remain unchanged (It is hosted by the Institute for Software Integrated Systems (ISIS) at Vanderbilt, not by the professors personally). 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/office hour at the scheduled time , no live participation grades for that lecture will be counted. For rare cases, if the lecture has not started within fifteen minutes of the scheduled time, you may consider it canceled (though we will try our best to post a notification in advance). 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.

If you are unable to attend one or more lectures due to personal situations and technical difficulties, just send an email to the course staff so we can address it.

However, all the technical issues in the home assignments/projects (e.g., your VM does not work; you don't know how to use bash) will not be considered for deadline extenstions. In fact, it is the students' responsibility to address such issues as part of the assignments :)

With these policies, we are attempting to strike a balance between being as supportive as possible of students and holding students to resonable 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 and one of the three CS DEPTH courses for undergraduate students. It is also a course for graduate students (i.e., CS5278).

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 an "easy" class in the CS departemnt, but two notches easier than a "hard" class in the department.

Advice From Former Students

Read what former students at UMich and VU had to say about (280 referes to the Data Structure course, equivalent to CS2201 at VU) 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 at UMich had to say about comprehension quizzes and examinations.

Participation, Quizzes and Grading

You are expected to be present in lecture (checked by quizzes) and respond to in-class questions. 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). For each in-class quiz, you will have around 5 minutes to finish it on a piece of paper.

Homework Assignments

There are seven homework assignments for this course. HW0-5 are the same for undergraduate and graduate students. HW6 is set up differently for undergraduate and graduate students, but both vesions require students to start early. Students have the HW4 and HW6 as the possible extra-credit opportunities. 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 (no more than two students on a team). Undergraduate and graduate students are not allowed to team up for HW6.

Advice From Former Students

Read what former students at UMich say about the first homework assignments. Note the HW6 feedback is only for the HW6-Undergrad project (the graduate HW6 is only applied at Vanderbilt).

Grading and Examinations

There are two exams during the semester. Both are delivered in-person (we may change it to remote depending on COVID situation and school policy). 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
  • 13% Homework 4 — Defect Detection and Unit Testing (No Teams Allowed)
  • 10% Homework 5 — Debugging Automation
  • 15% Homework 6 — Contribution
  • 5% Comprehension Quizzes
  • 2% 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.

Grace Period, Regrade/Makeup and Late Policy

Grace Period: Every team (one or two students per team) has two grace periods during the entire semester. But Note that NO GRACE PERIOD for HW6b is ever allowed. Hw6b is a hard deadline (there is no exception in the course history for HW6b since the first day this course was designed and released and we do not plan to change it). If you decide to use a grace period, you are required to email the course staff before the original deadline. For example, if a homework is due on 11:59pm, Jan 20, you are required to email the course staff before 11:59pm, Jan 20 about applying the grace period. Please note that each grace period can only be applied once to one single deadline (not an entire homework). For example, if you use a GP on HW1a, this GP does not apply to HW1bcd since HW1bcd has a different deadline. Every homework deadline can be applied with at most one grace period. When grace period applies, you will have a four-day extension and receive no late penalty before the renewed deadline. Using the previous example, you can submit your homework by 11:59pm, Jan 24 without any late penalty. Otherwise, the regular late policy applies.

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 Piazza (private posts) with a subject starting with "REGRADE". 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 be notified before the activities via emails to the course staff (emergencies can be exempted: you can email us later. But note that the course staff will evaluate whether a situation is urgent).

Late Policy: If you miss an assignment deadline without an approved, documented extension, you may receive no points for that assignment. In some case, 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 email the course staff (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 (Central Time) on the last date listed on the course syllabus.

The Waitlist, Course Permission, Overrides

Historically (including the few weeks since I started at Vanderbilt!), 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 on the waitlist; am I likely to get in to the class before the deadline?"

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. Vanderbilt Univeristy 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 undergraduate research should make an appointment with me to talk about it. I am happy to discuss about independent studies, VUSRP, SUGRE, the ISIS summer intern program, paid research work over the summer (e.g., my own REU opennings), research work for credit, and graduate school applications.