CS201J: Engineering Software, Fall 2003
Notes: Thursday 25 September 2003
- Now: Problem Set 3
Due to the Hurricane delay, the dates of PS4 (which will be handed out in section tomorrow) and Exam 1 have been changed:
- Thursday, 2 October before class: Design Document for Problem Set 4
- Thursday, 16 October: Final Report for Problem Set 4
- Thursday, 16 October: Exam 1 will be handed out
- Tuesday, 21 October: Exam 1 is Due
NotesWhy does software design matter?
Modular Dependency Diagrams
If the specification of M changes, then all modules that depend on M need to be reconsidered.
- A → B means A depends on the specification of (uses) B
- A dashed arrow B means A depends on the existence of (weakly uses) B
Section TomorrowIn section tomorrow, you will work on the design problem below:
Due to recent budget cuts at the University, SEAS has decided to replace the student advising office with a computer program. The program will take student course selections as input and either approve or disapprove of the course selections based on whether or not the student has satisfied the necessary prerequisites. (Note: the advising office does many other useful things too, of course. The administration is still working on ways to replace those functions with programs.)
All courses have a department mnemonic (e.g., "CS") and course number (e.g., 201). (As a further cost saving measure, the administration has decided to eliminate deviant courses that have extra modifiers after the number so you don't need to worry about handling courses with names like "CS201J".) Courses also have a name that purports to describes their content (e.g., "Engineering Software").
The program need to store information on courses and their prerequisites. A course may have no prerequisites, or may have multiple prerequisites or alternate prerequisites. For example, the prerequisites for "CS201: Engineering Software" are "either CS101: Intro to Computer Science OR CS200: Computer Science from Ada and Euclid to Quantum Computing and the World Wide Web". The prerequisites for "UBW101: Underwater Basketweaving" are "SCU101: Scuba Diving AND (either ART253: Introduction to Basketweaving OR SPD101: Weaving Webs for Poets)".
You've been hired to design the prerequisites checking program. Describe your design using a modular dependency diagram, and a brief description that describes each of the modules in your design. If a module is an abstract data type, write an overview specification of the data type and identify important methods (but you do not need to specify them). Explain a brief strategy for implementing and testing your design.
University of Virginia
Department of Computer Science
CS 201J: Engineering Software
Sponsored by the
National Science Foundation