Coursework Descriptions


CS 340 is a prerequisite for CS 428. Some of the material in CS 428 overlaps a bit with CS 340 (for example Software Testing). You are responsible for the treatment of all the material in this course, even where it's covered in CS 340.


Class participation is a significant part of the experience of this course. The software engineering field is very broad and there are many topics you should be exposed to, but there isn't sufficient time in a single semester for all the projects and labs you'd be blessed by doing. Lectures are therefore critical to learn and discuss the breadth of software engineering topics that you should be exposed to as you head off to begin your professional careers.

You'll notice in the Schedule that there are quite a few days designated "Team meetings, Consulting." These days are largely set aside for group meetings, inspections, and as opportunities to bring the teacher in as a consultant to deal with specific questions and concerns. These times represent opportunities for company members to meet when we can guarantee that nobody has any conflicts!

Independent of how a class period is designated on the class schedule, we reserve the right to be flexible to meet our collective needs. We can shift the schedule any time it needs to shift. If teams need a meeting day when a lecture is scheduled, or a chunk of time at the beginning or end of a given class period, just request it and we'll make it happen.

In order to free time up for team meetings, we have off-loaded a number of lectures into video podcasts. Please see the section on Podcast Lectures for more information about these podcasts.

The following are important guidelines relative to attendance:

  • Attendance is mandatory every day of the semester whether the schedule identifies a lecture topic or "Team meetings".
    • Obvious exceptions are any days designated "No Class".
  • A student loses 1.5% of the course grade per absence, up to a maximum penalty of all attendance points.
    • If you have legitimate conflicts, you must communicate these to the instructor in as timely a manner as possible.
      • Before the fact is the epitome of timely, and is the ideal situation.
      • If the conflict is unforeseen, please communicate as quickly as you can after the fact.
    • Excused absences require make-up work where possible.
    • Flexibility in excusing absences without penalty is at the discretion of the instructor. Please keep in mind that we are quite forgiving as long as there is honest, open, and timely communication!
  • An attendance roll will be passed around class each day.
    • You are to personally initial this attendance roll.
    • You may not initial for another student, independent of whether that student is present or absent.
  • Some scheduled lectures have assigned readings. The readings are part of the Lecture Readings score. See Readings.

Podcast Lectures

In order to free up class time for team business and discussion, I have prepared video podcasts for many of the lectures. You are required to do the readings for these podcasts and then watch them on your own (or in small groups). Watching these podcasts counts toward the "Podcast Lectures" score. Doing the accompanying reading (where assigned) counts toward the "Lecture Readings" score.

The following are important guidelines relative to podcast lectures:

  • You must complete at least one podcast lecture each week.
  • You may front load by completing more than one podcast per week early and then skipping later, but you cannot do the opposite by skipping podcast lectures early and then making them up later.


We have been engaged since 2007 in a real world, on-going effort to create tools that will bless the family history community. Each semester we continued the work of prior semesters (for better or worse) picking up where they left off. This semester (Winter 2013) we experience a disconuity because we actually shipped a product in 2012 and launched a company (Kinpoint, Inc.). That's a huge accomplishment representing six years of effort! But in practice it means that for the first time since 2007 we aren't simply picking up the work of prior semesters. Instead, this semester we're open to launching a number of projects, the best of which may be continued as part of the next half decade of CS 428.

The project effort is worth almost half the course grade. Your score in this portion is primarily about effort, commitment and personal management.

Class as Consulting Company

In order to get some work done during the semester with such a broad set of requirements, we have historically organized the entire class into a single software development organization, complete with roles and hierarchy. Given the large class size and aforementioned discontinuity, we'll be forming several consulting companies, each functioning independently, but in a similar manner. A company manual has been prepared and needs to be read in the first week of the semester.

Think of yourselves as a consulting company with a four month project sponsored by a generous donor who wants to do something great by the end of April.

Corporation Organization

In the first two weeks of the semester we will identify specific roles that will need to be filled to help the project be successful. Possible roles include Project Manager, Development Manager, Test Manager, Architect, Marketing Manager, Development Leads, Testing Leads, Developers, Testers. This is not set in stone, so we need to decide together how best to organize.

In order to help individuals in their roles, within the first two to three weeks of the semester I will conduct training and strategy meetings with each group of individuals (managers, developers, testers, etc.) to orient to the roles, fill in educational gaps that will help you to be successful, and help kick start your efforts on the project.

Rough Requirements

To this point in your education, you've generally been fed a damaging lie about requirements: that requirements are something you get from a professor's web page, that they're unambiguous (otherwise you get indignant), and that your job is to execute on those requirements to perfection and then pass that off to a TA. At the risk of frightening some of you, the real world doesn't even remotely approximate this fiction.

