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.
You must create a UML class diagram of the data to be managed by your application (minimum 3 classes and 2 associations). The application must be developed with code for the classes in that diagram. If you program in Java or PhP, it is recommended to use Umple; you can also use Umple to generate C++, but if you do this choose the 'Real Time C++' option. If you can generate code from Umple embed the rest of your code right in the Umple classes.
There must be a client and a server in your application. You can use OCSF, in which case you would extend AbstractClient and AbstractServer (you can also extend or modify SimpleChat classes). You can also use a web browser as the client, and create a server on the web using some technology like Php or Ruby On Rails. Whichever client-server technology you use, you would have to sent messages from the client to the server and messages or data back to the client from the server.
You must deliver working code you will demonstrate.
You must have a small set of requirements to guide the work, including a problem statement, a descriptive paragraph, and a set of use cases or user stories.
You must have a small number of automated testcases (code that drives your application to demonstrate it without the user interface)
For assignment 5, do the following:
Create a document outlining your work with the following information:
One line problem statement
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)
List of use cases or user stories (typically 2-5). Each of these should be 1-5 lines or so.
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?
First draft of the UML class diagram (system domain model). Minimum 3 classes; suggested absolute maximum 10 classes.
List of messages you expect to transmit to the server from the client and to the client from the server. (half a page)
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'.
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.
Hand in your commented code, as well as revised versions of what you changed from Assignment 5 (i.e. as you discovered bugs).
The TA will judge your work based on:
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).
Here are some examples of basic, reasonably straightforward applications: