CS 4583/5583, UNIX Systems Programming

Syllabus, Spring, 1997

Instructor:


Robert F. Rossa

Catalog data:

System-level Programming in UNIX systems. Prerequisite:CS 2193.

Textbooks:

Cameron Newham & Bill Rosenblatt, Learning the bash Shell, O'Reilly & Associates, 1995. David A. Curry, UNIX Systems Programming for SVR4, O'Reilly & Associates, 1996.

Course Details

This is an advanced course in UNIX system facilities. It complements the operating systems course, in that it provides hands-on experience with such facilities as signals, semaphores and file locks. Familiarity with the C language is assumed.

About 40% of the course is devoted to UNIX shell programming and some useful utilities like sed and awk. The rest of the course does the UNIX system calls in detail - unbuffered I/O, directories, process creation, signals, pipes, record locks, interprocess communication, terminal handling and some tcp/ip calls.

Large parts of the Curry book cover C functions that are already familiar to you (such as scanf); those parts will not be covered in this course.

There are constant short programming assignments throughout the course, and an occasional long one.

Course outline

Week Topics (pages)
1 Introduction. Editing and general system usage.(N&R 1-27)
2 Regular expressions and commands that use them:
grep, sed, awk. (not in text)
3 General system usage. Scripts (N&R 57-91)
4 Basic shell programming. Flow control. (N&R 91-125)
5 Flow control, command-line options. (N&R 126-150)
6 Variables, I/O, command-line processing (N&R 151-188)
7 Parsing the command line. Low-level I/O. (Curry 47-69)
UNIX file system. (Curry 103-111)
8 Files and directories. (Curry 111-143)
9 Multiple files, record locking, memory mapping. (Curry 143-170)
10 Time, users and groups. (Curry 171-219)
11 Signals. (Curry 239-282)
12 Processes. (Curry 283-321)
13-14 Interprocess communication. (Curry 353-389)
15 Terminals. (Curry 323-352)

Facilities

We will start on the DEC Alpha system named 'scott'; at some point during the semester we will move to (or probably just add) a LINUX system.

Course work

You may expect a constant flow of short programming exercises. Unless otherwise noted, all of this work will be individual work. Any unusual similarities will have to be explained. Protect your own work from copying. I do not accept late homework.
The homework will be about half the course grade. There will also be two exams and a comprehensive final.

Homework assignments

Resources