The reality is that customers don't know what they want, and that you still are supposed to deliver what they want (but can't tell you). If you get it right, you make money and grow your company. If you get it wrong, there are layoffs. Requirements are a very very hard problem!!

Regular Accountability

Given the unstructured nature of the project(s), we are instituting project planning, management, execution, and reporting at a one week granularity throughout the semester.

The following are important guidelines relative to regular accountability:

  • Each student in the class is expected to spend at least 7 hours each week engaged in the project phase of this class.
    • Managers have responsibility to see to it that there is enough work on the schedule to keep everyone busy.
  • Managers must drive specific project plans with one week deliverables for his or her team (7 hours of work per individual).
    • Managers must use appropriate management tools, including Pert and Gantt charts, updated weekly.
  • Each student must provide a weekly report, due by midnight on each Monday. The report must include the following information:
    • Quantitative report of number of hours personally spent on the project.
    • Qualitative report of the nature of the work personally spent on the project.
    • Self-evaluation of personal productivity during the week (ten-point scale).
    • Peer evaluation of fellow team members on the same ten-point scale. Management team members evaluate fellow managers.
    • Evaluation of all direct reports (if in a leadership position).
    • Evaluation of your direct manager or leader.
    • Report of lecture podcast(s) viewed and associated readings.
  • The executive team must present a formal briefing report to the sponsor (me) on the Monday of weeks 4, 8 and 12, and to the entire company on the last day of class.



We are reading three books this semester:

  • "The Mythical Man-Month" by Frederick Brooks, Jr.
  • "Peopleware" by Tom Demarco and Timothy Lister
  • "Dreaming in Code" by Scott Rosenberg

Reading each of these three books earns you 2% of the total course grade (for a total of 6%).

If you would like to read an alternative third book, make me a proposal prior to the date of completion of the reading schedule for Peopleware. I tend to be pretty accommodating.

You may read one or two additional books related to Software Engineering for extra credit of up to 2% each. Extra credit books must be approved by the instructor. All books in the accompanying Book List are already approved.

Lecture Readings

The schedule identifies readings for a number of class periods and podcast lectures. These readings need to be read before class on those days (or before watching the podcast lecture). Important: Independent of my unpredictable in-class lecture pace, your required reading for a given day is whatever is indicated on the schedule for that day. It's very simple!

  • Students will report readings for both in-class readings and podcast lecture readings in the weekly report.
  • The points available for Lecture Readings are divided evenly by all of the specific articles assigned to be read. Missing 1/n of the assigned articles incurs a penalty of 1/n of the available points for Lecture Readings.
  • Please keep in mind that, independent of attendance penalties for failure to do the assigned readings, there are inevitable additional consequences that show up around exam time.


The midterm exam covers material from the first half of the course.

All questions are short-answer and non-regurgitative. We generally don't expect you to memorize arbitrary details or lists. (There are some things you need to know, and some of you may have to resort to memorization to pull that off. But I generally hate rote regurgitative exercises.) We do expect you to understand the concepts presented in the course and be able to write briefly and intelligently about those concepts.

We normally reserve a lab in the TMCB so you can sit at a computer and type your exam responses rather than engaging in the barbaric ancient practice of writing with a pencil on a piece of paper.

IMPORTANT! No student will be given a passing grade in this course who does not achieve an average score of at least 60% on the Midterm and the Final. This is absolutely non-negotiable.


This short essay is an opportunity for you to strut your writing prowess on any topic this semester that floats your boat. While the topic is not constrained, you are expected to use effective writing, excellent analysis, and provide thoughtful insights. This is not a book report! Please focus on your own ideas and insights.


The following are important guidelines for the essay:

  • Your topic is unconstrained, except that it must relate to one of the relevant Software Engineering topics we discussed this semester.
  • I'd like your document to be between 500 and 700 words. There's nothing magic about the length other than to give you a sense of magnitude while assuring that the instructor can actually read all the reports in a finite amount of time.
  • Please employ your best writing! You will be graded down for typos, grammatical problems, difficult readability, etc.
  • Please don't use a conversational tone and don't address the essay to the instructor. Please don't talk about the CS 428 class. Write as if your essay were going to appear on the back page of some software engineering magazine or software periodical, on on your own amazingly cool technology blog. It should be informative, tightly written, punchy in its content and effective in its presentation.
  • I strongly recommend that you have a friend (preferably a good writer) edit your paper for you. That's a great way to become a better writer.
  • If you quote someone, please cite the reference. However, there is no minimal requirement for citations (i.e., you don't have to have any if you don't feel like it).

Final Exam

The final exam is comprehensive, but more strongly focused on the second half of the semester.

The format for the final exam is identical to the midterm.

IMPORTANT (and I repeat from the section above concerning the Midterm)! No student will be given a passing grade in this course who does not achieve an average score of at least 60% on the Midterm and the Final.