Syllabus

[top]

Description & Goals

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.

Goals

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

Prerequisite: 2.7 or better in CSS 502

[top]

Administrivia

Location & Time

Professor: Morris Bernstein

[top]

Textbooks

Course material is based on Operating System Concepts. 9th edition, Avi Silberschatz, Peter Galvin, and Greg Gagne. You may prefer the 10th edition, which is only available in EPUB format, but your instructor favors dead-tree editions for reading technical material.

Slides for the 10th edition are available at http://os-book.com/OS10/slide-dir/index.html.

Your instructor also likes Modern Operating Systems, 4th edition, Andrew S. Tanenbaum and Herbert Bos. Tanenbaum is also the author of the Minix operating system, which was designed for teaching. Minix inspired a young student by the name of Torvalds to write his own operating system based on Unix.

Textbooks are expensive. For the purposes of the course, you may be able to get by with less expensive options such as used books or earlier editions.

See also recommended supplementary texts

[top]

Assignments and Grading

Labs 5%
Programming Assignment 1 10%
Programming Assignment 2 10%
Programming Assignment 3 10%
Final Project 20%
Midterm Exam 25%
Final Exam 25%
Total 105%

Turn in assignments using Canvas by 11:30pm on the due date. Acceptance of late assignments will be determined on a case-by-case basis. Generally, it won't be a problem if it's only a few days (e.g. due to demands of your day job), as long as the privilege is not abused.

Submit a single compressed tar or zip archive containing all source code with sample input and output files as appropiate. Include a README file with relevant notes and discussion (basically, as much or as little as necessary to show you got the pedagogical value of the assignment, generally no more than a page or so). Empirical results (such as timing measurements) may be reported in the README.

Include BUILD and RUN scripts for compiling on running your program(s).

Do not include compiled executables or large data files.

Unless otherwise stated, assignments are to be implemented in standard C or C++ (2011 or greater). Your solutions must be runnable on the machines in the Linux Lab (UW1-320). You may use your preferred development enviroment, but do your final testing on a Linux machine. There are some subtle differences between the toolsets under *BSD (including Mac) and Linux. The assignments will be graded on the instructor's laptop, but any subtle conflicts or incompatabilities will be resolved using the lab machines.

Compile-time errors will not be looked upon kindly. Always compile with the -Wall (all warnings1) -Werror (warnings are treated as errors), and -pedantic flags.

While no specific style is required2, expect to lose points if your code is painful to read. Variable names should be concise but descriptive3. Comments should enhance the code4. Consistency matters.

Since this course is on low-level programming techniques, pay attention to resource management. Avoid leaking memory or open file descriptors5. Check the return status of system and low-level library calls6.

Generally, unless there is a good reason otherwise, programs should be implemented to read from standard input (cin) and write to standard output (cout) and standard error (cerr). Standard I/O can be redirected, so you can script (automate) program execution. Do not submit screen captures.

While you are encouraged to discuss the assignments with your peers, do not crib off each other. Make sure you know where to draw the line. Blindly copying something you found on some website is an example of cargo cult programming and is never a good thing. In addition to citing all sources, do make sure you actually understand the solution. Your instructor hates filing academic misconduct paperwork and it makes him grumpy. Do not make your instructor grumpy. See the Academic Conduct section below.

Generic feedback about assignments will be provided in class. Individual feedback will be given on request during office hours.

If a grade is egregiously out of whack with your expectations, feel free to ask for another look. With limited time available for grading7, overlooking something is easy to do. Just be aware that a re-evaluation may cause the grade to go up or down.

Final grades may be adjusted at the instructor's discretion.

[top]

Policies

See the common STEM policies document: http://www.uwb.edu/getattachment/stem/about/stem-policies/classroom-policies-stem-fc-1-12-17.pdf for information on:

Class Conduct

Live lectures are inherently interactive. Questions during class are encouraged. Raise your hand or dance like a chicken to get the instructor's attention. At the instructor's discretion, answers may be tabled until the end of class or office hours if they veer too far off topic.

Limit computer use during class to note-taking so as to not distract or disturb your classmates or your instructor. Since a large part of the presentation involves diagrams, it may be more convenient to turn off the computer and take notes the old-fashioned way. Quill pens are optional.

Flash photography is not permitted. Non-flash photography to capture the white board will be permitted as long as it is not disruptive or distracting. Don't even think about video.

Silence your cell phones.

If you arrive late or have to leave in the middle of class, do so as quietly as possible without causing disruption.

As this course focuses on technical knowledge vital to your future career in software development, the classroom is a politics-free zone. As in the workplace, you may find yourself working with people who hold differing views on many controversial subjects outside the realm of software engineering. There are times and places to discuss such topics but the software engineering classroom is neither. You may be asked to cover or put away clothing, electronics, or other gear decorated with controversial, offensive, inflamatory, or simply distracting slogans.

