COMP 375: Software Engineering

Fall 1997, Dr Peter Dordal

Here is the midterm study guide

Here is the final exam study guide, in progress. Stuff on Patterns added Tuesday, 4:30 pm.
The final exam will be Thursday, Dec 11, 10:20-12:20. Selected answers will be available soon.


Prerequisites: COMP 272: Data Abstraction and Object-Oriented Programming.

Text: Software Engineering: A Practitioner's Approach by Pressman, McGraw Hill 1997 (Fourth edition).

You must also have some kind of C++ reference available to you. Normally the books you used in Comp 271 and 272 should suffice. Doing your project in Java will be an option; to do this you must have suitable Java reference materials available, and also reasonable familiarity with the Java language.

Description: This class is a basic introduction to Software Engineering, which is the application of a collection of managerial, organizational, and technical methods and techniques to large-scale software development. Experience has repeatedly shown that software development does not scale well: ten programmers almost never accomplish ten times as much as one programmer, and have been known to fail to accomplish one time as much. We will also discuss how one decides which techniques are appropriate for a given project and which are not.

The lectures will cover methods and techniques for managing the phases of the software development life-cycle: Requirements Analysis, Software Design, Coding, Testing, Maintenance, and Configuration Management.

In addition to the managerial ideas, we will also explore some of the software design ideas that have been applied to large projects: OOP, design patterns, code reuse, etc. Most of these technical ideas apply as well to individual programming effort.

We will also study and compare some of the software tools that have been found useful:

If time permits, we may also discuss the development of safety-critical systems.

Project: Parallel to the lectures, there will be the development of a software project in C++ (or Java, although the Java option will receive less official support from me) following the software engineering principles disscussed in the lectures. The development will be done in teams of three to four students, depending on enrollment. A major goal of the course is to expose students to the perils and rewards of writing software as a team member.

Tentatively this project will be a graphics drawing program. I will give you a basic outline; each team will select some sort of extension. Students may choose their own team members, but if not then compatible teams will be set up by the instructor during the first few weeks. Part of your final project grade will be based on your individual participation and performance, and part will be based on your team. Teams will be expected to meet with the instructor occasionally, outside of class hours.

Projects will have an established timetable; points will be taken off for schedule slippage.

Students wishing to program at home will need a C++ compiler that supports 32-bit Windows programming; eg Visual C++. Remember that all team members must have access to the same platform!

Grading: Project: 30%; other homework: 5% (maybe); Midterm exam: 25%; Final exam: 40% (these percentages are all approximate). The final will be 10:20-12:20, Thurs Dec 11. The midterm will be somewhere around Oct 16 or 21. If you do poorly on the midterm, some sort of grade-improvement option may be available, subject to a maximum of a C+/B-.