CSci 553 Spring 2006 Project Proposal Ideas 1) Basic Database client/server application Implement the basics of a database client/server setup. Create a database client, that maintains a collection of information (for simplicity use a flat file, or multiple flat file, to store the data). Allow multiple clients to connect to your server to get the data, update the data, create new data types. Read a bit about actual relational type databases like Oracle, or mysql and think about issues of concurrency resolution, etc. 2) Basic http web server A similar alternative to #1, instead of the server serving database information, have your server serve basic http web pages. The client will request data in the form of a url. For more advanced students, have your server actually conform to real (but a small subset) http requests, so that your server can serve any web browser requesting a page from your application. 3) Multi-player game Create a game server that allows 2 or more players to connect with clients and play some sort of a multi-player game. The game can be fairly simply, you could use something like checkers, chess or a board game, or something more graphical if you are more ambitious. You game can be turn based (where the player can only make a move when it is their turn) or real-time (where moves are legal anytime, and whenever a player makes a move their actions must be updated to all players that should be able to see them). You will of course need to develop an appropriate client application so that a player can connect with your game server and play the game. 4) File transfer server Build a basic file transfer client/server. Allow clients to connect to your file transfer server in order to download files from the server, and to also upload files to the server. 5) Distributed computing batch server Our courses machine (10.5.7.185 called nisl.tamu-commerce.edu) is actually a cluster of 6 machines: nisl01, nisl02, nisl03, nisl04, nisl05, nisl06. When you are logged onto the head node, you can easily access any of the other machines, using ssh: $ ssh nisl02 # so that you are now logged into and using nisl02 Create a distributed processing batch server, that accepts requests for jobs to run. The server should talk with clients that you have running on the nisl02 - nisl06 machines. It should process jobs by sending them to one of the clients on these nodes that is not currently busy processing any jobs. In this way, jobs submitted to your batch server actually get distributed and executed on other available nodes of the cluster. 6) xml-rpc type of a CORBA or COM server Explore the xml-rpc protocol and build an application around the idea of CORBA or COM objects. The basic idea behind these is that programs running on machines can act as servers that can process function calls from a remote client, and their services can be discovered and offered to anyone with access to the machine (whether it is local or remote to the server). Build a suite of cooperating applications that use xml-rpc to perform some tasks by communicating and cooperating with each other. 7) Variations of the above or your own different ideas for projects are also welcomed and encouraged.