Submission: The printed version of your work must be handed in to the departmental office by noon Friday 26th March 2004 (the last day of term). In addition, a version should be submitted electronically using the handin program (details will be emailed closer to the deadline). Note that the electronically submitted version of your program will be run through an automated plagiarism detector.
With the printed version of your program you must submit an UML class diagram, documenting the classes and their relationships within your program. A hand drawn diagram is entirely acceptable.
Aim: The aim of this mini-project is to write the best and most interesting program you feel able to, putting into practice all that you have learnt so far. Time is limited and there are a number of other courseworks to complete for other courses, so as always plan carefully and make the best use of your time.
Marking: The work will be graded A-F.
On this scheme a grade C is considered to be basically satisfactory which means
the program runs, does more or less the right things and has an appropriate design using classes. Grades B and A represent better and excellent programs,
while D and E are progressively less good programs that show serious problems
in execution and/or design. Grade F means a failure to present anything of merit.
Getting a good grade: (This advice is the same as for the last mini-project, but it is still good advice!)
All projects require you to write an object-oriented program, making full use of classes, objects and all their associated features. Marking will take into account the quality of the program you write. In particular pay attention to the following:
A clean simple working program, making good use of classes and objects, is considered better than a larger and more complex but less well-organised program.
Development Advice:
First carefully read the code and notes for the Snack Bar program (and have a look at the phone list program as well). Make sure you understand the development process that is proposed, so you can apply it in your mini-project.
Also make sure you have read chapter 10 in the course text (in addition look through Part III).
When ready to start, select one mini-project idea from the list below. Remember that you are writing an object-oriented program and should be using at least half a dozen classes.
Below are listed a small number of mini-project ideas. You must select one. The ideas are deliberately open-ended, so you will have to fill in the details and determine exactly what your program should do.
It is up to you to take the mini-project as far as you can.
Q1. Write an electronic diary program that keeps track of events and appointments for every day of the year. Diary data should be stored in a data file.
Q2. The London Underground Problem. Write a program that will find a route between any two stations on the London Underground network. Given a start and end station the program should list each station and change of line that forms the route. Ideally, the program should attempt to identify either the shortest or fastest route.
Q3. Write a program that can parse HTML, and check that the HTML provided is correctly structured and that the tags are all valid. The program should construct an internal tree of nodes (objects) representing the elements in an HTML file, with each node containing methods that check it is being properly used.
Q4. Write a multiple-choice quiz program that reads a collection of questions and answers from one or more data files, selects a random subset and uses them to test a player. The program should keep track of the score of each player and keep the scores in a data file.
Q5. Write a program that can parse Java source code, in a number of source files, well enough to identify classes, subclass relationships and association relationships, and summarise the results. (Consider displaying the results as an UML diagram in a drawing program window.)
Q6. Don't like any of the other ideas? Then invent your own question BUT first email me your idea to get my approval. Your idea needs to be one that requires a number of classes to implement. Beware of over-ambitious ideas that will take too long to actually complete or even start properly.