Coursework Descriptions


Prerequisites

CS 340 is a prerequisite for CS 428. Since CS 340 is still somewhat new, a very small subset of the CS 428 students won't have had an opportunity to take CS 340 before graduating. Those students need to talk to me shortly after the start of the semester. I have provided some remedial audio podcasts of the software testing lectures that you will need to review at an appropriate time.


Attendance

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 additional projects. 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.

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 watch them on your own (or in small groups). Watching these podcasts and doing the accompanying reading counts as part of lecture attendance.

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

The following are important guidelines relative to attendance:

  • Attendance is mandatory.
  • Attendance is a modest chunk of the grade in this class, and you earn it at the rate of 100% if you materialize in person with at least one vital sign.
    • Attendance grades will be lowered for students who exhibit chronic tardiness.
    • Students can lose up to 1 of 2 daily attendance points for failing to read the assigned material for that day. See Readings.
  • A student will lose 2% 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 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, whether that student is present or absent.

Project

In this class, we're are engaged in a real world, on-going effort to create tools that will bless the family history community. We continue the work of prior semesters (for better or worse).

This effort is worth almost half the course grade. Your score in this portion is primarily about effort and commitment.

Class as Consulting Company

In order to get some work done during the semester with such a broad set of requirements, we organize the entire class into a single software development organization, complete with roles and hierarchy. 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 in the family history area 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!!

In this class, we are working on a continuing project involving family history. I have some ideas about what I'd like us to achieve, but we need to talk together and try to figure out better what that means in practice. In case you're wondering if I'm sort of "faking it" to simulate a real world experience, let me be clear — this is not a drill! I don't really know exactly what I want! I will never, ever withhold information from you about anything involving this project. When I say I don't know, it means I'm learning right along with you.

Regular Accountability

Given the unstructured nature of the project, but the significant value of it, 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 Saturday. 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.

Readings

Books

We are reading three books this semester:

  • "The Mythyical 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%).

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.

Daily Readings

The schedule identifies readings for many class periods. These readings need to be read before class on those days.

  • Students will be asked on the class roll to report the percent of readings completed for that day.
  • Failure to complete readings will cause a reduction in attendance points for a given day, up to 1 point maximum penalty out of 2 possible.
  • Examples:
    • Student reads all material for a given day and attends class: 2 pts.
    • No reading material assigned for a given day and student attends class: 2 pts.
    • Student fails to read any assigned material for a given day but attends class: 1 pts.
    • Students reports 50% reading of assigned material for a given day and attends class: 1.5 pts.


Midterm

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

All questions are short-answer and non-regurgitative. We don't expect you to memorize arbitrary details or lists. 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.


Essay

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.

Guidelines

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 CS 428 per se. 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! 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.