600.211: Unix Systems Programming
Fall Semester 2005: September 8, 2005 - December 12, 2005
Contents
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.
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
Week 1: Introduction and Overview (9/12-9/18)
Lecture:
-
Monday:
Welcome and Overview
-
Tuesday:
A Tour of Unix
-
Wednesday:
A Very Brief Review of C
Reading:
-
Required:
Stevens, Chapters 1 and 2
-
Optional:
Summit, C Programming (or any other C tutorial)
Deadlines:
-
Monday:
Grab Assignment 1 and get started.
-
Tuesday:
Introduce yourself on the course mailing list. (Graded)
-
Sunday:
Turn in your solution to Assignment 1.
Week 2: Files and Directories (9/19-9/25)
Lecture:
-
Monday:
Makefiles, Simple system calls for files (Ashley)
-
Tuesday:
More system calls for files
-
Wednesday:
First lab session, implementing
cat
Reading:
-
Required:
Stevens 3 and 4
Deadlines:
Week 3: Files and Directories (9/26-10/2)
Lecture:
-
Monday:
More system calls for files and permissions and stuff
-
Tuesday:
Some more calls, introduction to Subversion
-
Wednesday:
Second lab session, implementing
ls
Reading:
-
Required:
Stevens 5 and 6
Deadlines:
Week 4: Processes (10/3-10/9)
Lecture:
-
Monday:
Introduction to processes and process environment
-
Tuesday:
More process details
-
Wednesday:
Third lab session, playing around with
fork.
Reading:
-
Required:
Stevens 7 and 8
Deadlines:
-
Monday:
Grab Assignment 3 and get started.
-
Wednesday:
Take and defend a position regarding
"Fork: Good call, bad call?"
on the discussion list; discuss. (Graded)
Week 5: Processes, Signals, Pipes (10/10-10/16)
Lecture:
-
Monday:
More process stuff (groups, sessions), Introduction to signals
-
Tuesday:
More signals stuff, Introduction to pipes
-
Wednesday:
Fourth lab session, hacking shell pipes by hand.
Reading:
-
Required:
Stevens 8, 9, and 10
Deadlines:
Week 6: Interprocess Communication (10/17-10/23)
Lecture:
-
Monday:
Holiday
-
Tuesday:
[Midterm 1]
[Solution]
-
Wednesday:
Fifth lab session, chat system using named pipes.
Reading:
Deadlines:
Week 7: Threads and Networking (10/24-10/30)
Lecture:
-
Monday:
Introduction to Threads (Stevens 11, aborted in favor of sockets)
-
Tuesday:
Introduction to Sockets (Stevens 16),
I/O Multiplexing (Stevens 14.5)
-
Wednesday:
Sixth lab session, chat system using sockets.
Reading:
-
Required:
Stevens 16
-
Optional:
Whatever you can get your hands on regarding web servers?
Deadlines:
-
Tuesday:
Grab Assignment 4 and get started.
-
Friday:
Email us
the URL for your team's draft website. (Graded)
Week 8: Networking and Threads (10/31-11/6)
Lecture:
-
Monday:
Getting sockets straight, especially addressing (which is a mess).
-
Tuesday:
More on threads (continued from last week).
-
Wednesday:
Seventh lab session, playing around with threads.
Reading:
Deadlines:
Week 9: Threads and Daemons (11/7-11/13)
Lecture:
-
Monday:
Project Review Session I
-
Tuesday:
Thread Synchronization, Thread Control, Miscellaneous
-
Wednesday:
Daemon Processes
Reading:
-
Required:
Stevens 11, 12, 13?
Deadlines:
Week 10: Advanced I/O (11/14-11/20)
Lecture:
-
Monday:
No lecture, ABET interviews. :-)
-
Tuesday:
No lecture, ABET locked away my text book. :-/
-
Wednesday:
Non-blocking I/O, Record Locking
Reading:
Deadlines:
Week 11: Advanced I/O (11/21-11/27)
Lecture:
-
Monday:
Asynchronous I/O, Memory-Mapped I/O
-
Tuesday:
[Midterm 2]
[Solution]
-
Wednesday:
Nobody in class because of Thanksgiving. Happy Turkey! :-)
Reading:
Deadlines:
Week 12: Advanced IPC and Terminals (11/28-12/4)
Lecture:
-
Monday:
Advanced IPC Mechanisms (STREAMS-based pipes, Unix domain sockets)
-
Tuesday:
Detour: Algebraic Specification of Abstract Data Types
-
Wednesday:
Introduction to Terminal I/O
Reading:
-
Required:
Stevens 17 and 18
Week 13: Terminals (12/5-12/11)
Lecture:
-
Monday:
Compilers in 45 Minutes (Ad :-)
-
Tuesday:
Introduction to Curses (Glenn)
-
Wednesday:
Eighth lab session, playing around with curses and threads.
Reading:
-
Required:
Stevens 18 and 19
Deadlines:
Week 13+1: Review and Outlook (12/12)
Lecture:
-
Monday:
Review and Outlook,
Q&A for Final Exam
Reading:
-
Required:
Stevens 1 to 21
Deadlines:
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
Assignments (8): 50%,
Midterms (2): 20%,
Final (1): 20%,
Miscellaneous (unknown number): 10%.
Class Picture
Updated:
$Id: index.html 91 2005-12-18 20:27:22Z phf $
Validate:
XHTML
CSS
Copyright © 2005
Peter H. Fröhlich.
All rights reserved.