Practicum Object-Oriented Software Development


Practicum Object-Oriented Software Development


FAQ, hush, documentation, assignment, projects, mailinglist groups, (previous years) TODO

Objectives

To gain practical experience in deploying object-oriented design and implementation techniques.

See also the lectures OO.

Notes 98/99

In the past the objective stated above has often been misunderstood as the liberty to develop another application in C++ or Java. This has led to a number of nice games. Nice, but not very interesting in terms of their O-O architecture. While the first such games may be considered as pioneering work, most of its followers did not excel as imaginative examples of O-O software construction.

For the O-O practicum I wish to maintain the spirit of challenge. That is to say, I want you to experiment with technologies that are of current interest, and to taste how it is to build a framework with these technologies in the domain of your choice. In other words, it is not the individual application that is interesting, but the approach that allows for developing a thousand applications with ease, building on the ideas and solutions of your framework.

More concretely, if you insist on developing another game, don't build a single game application, but try to develop a framework that allows for building a variety of similar games. Make sure that you factor out game strategies, for example by using the Strategy pattern.

Now to give you an indication of what I see as the major challenges in O-O software construction:

All these subjects have been treated, or at least hinted at in the OO Lectures. If you did not visit any of these lectures, I do actually want to discourage you to participate in the practicum. You do not learn much from writing an other Java program, do you?

Assignments

The assignment for this year The Virtual Dealing Room incorporates all these challenges. It is ambitious, indeed, but certainly relevant, since virtual communities will become a dominant phenomenon on the Internet. It is an example of a knowledge-intensive, distributed application area, for which O-O provides, in principle, the solutions required for their realization.

Of course, you are welcome to think of variations on this theme an if you see no other option you may pick an assignment from the the old list.

If you think that the technology will be too much to master, don't worry, if needed we will organise periodic meetings where you can exchange ideas, ask for information and get advice on the technology.

Although it would be nice to have a real 3D interface to the community, I am aware of the fact that most of the technology involved ist stll rather unstable. However, even without using 3D technology, you must strive for an intuitive interface that that is suited for the application domain.

Examples of virtual communities can be found at http://www.colonycity.com http://www.blaxxun.com and http://www.activeworlds.com .

Procedure

In contrast with previous years, a synopsis alone does not suffice. To enter the practicum, you need to write a synopsis, send it to eliens@cs.vu.nl and, if required by the supervisor, make an appointment to talk about the synopsis with the supervisor.

Before the actual start of the semester there will also be a meeting with all the participants, in which you are required to give a short, 5-10 minutes, presentation about your intended system or framework.

See also the Regulations below.

Supervision

Anton Eliëns eliens@cs.vu.nl

Software environment

Programs have to be written in either Java or the C++ programming language, or a combination of these. The use of CORBA, and a combination of C++ and Java is strongly encouraged.

You have to choose one of the following options, depending on your personal interest and programming skills:

  1. C++ with the hush toolkit, or the Qt toolkit
  2. Java with AWT or Swing
  3. C++, Java and CORBA (preferred)

See also the list of available software.

Soft-copies of the documentation need to be available in LaTeX2e or HTML. Other languages, toolkits or file formats may only be used after consulting the supervisor(s).

Regulations

The practical work can be done in groups of two persons or on an individual basis, after choosing one of the given assignments. Students are required to send (the URL of) a synopsis (a short, comprehensive description of the requirements and functionality of the application in HTML) to eliens@cs.vu.nl first. See the Procedure above. Read the section about the review procedure and the style guide before you start!

After approval of your synopsis, a group account can be requested by eliens@cs.vu.nl. These accounts will expire on September 30, and can only be extended after an explicit request.

A soft-copy of the final application and documentation has to be send by e-mail to eliens@cs.vu.nl (a uuencoded compressed tarfile, see the Makefile of the example project), as well as a filled in "tentamenbriefje" and a hardcopy of the corresponding documentation (requirements spec, user manual, design, etc) (mailbox of Anton Eliëns in the "Stafkamer", next to S3.03). Do not use plastic covers, staples will do!

Requirements

Quality of design is an absolute requirement. This must be reflected both in the implementation by the definition of adequate interfaces and the use of inheritance and delegation and in the documentation explaining the rationale of the design. The use of design patterns is strongly encouraged. Also you're invited to define separately IDL interfaces for the major components of your application, whether or not you use actual CORBA technology for the implementation.

Time schedule

Note: Students are responsible for a steady progress and should contact the supervisors in case of problems in an early phase. If you miss the August 28 deadline, you may continue working on your assignment, but no help will be available, and new versions of hush or CORBA may be installed. Additionally, after submitting, your assignment will probably not be reviewed within the usual time frame.

Example

An example may be copied from /home/oo/hush/oo98/examples/

Questions

Read the FAQ first!

The SE tutorials provide introductions to make(1), C++ debugging, Tcl/Tk, the Tk-packer, widget cooking, ... When using Java, you will have to rely primarily on the standard Java and Swing documentation.

The documentation for (Java) hush is part of the hush documentation.


eliens@cs.vu.nl