Lectures and Details (Winter 2019)

Meetings

Lecture — MW 4:30-6pm 1670 BBB, starting January 9th (recordings available on Canvas, attendance required)

Discussion 011 — F 9:30-10:30am 1005 DOW, starting January 18th (led by Sabrina)

Discussion 012 — F 10:30-11:30am 1018 DOW, starting January 18th (led by Sabrina)

Discussion 013 — F 1:30-2:30pm 1014 DOW, starting January 18th (led by James)

Textbook

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

Course Staff

Sabrina Benge

James Perretta

Ryan Krueger

Office Hours
(starting January 14th)

Mon 10:00-11:00 — Duderstadt basement, Ryan

Mon 2:30-3:00 — 4636 BBB, Wes (check 2733 if not in 4636)

Mon 3:00-4:30 — Duderstadt basement, James

Tue 4:00-7:00 — Duderstadt basement, Ryan

Wed 3:00-4:30 — Duderstadt basement, James

Thu 4:00-6:00 — Duderstadt basement, Ryan

Fri 11:30-1:30 — Duderstadt basement, Sabrina

Sun Noon-2:00 — 2733 BBB, Sabrina

Websites

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.

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.

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.

Attendance

This course has mandatory attendance, including in-class examinations and graded quizzes. Students will not be able to take this course and another course that meets at the same time. The lectures are recorded, but serve mostly as a review aid. You have my sympathies: I wish we were able to set the course schedule to minimize such course conflicts. (Disclaimer: the course staff are not responsible for candy-based injuries.)

Advice From Former Students

Read what former students had to say about lecture attendance.

Readings

One of the most common student complaints is about buying textbooks that are both expensive and out of date. As a result, I have structured this course so that there is no textbook and all of the readings are available on-line for free.

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 flip side of this is that you should actually do the reading. It will help you both in terms of understanding the lectures and also in terms of completing the assignments.

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 that reference them.

Advice From Former Students

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

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.

Grading Examinations

There will be two in-class written examinations for this course. No final examination is currently planned. Course grading will center on homework assignments and examinations. The approximate grading breakdown is as follows:

  • 10% Homework 1 — Test Coverage
  • 7% Homework 2 — Test Automation
  • 10% Homework 3 — Mutation Testing
  • 7% Homework 4 — Defect Detection
  • 10% Homework 5 — Debugging Automation
  • 15% Homework 6 — Contribution
  • 5% Reading Quizzes
  • 18% Examination 1
  • 18% 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. 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 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.

If you miss an assignment deadline without an approved, documented extension, you may receive no points. for that assignment. In some extenuating cases you may receive h% off, where h is the number of hours late.

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 the course forum (privately) at least one week before the date of the examination. Note that requests need not be granted.

All course materials submitted for a grade must be turned in by midnight on the last date listed on the course syllabus (Monday, April 16th).

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:

There is really no other information I can tell you. Because of our policy of letting people in directly off the waiting list, all questions that sound similar to "what are my odds of getting in from position X?" or "should I stick with this class even though I am at slot Y on the waiting list and there are Z days left?" logically reduce to "what are the odds that K other people drop the class?". This is because once the class is full we only let another student in when someone drops. So questions about you adding are really questions about someone else dropping.

Unfortunately, I cannot predict the future. 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). The best we can do is use the past to predict the future (see raw data above).

In the past the instructor spent multiple hours going over this with individual students; going forward, all waiting list questions will be directed here. No additional information is available.

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.