CS 351 Syllabus

Course Overview

This course focuses on the programming facilities, mechanisms, and abstractions supported by modern operating systems and related low-level libraries and software. In short, we'll be looking at what sorts of things can be done via services provided by operating systems and how to go about doing them in a robust and efficient manner.

To a lesser extent, and only to the degree necessary to enable us to go about our programming tasks effectively, we'll also explore how certain abstractions presented by the operating system work "under-the-hood". For instance, when looking at how to perform low-level I/O it helps to understand some of the relevant data structures used by the operating system to fully appreciate how much time is spent, say, "opening" a file.

Course Outcomes

  1. Define the concept and role of a process in a modern operating system

  2. Describe the key abstractions an operating system provides to running processes

  3. Describe the function, usage, and operation of system calls related to process management, memory management and I/O

  4. Explain exceptional control flow, including:

    • Hardware interrupts
    • Software exceptions / Traps
    • Signals and signal handling
  5. Describe the essential operation of a modern MMU from a programmer's standpoint, including:

    • Caching and the TLB
    • Segmentation and paging for virtual memory
  6. Explain the operation of various memory allocation methods, including:

    • Implicit allocation (garbage collection)
    • Explicit allocation (malloc/free, reference counting, etc.)
  7. Describe, utilize, and implement a dynamic memory allocation API.

  8. Describe and utilize the system-level I/O API of a modern operating system, including:

    • File descriptors
    • File I/O
    • Buffered I/O
    • Interprocess communication
  9. Describe and utilize a low-level socket based networking API. This should include:

    • Client / Server model
    • Internetworking
    • Berkeley sockets
  10. Describe, design and utilize concurrent programming APIs, including:

    • POSIX Threads
    • Re-Entrant code
    • Synchronization primitives


The following textbook is required for this course:

The following are recommended (i.e., not strictly required) texts. The first is highly recommended if you've never worked with the C programming language before, and the second is useful if you'd like more in-depth information on material covered by the primary course text (and in lecture).


Your grade will be computed as follows:

And here's the grade scale:


Most of the assignments in this class will require you to read and write a substantial amount of code in C and/or assembly. All programming assignments will be submitted via version control system, with specific directions included in the assignment writeup.

Late policy

Each day an assignment is late, it will incur a 10% penalty. If an assignment is more than 5 days late, it will not be accepted for a score.


There will be two exams. The midterm exam is tentatively scheduled for October 8th, and the final exam schedule will be published by the registrar mid-semester. Both exams will be administered online, and will be open-book, open-notes.

If you need to reschedule either exam for any reason, please contact me as far in advance as possible so we can make suitable arrangements. Once you sit for an exam, the score you earn on it is final (i.e., there are no "retakes").

Exam scores may be linearly scaled so that the class median/average (whichever is lower) is 75%. I will publish the scaling formula if and when I do this.

Academic Integrity

You are welcome to discuss assignments with classmates, but all final work must be your own. Academic dishonesty of any kind may result in a 0 on the assignment, a reduction in final grade, and/or referral to the Dean.

The IIT code of Academic Honesty may be found in the undergraduate handbook.

Disability Accommodations

Reasonable accommodations will be made for students with documented disabilities. In order to receive accommodations, students must obtain a letter of accommodation from the Center for Disability Resources. The Center for Disability Resources (CDR) is located in Life Sciences Room 218, telephone 312 567.5744 or disabilities@iit.edu.

Sexual Harassment and Discrimination Information

Illinois Tech prohibits all sexual harassment, sexual misconduct, and gender discrimination by any member of our community. This includes harassment among students, staff, or faculty. Sexual harassment of a student by a faculty member or sexual harassment of an employee by a supervisor is particularly serious. Such conduct may easily create an intimidating, hostile, or offensive environment.

Illinois Tech encourages anyone experiencing sexual harassment or sexual misconduct to speak with the Office of Title IX Compliance for information on support options and the resolution process.

You can report sexual harassment electronically at iit.edu/incidentreport, which may be completed anonymously. You may additionally report by contacting the Title IX Coordinator, Virginia Foster at foster@iit.edu or the Deputy Title IX Coordinator at eespeland@iit.edu.

For confidential support, you may reach Illinois Tech’s Confidential Advisor at (773) 907-1062. You can also contact a licensed practitioner in Illinois Tech’s Student Health and Wellness Center at student.health@iit.edu or (312)567-7550

For a comprehensive list of resources regarding counseling services, medical assistance, legal assistance and visa and immigration services, you can visit the Office of Title IX Compliance website at https://www.iit.edu/title-ix/resources.