Projects marked bold are more difficult (best grades ). You must use c or c++ language to implement a project. Testing must include "stress test", meaning that we load the "server side" with many request, generated by programs. For example we start many clients simultaneously using a command file. (You can develop your software in LINUX- environment and port it easily to HP-UX or even demonstrate it using TELNET- connection from EVITECH).
One project is assigned to every student.
How to assign a project?
Do the UNIX- command:
echo "Firstname Familyname" | /usr/lbin/spell/hashmake ,
and You get 9- digit number. Take the first digit as the project number. If You take "a bold" project, take the first digit in the number lesser than 6 (from right to left). For example if the number is 891678911, You take the number 1.
A simplified simulation of a data communication packet switch software
We simulate a packet switch node in an UNIX environment. The packet switch is a UNIX process, which takes packets from simulated lines and routes packets to lines using addresses in a packet header and a routing table in the packet node. For testing purposes we have to have programs to send (initiate) packet data to lines and programs to get and display data from lines. The switch problem generates the following different versions and project numbers:
A buffer allocation server
The server side of the system allocates (and releases) a fixed size buffer as an answer to a request of a client. The server sends to a client identification information necessary to access the right memory area ( Shared memory name and offset from the beginning). A client uses the buffer for testing purposes. Buffers are reserved from an UNIX shared memory segment. The problem generates the following different versions and project numbers:
A consumer/produced type disc buffering
We have programs ( producers), which read from disk files and insert
data to memory buffers. Consumers read data from buffers
and display it for testing purposes. If all buffers are full a produced
waits, if all buffers are empty a consumed waits. The number of memory
buffers is N and reading program(s) takes buffers at "first in first out
basis". The disc data buffering area is UNIX- shared memory segment and
"collisions" of programs are avoided by UNIX- semaphores. The problem generates
the following different versions and project numbers:
Search server
We demonstrate a common client/server model. We have a server program
which takes a set of sorted integer and the value to be searched from a
communication channel and returns the order number of the found element
or an error indicator if the value to be searched is not in the set. Clients
generate and send requests and display results. The server "daemon" "forks"
individual server for every request. The individual server dies when the
work has been done. The problem generates the following different versions
and project numbers:
New "cron" service
UNIX has service "cron" which makes possible to start some command at a specified time. Our new simplified daemon (server) takes requests from a communication channel. A request has time interval in seconds from current time to the time to start the program and the name of the program to be started. The problem generates the following different versions and project numbers: