|
|
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
- Explore the basic capabilities of UNIX sockets and network protocols
- examine the functional differences between transaction, concurrent
and multithreaded client-server systems
- analyze the various decisions that have to be made in allocating functionality
in a client-server system
- Explore the use of various libraries and systems for building common
client-server systems
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.
- Deitel and Deitel, Java: How to Program 3rd Edition, Prentice
Hall, 1999.
- Weber, Joseph, Using Java 2 Platform, Special Edition, Que, 1999.
- Kruglinski, David, Inside Visual C++, Microsoft Press, most recent
edition.
- Quinn, Bob and David Shutte, Windows Sockets Network Programming,
Addison Wesley, 1996.
- Harris, Lawrence, OLE Programming, SAMS, 1994.
- Rhodes, Neil, Pam OS Programming, O'Reilly.
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
- A = 90 - 100 points
- B = 80 - 89 points
- C = 65 - 79 points
- F = 0 - 64 points
- Required Activities
- (0-10 points) Modify a client program
- (0-10 points) Modify a server program to be a good concurrent server
- (0-15 points) Refine the client & Server programs from assignments
1 & 2, include tools discussed in class
- (0-20 points) Write a client-server program that uses an application
layer protocol more sophisticated than Blast-'n-close and includes a GUI
interface.
- Final Project (0-45 points)
- Optional Activities (0-10 points)
Course Policies
- All work must be the student's own, unless collaboration is specifically
and explicitly permitted. Any unauthorized collaboration or copying will at
minimum result in no credit for the affected assignment and may be subject
to further action under the Guidelines on Academic Integrity of SIS
and the University of Pittsburgh. A document discussing these guidelines was
included in your orientation materials, and you should acquaint yourself with
them.
- Late assignments will not be accepted, unless specific arrangements
have been made with the instructor at least 3 days before the due date.
- I reserve the right to modify the course requirements by administering
surprise quizzes for up to 10 points or announced exams for up to 50 points
if I feel that students are not pursuing a reasonable amount of course related
reading and coding. Should this option be exercised, the point distribution
for grades will be changed accordingly.
- To give you an sense of what to expect, imagine that every point awarded
for an assignment equates to 0.5 - 2 hours of coding per point. If you are
a good (not great, just good) you could finish assignment 1 and do a great
job in 7.5 hours (I really think it will take less than 5). If you are having
difficulties with C, UNIX and reading Comer, 30 hours may be required to
finish the assignment.
- The easiest means of contacting me is by electronic mail ( jkabara@pitt.edu) . This helps me
organize my time, and ensures a more accurate and efficient response outside
of office hours. To improve efficiency I will read and reply to student emails
within 1 week. If the nature of your question requires an interactive
session, please come to my office during office hours as scheduled. If, for
some unforeseen reason, I cannot make office hours, I will announce that
in class whenever possible. I do not make appointments during office hours;
I will be available on a first come, first served.
- Final Projects submitted after the due date may earn (0-35 points)
and no points from optional activities will be counted toward your final
grade.
Tentative Schedule
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.
- add and play with meters for both the server and the client
- play with signals added to the server -- can you get it to let you
know when it goes down?
- add some authentication function in the server
- add an encryption function between the client and server (quality
is not as important as proof of concept)
(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:
- a there are x bytes that follow and constitutes a record to be added,
- b send a brief report,
- c send a full report,
- d means find and report the record with the key that follows in y
bytes,
- e terminates a session.
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:
- A flight plan submitter
- a web data extractor for airport information guide
- a web data extractor for approach plates
- a web data extractor for federal aeronautical regulations, airman
information manual
- Wireless Classroom <<<<------!!!!!!!!!!!!!
- A program that aides groups in scheduling and managing meetings. You
might imagine a series of clients connected to a meeting server.
- An educational game that runs in client-server mode. It should be
first and foremost attractive and fun to use. Your implementation should
be well bullet-proofed, interactive and functional.
- handheld quiz & test
- handheld user management
- a web page "pusher" for mobile clients in a lecture
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:
- GUI interface development
- cross platform development (i.e., palm pilot on a Sun workstation)
- Linux platform development
Copyright (C) Joseph Kabara
Created: 26.08.1997
For-profit educational or training corporations must contact the original
author for licensing information.