Attendance and Class Participation

While attendance is not taken, to get the most out of the course, plan to attend class and be actively engaged.

If you have to miss any classes, it's your responsibility to keep up with the material. Get lecture notes from a peer or see the instructor during office hours.

Do not email the instructor just to tell him you won't be able to attend a lecture. It is not his problem.

Illness

If you're sick, stay home. Do not selfishly infect others.

If you have to miss an assignment due to illness, let the instructor know as soon as practical. Generally, a few days shouldn't be a problem, but do not abuse the policy. Anything longer will probably require a doctor's note.

A missed exam will require a doctor's note for make-up accommodation.

Email

Simple email questions might get a response if it is so urgent (in the instructor's opinion) that it cannot wait for the next class day or office hours. Complex questions are best saved for office hours.

The instructor has generous office hours. Please respect the instructor's time by not inundating him with email.

[top]

Academic Conduct

Please review the Student Guide to Academic Integrity.

Assignments and projects are to be done independently unless otherwise indicated. Their purpose is to help you understand complicated technical material that will aid your future career prospects, whether in industry or graduate studies.

Labs are designed to prepare you for a related assignment. They are minimally valuable and will be graded on a pass/fail basis. You may work together on the labs but do avoid riding on someone else's coattails; you'll still have to complete the assignments on your own.

The BUILD and RUN scripts are like cover sheets for your assignments. You will lose points by omitting them, but they are not part of the core pedagogical value of the assignment and do not need to be your original work. You may use any legally authorized material from any source for this purpose8 if properly cited.

There is a lot of good reference material on the interwebs. Refrain from seeking exact solutions to the assignments. If you happen to stumble upon anything suspiciously similar, let the instructor know as soon as practical. If it was in good faith, there should be no problem (likely with some additional work assigned to be fair). Bad faith leads to consequences. Attempting to disguise copying is evidence of bad faith.

When in doubt, cite your references.

In general, you will be graded on your own work, not on your ability to use a search engine. You won't be penalized for being resourceful, but you will be for not doing your own work. Use good judgement to determine where to draw the line.

Do not post assignments and solutions to any public websites or forums. Doing so potentially helps someone else cheat. Don't tempt them; it makes you an accomplice. Facilitating plagiarism is also plagiarism and subject to the same sanctions.

By all means, discuss the problem statement and help each other debug, but do your own design and coding. See the student honor code, particularly the section on academic misconduct. Know where to draw the line.

Cheating, when detected, will be referred to Student Conduct. where a neutral third party will make a determination. Pending adjudication, the course grade for the accused will be "X" ("no grade submitted"). If affirmed, the minimum sanction will be a zero grade for the assignment and a record of the incident will go into the perpetrator's file. The university may impose additional sanctions, up to and including expulsion, depending on the seriousness of the incident and whether it has happened before.

Furthermore, if you do manage to cheat and get away with it, you may pass the course but you will fail your job interviews because you didn't learn vital material you needed to know. This does eventually catch up to you.

Do not disrespect your instructor's hard work by cheating. Office hours are generous and he wants you to succeed.

[top]

Special-Needs Students

To request academic accommodations due to a disability, please contact Disability Resources for Students at 425.352.5307, 425.352.5303 TDD, 425.352.5455 FAX, or at uwbdrs@uw.edu.

[top]

Tentative Schedule

Subject to change as the quarter progresses.

Week Date Lecture # Topic Assignment
1 Apr 1 1
Apr 3 2
2 Apr 8 3 Lab #1: Process Management
due April 11
Apr 10 4
  • Processes (cont.)
3 Apr 15 5 Assignment #1: Convex Hull
due April 18
Apr 17 6
  • Threads (cont.)
4 Apr 22 7 Lab #2: Thread Synchronization
due April 23
Apr 24 8
5 Apr 29 9 Assignment #2: Sleeping Barbers
due April 30
May 1 10
  • Midterm Review
6 May 6 11
  • Midterm
May 8 12
7 May 13 13
  • File System Implementation (cont.)
Lab #3: Unix Low-Level I/O
due May 14
May 15 14
8 May 20 15
  • Distributed Systems (cont.)
Assignment #3: C Standard Library I/O
due May 23
May 22 16
9 May 27 17
  • Memorial Day (no Class)
Lab #4: UDP Multicast
due May 30
May 29 18
10 Jun 3 19 Final Project: Inter-Segment/Group UDP Broadcast
due June 6
Jun 5 20
  • Virtual Memory (cont.)
  • Final Exam

Footnotes