Information Science 2550

Client- Server and W orkstation Systems

Last updated 6 Jan. 2003  vers. 1.0
History of Updates to this page

Course Description

    Client-Server and Workstation Systems is a graduate course covering the design and implementation of client-server software systems on networked workstations. The course involves minimal formal reading and maximal coding. The course lectures assume that students have carefully read the assigned materials and have implemented the related code prior to the class meeting for which it is assigned.

    The course is designed to operate in a didactic mode at the start, but to shift to problem based exploration as the term goes on. With each meeting, it is assumed that students will be increasingly focused on solving problems and will use class as a place in which some of the questions and issues they are facing may be addressed.

    This course assumes that students are competent C programmers with a solid knowledge of the UNIX operating system. Students with limited C programming experience or minimal experience with UNIX workstations may take the course, but should anticipate spending significant additional time working to familiarize themselves with the environment during the first weeks of the course. The course will include some minimal work in C++ and the MFC to look at WinSock and in the X Window System to look at graphical user interfaces. While experience in these areas is useful, the instructor will provide brief overviews and introductory material that should suffice for students to work through the assignments.

Course Goals


Instructor Information

Course M aterials

Comer, Douglas and Stevens, David, Internetworking with TCP/IP (vol. III) BSD version, Prentice Hall, 1996

Additional References:

Black, Uyless, TCP/IP and Related Protocols, McGraw-Hill, 1994
Comer, Douglas and Stevens, David, Internetworking with TCP/IP (vol. I & II), Prentice Hall, 1994
Quinn, Bob and Shutte, David, Windows Sockets Network Programming , Addison Wesley, 1996
Stevens, Richard, Advanced Programming in the UNIX Environment, Addision Wesley, 1993
Kruglinski, David, Inside Visual C++, Microsoft Press, most recent Ed.
Harris, Lawrence, OLE Programming, SAMS, 1994
Panko, W., End User Computing.
Van der Linden, Peter, Expert C Programming, Deep C Secrets, Prentice Hall, 1994

Finally, for the final project, you may want to explore either PalmOS, Java or Microsoft applications.  The first two books below provide good introductions
to Java.  The last two provide a good introduction to Microsoft approaches.

Course Files:
relevant source code can be found in the directories below ~jkabara/public_html/is-2550/src

Helpful web pages:
general things needed for client-server programs
Makefiles
more makefiles
even more stuff about makefiles
useful unix stuff
more useful unix stuff
stuff about workshop
more stuff about workshop
tutorials from IS 2000


Grading and Evaluation

Course Policies


Tentative Schedule


Week
Date
Topic
Reading (Comer)
(chapters)
Assignment
1 6 Jan Review of syllabus, Introduction, 
Important Unix Skills
1, 2, 27  
2 13 Jan More Skills and a simple client    
3
20 Jan
MLK Day, University Closed
 
 
4
27 Jan Application Protocols, critical function calls 3 - 7  
5
3 Feb Sockets & Clients & Server Design 8-10 Client (1) 
6
10 Feb More Server Design 11-13
7
17 Feb Meters and Signals 8 - 10 Server (2)
8
24 Feb Servers, iterative and concurrent, threads 19-22  
9
3 March
Spring Break

 
10
6 March Protocol Design 13-15
Tool (3)
11 10 March XDR & RPC 16-18  
12 17 March GUI structures (X-windows) 23-25  
13 24 March GUI construction  
14 31 March Other Platforms
GUI & Protocol (4)
15 7 April Other Platforms

16 14 April Other Platforms

17 21 April

Final Project

Assignment Details:
(1) Modify a client program to query a server. Both the client and the server will be provided by the instructor. The client software makes a connection, gathers data from the user, sends data to server, gets lines of data from the server, printing them as it receives them, closes the connection and exits.  As part of this assignment you should be asking if the client is as efficient as it might be. Does the connection occur at the last possible moment? Does it disconnect at the earliest possible moment? Beyond these minor improvements, this first assignment is designed to give you an opportunity to explore client-server connections. You should, after this assignment is done, be able to explain, in great detail, each and every one of the code fragments you have used. Beyond the formal client-server connection components, you should be asking "how could I make this interface better?" What might you do on the client side to improve the manipulation and presentation of the results returned? What changes in the client might improve the structure of the records that are being stored.

(2) Modify a server program that keeps track of a specified set of users and responds to queries about their status. The goal of this assignment will be to take the iterative server provided by the instructor and to convert it to a concurrent server. In addition improvements should be make to the capabilities of the server to make it more reliable.

(3) Write a tool for a client or server that provides some insight into how the component works or that provides some level of increased server reliability -- meters, load balancing, etc.

(4) Refine the client and server from assignments 1 and 2, developing a more sophisticated protocol that involves more features. Write an application for the people service e.g. assume the stream from the client can begin with a letter between a-e. If it is an:

You might encode each of your protocols as TLV -- Tag, length, value; thus we have a 1 byte tag, followed by a 2 byte length, which tells us the number of bytes that follow constituting the value. Thus this protocol would allow 256 transactions, each of which could have a value of up to 64K bytes. The protocol would go on to specify the syntax rues -- e.g. each session begins with a '1' message, followed by and number of 2,3,4 messages, ending with a 255 message, which signifies end of session.

 Add an X windows, PalmOS, Java or WinCE GUI interface to the client. The GUI interface must allow for multiple operations
 

Final Project:
    The final project is worth up to 45 points, almost half of your grade. It should be a significant indications of your ability to build a client-server system. It may reasonably be based on one of the fifteen point required assignments, or students may define any significant programming project they wish, so long as they clear it in advance with the instructor. This semester I would like projects to be along one of two themes. A wireless classroom and an electronic flight bag.

    Keep in mind that each year the School of Information Science sponsors the Information Engineering Competition. This awards competition is focused on recognition of excellence in the design and development of tools for information management. There are virtually unlimited opportunities for projects that will not only get you an A in this course, but a $500 award and recognition at Honors convocation and graduation.

Some other ideas for projects I came up with:

Optional Activities
Students choosing this option must clear their topic with the instructor. Write-up and present a 20 minute overview of some issue pertinent to client-server development. Sample topics include:
Copyright (C) Joseph Kabara
Created: 26.08.1997
For-profit educational or training corporations must contact the original author for licensing information.