CSS 503: Systems Programming
Spring 2012

TTh 6:00-7:45pm at UW2-031

Prof. Munehiro Fukuda


Professor:

Munehiro Fukuda <mfukuda@u.washington.edu>, room UW1-331, phone 352-3459, office hours: TTh 5:30-6:00pm and 7:45-8:00pm

Course Description:

This course examines the logical design and programming aspects of operating systems and network communication. Topics covered include processes, threads, synchronization, deadlocks, memory management, virtual memory, file systems, and client-server network programming.

Course Goals:

The overall goal of CSS 503, "Systems Programming" includes:

Prerequisites:

CSS502.

Work Load and Grading:

Course Work Percentage
Programming 1 11%
Programming 2 11%
Programming 3 11%
Final Project 17%
Midterm Exam 25%
Final Exam 25%

Textbooks:

  1. Operating System Concepts, Eighth edition, Avi Silberschatz, Peter Galvin, and Greg Gagne, Addison-Wesley, 2009.

References:

  1. Advanced Programming in the Unix Environment, 2nd Ed, W. Richard Stevens, Addison Wesley, 2005
  2. Beginning Linux Programming, 4th Edition, Neil Matthew and Richard Stones, Wrox, 2007.
  3. Unix Network Programming, Volume 1, 3rd Version W. Richard Stevens, Addison-Wesley, 2003.

Policies:

All programming assignments are to be done independently. Any collaboration of work will result in severe penalty. You may discuss the problem statement and any clarification with each other, but any actual work to be turned in, must be done without collaboration.

Any homework is due at the beginning of class on the due date. The submission may be postponed only in emergencies such as accidents, sickness, sudden business trips, and family emergencies, in which case you may turn in yor homework late with a written proof. No make-up exams will be given except under exceptional circumstances. Barring emergencies, I must be informed before the exam.

To request academic accommodations due to a disability, please contact Disability Resources for Services (DRS) in UW1-175, (email: drs@uwb.edu, TDD: 425-352-5303, and FAX: 425-352-5381). If you have a documented disability on file with the DSS office, please have your DRS counselor contact me and we can discuss accommodations.

Assignments:

Four programming assignments are given. Please read assignment.html to understand the environment you use for assigments and the submission/grading procedures.
  1. Process management
  2. Multithreaded program
  3. Process/Thread synchronization
  4. Multithreaded TCP server

Topics covered and tentative 503 fall 2012 schedule:

Note that this is an approximate ordering of topics. Chapters will take about the allotted time and not all sections in all chapters are covered.

Week Date (TTh) Topics Lab Work Chapters Reading Assignment
1 Mar 27 Introduction   1 pp3-47  
  Mar 29 OS Structures   2 pp49-98  
2 Apr 3 Processes   3.1-3.5 pp103-128  
  Apr 5   Lab 1     Program 1 assigned
3 Apr 10 Threads   4 pp153-182  
  Apr 12        
4 Apr 17 Process Synchronization   6 pp225-281  
  Apr 19   Lab 2     Program 1 due
Program 2 assigned
5 Apr 24 Deadlocks   7 pp283-311  
  Apr 26 File-System Interface   10 pp421-460  
6 May 1 Midterm exam in class   1 - 3.5, 4, 6, and 7 pp3-128, 153-182, and pp225-311  
  May 3 File-System Implementation Lab 3 11 pp461-503 Program 2 due
Program 3 assigned
7 May 8          
  May 10 Distributed System Structures   16 pp673-704  
8 May 15          
  May 17 Communication in Client-Server Systems Lab 4 3.6 pp128-140 Program 3 due
Project assigned
9 May 22 Main Memory   8 pp351-355 Program 3 due
  May 24          
10 May 29 Virtual Memory   9 pp357-418  
  May 31          
11 Jun 5 Final exam in class   3.6, 8 - 11, and 16 pp128-140, 351-503, and 673-704 Final project due at 6pm
11 Jun 7         Final project due at 6pm