Faculty of Engineering

SEG 2105 Assignments 5 and 7

For details of other assignments and general rules, see this page.

For these assignments, you will develop a very simple application of your choice using a technology of your choice.

Deadlines for handing in work are as in the syllabus. You will be assigned a time to do a live demonstration to the TA at the end of the course.

The constraints on your application are:


For assignment 5, do the following:

Create a document outlining your work with the following information:

  1. One line problem statement

  2. Short paragraph describing the requirements (just like the requirements outline I used for the manufacturing plant controller, the airline system, or assignment 4; although keep your system simpler than these)

  3. List of use cases or user stories (typically 2-5). Each of these should be 1-5 lines or so.

  4. A couple of paragraphs describing the architecture: What technologies and programming languages are you going to use? What will the client do, what will the server do?

  5. First draft of the UML class diagram (system domain model). Minimum 3 classes; suggested absolute maximum 10 classes.

  6. List of messages you expect to transmit to the server from the client and to the client from the server. (half a page)

For assignment 7, do the following:

  1. Implement and get your system running. In addition to code to implement the functionality, you should also have code to server as automated testcases. For the testcases, you can write a simple 'main program' that will call the methods, or else you can use a more sophisticated tool like 'junit'.

  2. In the labs (dates to be determined later). The TA will schedule a time slot for each group. If bugs occur in the demo you can fix them for the final submission.

  3. Hand in your commented code, as well as revised versions of what you changed from Assignment 5 (i.e. as you discovered bugs).

Evaluation criteria

Other tips for this work:

For the user interface, you are free to use console (text) I/O, or html (to display in a web browser), or any UI-building tool/framework, or a tool for building mobile apps.

Keep your work simple. Avoid the temptation to add features until you have got something nice and simple working well. After that, you can add additional small features one at a time.

You can assume that all the data will simply be saved in the memory of the server (e.g. Java objects. i.e. you are not required to make the data persistent (using something like a database, serialization, or XML). If you do persistence, it can count towards the bonus.

If you have an ultra-simple system (e.g. with just 3 classes) you might want to put more work into some other aspect, such as the client-server messages, or the UI.

I suggest you set up version control using GIT or svn. This is not required, but it will help you to keep track of changes, and will allow you to go back and undo errors if you need to. Doing this will give you an excellent skill. Doing this can count towards the bonus.

If anyone wants to deviate from these requirements or have any other question about them you must email me, with a cc to your TA (I will ignore questions that don't cc the TA since I need the TA to see the response, otherwise they won't know what I have approved).

Sample systems to give you some ideas

Here are some examples of basic, reasonably straightforward applications: