5570: Advanced Unix Programming

Fall 2002

Instructor: Ashok Srinivasan
Office hours: TW 2:15 - 3:15 pm, or by appointment.
Location: 169, Love Building
Phone: 644-0559, Email: asriniva@cs.fsu.edu
Course web site: http://www.cs.fsu.edu/~asriniva/courses/aup02

Grader: Yan Mao
Office hours: T 3:15 pm - 4:15 pm, or by appointment.
Location: TBA
Email: mao@cs.fsu.edu

Lecture hours:
MWF 1:25 pm - 2:15 pm, LOV 103


COP 4610: Operating systems. This pre-requisite will not be waived.
Note: Proficiency in C is assumed; you need to have substantial programming experience in C. You also need to have user-level knowledge of Unix, and be comfortable working in a Unix environment.

Text books:

  1. Required: UNIX Network Programming, Volume 1: Networking APIs - Sockets and XTI, Second edition, W. Richard Stevens, Prentice Hall, Englewood Cliffs, NJ, 1997 (Referred to as UNP).

  2. Recommended: Advanced Programming in the UNIX Environment, W. Richard Stevens, Addison-Wesley, 1993 (23rd printing 2001), (Referred to as APUE).
    Other references

  3. IETF Request for Comments: http://www.ietf.org/rfc.html.

  4. The Open Group Base Specifications Issue 6 IEEE Std 1003.1-2001: http://www.opengroup.org/onlinepubs/007904975/ (OG).

  5. The C Programming Language, second edition, B. W. Kernighan and D. M. Ritchie, Prentice Hall, 1988.

  6. Online man pages. Section 2 documents the OS system service calls, and Section 3 the C library functions. For example, use man ps to see the man(ual)-page for the ps command. Use man -k keyword to see all the man pages for a particular keyword.

Course rationale:

This course is meant for graduate students having substantial programming experience. You may find this course difficult if this is your first graduate level course. In this course, you will acquired training in good programming techniques, while learning important programming topics in a Unix environment, particularly network programming and threads.

Course description:

File access and attributes, I/O issues, signals, concurrent programming with processes and threads, network programming, client-server paradigm.

Course objectives:

By the end of the semester, you should acquire programming experience in the following: (i) using standard UNIX operating system API's, (ii) concurrent programming with processes and threads, (iii) network programming in the client-server paradigm, and (iv) writing portable programs.

Grading criteria:

Weekly quizzes 15
Attendance and class participation 5
Group project 10
Programming assignments 25
Two Midterm Exams 10 + 15 = 25
Final Exam 20

Your grade will be based on the scores obtained in the above categories, with weights as given above. Additionally, you need to obtain a certain minimum average score on your exam grades (quizzes + midterms + finals). Examples are given below, later.

Course average Minimum exams average (%) Letter grade
90 - 100 90 A
87 - 90 85 A-
80-87 75 B
70-80 65 C
60 - 70 50 D
0 - 60 0 F


  1. If you get 91% total and 93% on the exams, your grade will be A.
  2. If you get 83% total and 73% on the exams, you will not get a 'B'. Your grade will be 'B-'.
  3. If you get 83% total and 63% on the exams, you will get a 'C-'.

Attendance and class participation

You will be given a grade for class participation and attendance. In particular, I will ask questions during lectures, and you should perform well in these. I will also take into account positive contributions you make to the class, such as suggesting improvements to programming examples I present in class. Your attendance too will be considered. Attendance will be taken at the beginning of lectures. You will be marked absent if you are more than 5 minutes late. You may also lose points if you are regularly late by 0-5 minutes. You will also be marked absent if you leave before class ends! Missing four or fewer lectures will be considered good attendance.

Notes: (i) Your signature on the attendance sheet should match that on your FSU ID. (ii) You are responsible for making up for any materials missed due to absences, including announcements made in class. A missed exam can be made up only in extremely rare circumstances, and you should discuss it with me well ahead of time.

Grading programs

Program grades will be based primarily on functionality, portability, correctness, programming style, and documentation. Since one of the important goals of this course is to learn to write portable code, the assignments will be required to compile and execute correctly on different operating systems, without changing the source code.

Course policies:

Honor code:

Plagiarism is "representing another's work or any part thereof, be it published or unpublished, as one's own. . . . For example, plagiarism includes failure to use quotation marks or other conventional markings around material quoted from any source" (Florida State University General Bulletin 1998-1999, p. 69). Failure to document material properly, that is, to indicate that the material came from another source, is also considered a form of plagiarism. Copying someone else's program, and turning it in as if it were your own work, is also considered plagiarism.

What I expect from the student:

Lecture plan:

Dates Topic Dates Topic
26 Aug - 30 Aug Review: editors, compilers, debugger, makefiles, header files, command line arguments, utilities, system calls. 2 Sep - 6 Sep Portability and introduction to Unix API (Chapter 1 and 2 of APUE), Unix file system and direct I/O, (Chapters 3, 4,and 5 of APUE).
9 Sep - 13 Sep More on file I/O and I/O redirection, process management (APUE chapters 7 and 8), and pipes (APUE sections 14.1 and 14.2). 16 Sep - 20 Sep Signals (APUE chapter 10) and terminal I/O (APUE chapter 11).
23 Sep - 27 Sep More system calls and midterm 1 review. 30 Sep - 4 Oct Midterm 1, Introduction to Unix network programming (UNP chapters 1 and 2).
7 Oct - 11 Oct Sockets and TCP (UNP chapters 3, 4 and 5). 14 Oct - 18 Oct I/O multiplexing and pre-forked server (UNP chapters 6, 27).
21 Oct - 25 Oct Socket options, UDP, and name and address conversions(UNP chapters 7, 8, and 9). 28 Oct - 1 Nov Midterm 2, UDP reliability (UNP sections 20.4 and 20.5), and Unix domain protocols (UNP chapter 14).
4 Nov - 8 Nov Threads (UNP chapter 23). 11 Nov - 15 Nov More threads.
18 Nov - 22 Nov Broadcasting and multicasting (UNP chapters 18 and 19) and IP options (UNP chapter 24). 25 Nov - 29 Nov Signal driven I/O (UNP chapter 21) and non-blocking I/O (UNP chapter 15).
2 Dec - 6 Dec Project presentations. 9 Dec Final exam: 10:00 am - 12 noon.

Other course links:

Last modified: 18 Oct 2002