Course mailing List
The first thing you should do before attempting any of the lab
assignments is to add yourself to the course mailing list, firstname.lastname@example.org. Any
information regarding updates, clarifications, or modifications to the
lab assignments will be distributed using this mailing list, so please
make sure you're on it. You can add yourself to the mailing list at
the following URL:
Many of you will find it most convenient to work on one (or more) of
the many machines in the large
compute cluster provided by the Active Web Project. While you
are free to complete your assignments on any platform you'd like, the
labs are developed assuming you'll be using an Active Web machine
runing FreeBSD 4.6. (Note that the machines in the small
Active Web cluster are currently running Linux.)
There should be no difficulty using machines
running Linux or other version of UNIX, but any complications that
arise from using machines other than those in the Active Web clusters
are your responsibility.
Graduate students and staff who have access to CSE's general use
computing facilities also have access to the Active Web compute
cluster. In general your Active Web login and password will be the
same as on other departmental machines, however, because the general
access machines and the Active Web machines are in separate NIS
domains, there may be a time lag between when changes are made in the
CSE environment and when they appear on the Active Web machines. If,
for some reason, you do not have an Active Web account and would like
one, please contact me (email@example.com).
For the term project portion of the course, some of you may find it
useful to deploy and test your code on PlanetLab, a set of over 100 PCs
distributed across the globe. Details on obtaining a Planet Lab
account will be provided after you've submitted your project proposal.
It is assumed you're already comfortable programming in C/C++. If
not, I suggest you keep a copy of the classic "C Programming Language"
by Kernighan and Ritchie by your side at all times. We will not devote
much time in lecture to the lab assignments. Instead, you may find
some of the resources below to be helpful.
If, after consulting the resources above, you are still having
difficulty with the lab assignments, please feel free to stop by
during office hours or send email to firstname.lastname@example.org. Any
particularly relevant questions and their answers will be broadcast to
the class mailing list for everyone's benefit.
- UNIX man pages. Every system call you'll be using (e.g.,
read, write, select) is documented by the UNIX manual system. You can
access the man page for a particular program or system call by typing
"man foo", where foo is the name of the thing you're interested in.
Type "man man" for further information.
- The GDB debugger. gdb can be used to conduct a post-mortem
analysis of your program to deduce what caused it to crash. More
sophisticated users of gdb can use it to monitor the progress of a
program as it executes. There are many excellent tutorials
on GDB available on line, as is the manual.
- Stevens. The late W. Richard Stevens wrote several books
that should be on every systems programmer's bookshelf. "Unix Network
Programming," "Advanced Programming in the UNIX Environment," and
"TCP/IP Illustrated, Volume 1" are likely to be especially useful for