home *** CD-ROM | disk | FTP | other *** search
- Xref: sparky comp.edu:2271 comp.software-eng:5207
- Path: sparky!uunet!cs.utexas.edu!swrinde!gatech!destroyer!cs.ubc.ca!columbia.cs.ubc.ca!not-for-mail
- From: manis@cs.ubc.ca (Vincent Manis)
- Newsgroups: comp.edu,comp.software-eng
- Subject: Re: Class Project For Software Engineering Course
- Date: 4 Jan 1993 18:20:38 -0800
- Organization: Institute for Pure and Applied Eschatology
- Lines: 50
- Message-ID: <1iar9mINNss7@columbia.cs.ubc.ca>
- References: <1i4lfqINN849@crcnis1.unl.edu> <1ia3e0INN9m5@aludra.usc.edu> <1993Jan4.162437.19108@hemlock.cray.com>
- NNTP-Posting-Host: columbia.cs.ubc.ca
-
- I've had considerable success over the years with what I call a
- ``dumbbell'' project, namely 2 sub-projects connected by a
- narrow-bandwidth interface. The classic example of this (which I have
- used twice, and shamelessly intend to use again) is an electronic mail
- system, in which the 2 sub-projects are a user agent and a message
- transfer agent. Another similar system is a student registration system,
- again with a centralized data base and a student terminal agent. News
- systems, airline reservation systems, and the like are other good
- examples.
-
- The protocol (interface) between these can be carefully defined (for the
- email project, I designed a sort of ``baby SMTP''). The importance of a
- clearly-specified interface becomes clear when one has to make one's
- user agent work with somebody else's message transfer agent.
-
- There are a number of virtues of this approach: first, students are all
- working on related projects, and thus get a good chance to interact with
- other students (unlike in the ``find a client, and write a program which
- satisfies the client's needs'' project type). Second, the program
- structure is realistic (server/client computing, anyone?). Students know
- this, and find it motivating. Third, it develops the concept of not only
- working within a group, but also with another group (one group has to
- test its user agent with another group's message transfer agent).
- Fourth, it mixes good software design methodology (a common ADT for
- messages on both the user agent and message transfer agent sides, for
- example) with effective use of practical tools (user interface tools and
- databases, for example).
-
- Some argue that a project should be ``useful'', in the sense that an A
- project can actually be put into production (with some minor
- modification). I strenuously object to this principle. Useful programs
- have a lot of ``straight-line'' code (e.g., data editing) which students
- will learn nothing useful by doing. (Of course I'm not arguing that
- students shouldn't learn to write error checking code!) As an example,
- the software engineering project at the University of BC one year was to
- write a membership system for the Canadian Information Processing
- Society. The best project was chosen; even then, it took a great deal of
- work on the resulting system to render it usable as a candidate system
- for CIPS.
-
- Given that even the best project is unlikely to be directly useful, my
- preference is for a project which is artfully constructed so as to
- concentrate the principles we're trying to teach, while still being doable
- in 3 credit hours.
-
- --
- \ Vincent Manis <manis@cs.ubc.ca> "There is no law that vulgarity and
- \ Computer Science, Langara College literary excellence cannot coexist."
- /\ 100 W. 49th Ave, Vancouver, BC, Canada (604) 324-5205 -- A. Trevor Hodge
- / \ Co-author of ``The Schematics of Computation'', Prentice-Hall, Jan 1994
-