NOTE: The last day to drop a course without a 'W' grade is October
7. The Registrar's website provides further information about
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 are 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.
This course is likely to feature a group project. Further
information will be provided but be prepared to develop your own
assignments to exercise the use of libraries, system calls and
programming concepts for topics such as debuggers, interpreters,
runtime environments, sockets/networked/distributed computing,
Android/iOS programming, Arduino/embedded computing.
Time permitting, the course may encompass programming of
embedded and single-board computer systems such as the Raspberry
Pi and Arduino Uno/101/Yun, etc.
We may also use the Quest
operating system in some of the class projects.
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,