Course mailing list: TBA (We will likely use piazza for this)
NOTE: The last day to drop a course without a 'W' grade is Thursday,
February 20. The Registrar's website provides further information
This course assumes that students have a solid background in
C and/or C++ programming. Experience with UNIX to edit, build
and execute programs is also required.
CS112 is a prerequisite course.
This course will focus on various aspects of system
programming. We will study the UNIX/POSIX programming interface,
from the point-of-view of system calls and library routines to
perform file, I/O and process management, as well as
inter-process communication and synchronization.
The C language will be used throughout the course, but
aspects of shell programming and other languages such as Perl
will also be discussed where appropriate.
Unlike CS552, which delves into the inner-workings of the
operating system, this course focuses on the interface to the OS
and how user-space applications and services can be written to
take advantage of OS abstractions.
Libraries, shells, binary and filesystem tools, debuggers,
threads, webservers, and so forth will be discussed and
implemented in programming assignments.
Additional recommended reading:
Larry Wall, Tom Christiansen and Jon Orwant, "Programming
Perl", 3rd Edition, O'Reilly and Associates,
ISBN:0-596-00027-8. There are many other O'Reilly books on Perl
and one of the "Learning Perl" books might be easier to
W.R. Stevens, "UNIX Network Programming", Volumes I &
II, Prentice-Hall, ISBN 0-13-490012-X and 0-13-081081-9,