Spring 2005
Programming Assignment 1: A Centralized Bank Account Manager
Due: March 11th - in class
(for off-campus students - 14 days after viewing Lecture 8 )
In this programming assignment you are to implement a Centralized Multi-User Concurrent Bank Account Manager. The system has two important components:
An pictorial representation of the system is as shown in the figure below.
101 Peter 16000 102 John 1200 103 Gambo 11000 . . .The format for each line being: account number, name, balance amount
10 101 w 200 25 101 d 300 26 105 d 150 . . .Each line of the input file is a transaction request to be issued by the client and has the following format: timestamp, account number, transaction type(withdrawl/deposit), amount
You can be creative with this project. (like add create new online accounts, which
means add new functionalities, other than mentioned above, at both client and server etc.)
You are free to use any
programming languages (C, C++, Java, etc) and any abstractions such as sockets,
RPCs, RMIs, threads, events, etc. that might be needed.
Some things to keep in mind:
Correctness
Demonstrate that your system works correctly according to requirements stated in the
description of the system.
When you have finished implementing the complete assignment as described above, put all the code in a separate directory in your edlab account (/677/project1).
You are required to submit your solution in the form of printouts.
Each program must work correctly and be documented. You should hand in:
- A copy of the output generated by running your program. When the sensor proxy receives data, have your program print a message "data received from source s" . When a sink is sent data by the proxy server, have your program print messages for the data being sent by the proxy and for the data being received by the sink.
- A separate (typed) document of approximately two pages describing the overall program design, a description of "how it works", and design tradeoffs considered and made. Describe clearly how multiple threads and synchronization are handled. Also describe possible improvements and extensions to your program (and sketch how they might be made).
- Prepare a list of design considerations you made while designing your system and describe each briefly. This is similar to the design considerations discussed in class of the Email system on the last slide of Lecture 2.
- A program listing containing in-line documentation.
- Instructions to compile and run the code from 677/project1.
- A separate description of the tests you ran on your program to convince yourself that it is indeed correct. Also describe any cases for which your program is known not to work correctly.
- Performance results.
Let us not waste a lot of trees. So, if any of the above turn out to be large, just save the relevant information in a file, leave it on your EDLAB account and submit the name of the file.
Grading:
- Program Listing
- works correctly ------------- 50%
- in-line documentation -------- 15%
- Design Document
- quality of design ------------ 15%
- understandability of doc ------- 10%
- Thoroughness evaluation ---------- 10%
Grades for late programs will be lowered 12 points per day late.