600.211: Unix Systems Programming

Fall Semester 2005: September 8, 2005 - December 12, 2005

Contents

Basics

Catalog Description: This course covers a variety of topics in UNIX programming, including process control, signal handling, daemon processes, and interprocess communication. Participants must be familiar with using the UNIX environment and be fluent in the C programming language.

Prerequisite(s): 600.120: Intermediate Programming. For this semester only the old prerequisite 600.109: Introduction to Programming in C/C++ (with 600.111: Practical C highly recommended) will be accepted as well. However, the course includes significant programming projects, and without prior development experience you'll probably get lost in a maze of low-level code.

Academic Honesty: It is your responsibility to adhere to the Department Integrity Code and other applicable university regulations. Feel free to email us your questions or concerns.

Coordinates

Discussion List: cs211-discuss@bloat.org (open discussion, but subscribe here first)
Staff List: cs211-staff@bloat.org (to contact all of us, but only staff can subscribe)
Submit Assignment: cs211-submit@bloat.org (we grade your last submission before the deadline)

Instructor: Peter Fröhlich
Office Hours: Thursday & Friday, 4:00 pm - 5:00 pm
Location: 326 New Engineering Building

Lecture: Monday, Tuesday, Wednesday, 3:00 pm - 4:00 pm
Location: 202 Shaffer Hall

Teaching Assistant: Ashley Fernandes
Office Hours: Monday, Tuesday, 11:00 am - 2:00 pm
Location: 225 New Engineering Building

Schedule

Week 1: Introduction and Overview (9/12-9/18)

Lecture:

Reading:

Deadlines:

Week 2: Files and Directories (9/19-9/25)

Lecture:

Reading:

Deadlines:

Week 3: Files and Directories (9/26-10/2)

Lecture:

Reading:

Deadlines:

Week 4: Processes (10/3-10/9)

Lecture:

Reading:

Deadlines:

Week 5: Processes, Signals, Pipes (10/10-10/16)

Lecture:

Reading:

Deadlines:

Week 6: Interprocess Communication (10/17-10/23)

Lecture:

Reading:

Deadlines:

Week 7: Threads and Networking (10/24-10/30)

Lecture:

Reading:

Deadlines:

Week 8: Networking and Threads (10/31-11/6)

Lecture:

Reading:

Deadlines:

Week 9: Threads and Daemons (11/7-11/13)

Lecture:

Reading:

Deadlines:

Week 10: Advanced I/O (11/14-11/20)

Lecture:

Reading:

Deadlines:

Week 11: Advanced I/O (11/21-11/27)

Lecture:

Reading:

Deadlines:

Week 12: Advanced IPC and Terminals (11/28-12/4)

Lecture:

Reading:

Week 13: Terminals (12/5-12/11)

Lecture:

Reading:

Deadlines:

Week 13+1: Review and Outlook (12/12)

Lecture:

Reading:

Deadlines:

Resources

Books

First the recommended text for the course, a recently updated and very comprehensive classic. I'll make frequent reference to chapters in this one as we go along.

Next two additional Unix books: The first is a direct competitor to the recommended text above, the second provides lots of interesting background on Unix and its philosophy.

Then two books on the C programming language: The first is the recommended reference for this course, but it's not ideal as an introduction. The second is the "official" reference from the designers of the language.

Next some additional books on C. The first is a helpful "advanced" text, written in a particularly entertaining style; the interviewing tips are priceless as well. The second addresses software development strategies and provides (somewhat) higher-level abstractions for C. The third covers a variety of errors that C programmers tend to make again and again.

Finally two more general books on programming and software development, both highly recommended (not just for this course).

This list is hardly exhaustive. Feel free to email me suggestions if you find a good book on any of the topics we deal with in the course. :-)

Previous Offerings

Related Courses

Standards

Miscellaneous

Tools

Assessment

Assignments (8): 50%, Midterms (2): 20%, Final (1): 20%, Miscellaneous (unknown number): 10%.

Class Picture

Students in CS 211, Fall 2005
Updated: $Id: index.html 91 2005-12-18 20:27:22Z phf $ Validate: XHTML CSS
Copyright © 2005 Peter H. Fröhlich. All rights reserved.