Syllabus contents:

Course Description

Grading Policy

Required Readings


CSE403, Spring 1999
Software Engineering
Course Description

The course catalog description is:

Fundamentals of software engineering using a group project as the basic vehicle. Topics covered include the software crisis, managing complexity, requirements specification, architectural and detailed design, testing and analysis, software process, and tools and environments. Prerequisite: CSE 321; CSE 341; CSE 378; recommended: CSE 401; CSE 451.

The prerequisites are included for the material they covered as well as for the maturity in programming and software issues that are important for this course.

This course has one primary learning objective: to learn that engineering high-quality software products is not a mere matter of programming.  There are many secondary learning objectives, which we will discuss explicitly over the quarter.

As mentioned in the catalog description and as described on the project page, the central vehicle for the primary learning objective is a group project that spans activities from requirements specification through implementation.

The lecture schedule is heavily structured in terms of just-in-time lecturing, where I present material before you need it for the project (but not much before, in many cases).

The eighth week of the quarter will focus on active reviews of the code each group has produced at that point, especially addressing the question of faithfulness to the design and to the schedule.  (Vibha, the TA, will be responsible for this activity, as I will be at a conference all week.)

The final two weeks of lecture will cover a variety of general topics, with many or all of them presented by guest lecturers.


Grading Policy

Your grade in the course will be determined as follows:

  • Your project grade accounts for 70% of your final grade
    • The grade on the project is heavily subjective.
    • Group members will not necessarily receive identical grades.
    • Approximately four-fifths of the project grade will be based on achievement of milestones during the quarter, with the remaining fifth based on the resulting project.
  • Your midterm exam grade accounts for 30% of your final grade.
    • The midterm will focus almost entirely on material to be found in the readings.

Intangibles, such as class participation, genuine interest, etc., may affect your grade as well.


Required Readings

In a strict sense, there is no textbook for the course.  That is, I have chosen not to use one of the commonly used software engineering textbooks for the course.  The reason is that, overall, I am dissatisfied with these texts; to be fair, I don't have an idea about how to write a better one, however.

Instead, we'll use a set of papers (and one book, not a text) from the literature.  These don't cover, in any sense, the full discipline of software engineering.  I'll try to augment these readings with lectures, lecture notes, and a set of pointers to resources on the web.  The reading schedule is found on the schedule page.

  • F. Brooks, Jr., The Mythical Man Month.
  • B.W. Boehm, A Spiral Model of Software Development and Enhancement, Computer, 21(5), May 1988.
  • D.L. Parnas, On the Criteria To Be Used in Decomposing Systems into Modules, Communications of the ACM, 15 (12), December 1972.
  • E. Gamma, R. Helm, R. Johnson and J. Vlissides, Design Patterns: Abstractions and Reuse of Object-Oriented Design, Proceedings of ECOOP '93, 1993.
  • B.W. Boehm.  Software Engineering.  IEEE Transactions on Computers C-25,12, December 1975.
  • D. L. Parnas.  On the design and development of program families.  IEEE Transactions on Software Engineering, SE-2,1, March 1976.
  • D.L. Parnas. Software Aging. In Proceedings of the 16th International Conference on Software Engineering, Sorrento, Italy, 1994, pp. 279-287.
  • G.D. Bergland. A Guided Tour of Program Design Methodologies. Computer, October 1981, p. 18-37.

The readings are required with two objectives in mind.  First, they provide the best descriptions and discussions available of some basic principles and notions of software engineering.  Second, they will provide some insights about how to proceed with your project. 

Because of the intense nature and size of the project, there will be no assignments directly relating to the readings.   However, the midterm will primarily focus on this material.



 Last Updated:
03/27/99 11:13

Contact the instructor at: notkin@cs.washington.edu