Unix Systems Programming CSPP5108
This course focuses on the principles and techniques of Unix Systems Programming. We start assuming familiarity with programming in C and expand that knowledge with the skills necessary for Unix Operating Systems Programming, including file system programming, shell programming, process management, signal management, parallel programming, interprocess communication and network programming.
Familiarity with the LINUX/UNIX operating system and knowledge of a C like programming language, preferably C, or consent of instructor.
Upon completion of this course the student will::
A. Understand advanced UNIX operating system concepts and terminology.
B. Develop a command of the Unix Shell environment, including advanced Unix commands and utilities.
C. Learn basic AWK programming.
D. Become acquainted with the basic tools used to develop software in C on the Unix platform.
E. Become familiar with basic IPC issues and techniques in Unix programming
F. Become familiar with socket programming using the Berkeley socket API
G. Become familiar with both the theory and practice of making Remote Procedure Calls in Unix
H. Become familiar with multithreaded programming in C using POSIX pThreads on Unix
The first half of the course will consist of weekly homeworks with written questions and lab assignments. In the second half of the course, the weekly homeworks will shift to longer term projects. In addition to the programming component above, the homeworks will also encourage the student to become a sophisticated UNIX user who takes advantages of the shell and utility commands to complete work efficiently and with the least typing!
Classes: Tuesdays, Ryerson 277 5:30-8:20
Optional Labs: Saturdays, Ryerson 277 1:30-5:00
1. Understanding Unix/Linux Programming,
by Bruce Molay, Prentice Hall, ISBN 0130083968
3. Beginning Linux Programming, 2nd Ed.,
by Matthew & Stones, Wrox Press, ISBN: 1861002971 (2 copies on
Ready Reserve in Eckhart)
The C Programming Language by Kernighan and Ritchie
(a.k.a, the famous "K&R" book).
There will be weekly homeworks, which will sometimes consist of reading and written questions and sometimes consist of laboratory/programming problems. Homework will generally be assigned on Tuesday and due the following Tuesday. Homework which is not turned in by the beginning of class only qualifies for half credit. Non-programming/labratory homework turned in after solutions are published receives no credit.
The last several programming assignments will Extra credit will be available for additional features beyond those in the assignment.
Homework is due at the beginning of the class in paper form. In some cases, a link to online binary and source code will also be requested. There should be a makefile and all elements necessary to compile and link the program should also be present.
Instructor: Kenneth Harris, email@example.com
Office: 251 Ryerson
Office Hours: MWF, 4:30-5:30
Homework 60%, midterm 15%, Final 20%, class participation 5%
Books or electronic resources are not permitted to be used during the Midterm and Final exams, but up to 4 pages of notes may be used.
The programming assignments in this class will start fairly simply but will be cumulative until by the end of the class you will have constructed substantial systems.
The class mailing list is firstname.lastname@example.org. Feel free to post questions to the list. Answering other students questions on the mailing list counts as class participation. The archives often contain useful information.