Course Syllabus

NOTE: Some links in this syllabus page may only be accessible to currently enrolled students.

In this course we will learn a lot of interesting stuff about modern operating systems, such as, communicating with them using system calls, creating and managing multiple processes at once, creating multiple threads, getting processes and threads to synchronize their actions, and how processes can communicate with each other, when they are on the same machine, as well as over the network. We will be extensively using Unix, C and its libraries, and Rust in this course. You are not expected to know C or Rust coming into the course, and the knowledge of these languages needed in this course will be taught in the course.


At the completion of the course, you will be able to ...

  1. Justify the need for a multi-programmed operating system and explain the general structure of such systems.
  2. Select system calls for appropriate uses.
  3. Compare and contrast the process and thread abstractions and select an appropriate abstraction when needed.
  4. Assess and solve possible issues related to concurrent execution.
  5. Explain the file abstraction and system level I/O.
  6. Compare and choose mechanisms for inter-process communication.
  7. Write software by applying appropriate system programming principles and techniques.

Course Syllabus

A syllabus document is available as a pdf file.

Course Schedule

A weekly course schedule is available as a pdf file.

Syllabus Quiz

Please don't forget to take the syllabus quiz so you can continue onto the learning modules: Syllabus Quiz

Instructional Staff

Role Name Email
Instructor Nauman Chaudhry
Instructor Bram Lewis
GTA Eytan Brodsky 
GTA Yongbin Gu 
GTA Raghuram Subramanian 
GTA Cody Holliday 
GTA Saurabhkumar Makwana 
ULA Grigori Barbachov 

Communication Policy

Grading & Regrading

We will attempt to grade the assignments within 7 days of the due date. For questions related to grading or regrading please directly email the TA who graded your assignment. TA's are assigned to grade assignments based on student last names as follows (to be added):

Student's last name Grader
Admire - Florencio Eytan Brodsky
Flynn - Josephson Raghuram Subramanian
Joyce - Lin Yongbin Gu
Liu - Racia Cody Holliday
Rahal-Arabi - Stutts Saurabhkumar Makwana
Sugimoto - Zontos Grigori Barbachov

The instructors will be grading a random sampling from the existing groups, but please first go through your grader listed above.

You can request a regrade on an assignment by contacting your grader within 48 hours of receiving your grade. Include what points were taken off and why you feel your assignment/project does in fact meet the requirements you were penalized for not meeting. Keep in mind, this is a discussion about meeting standards and to write your request for regrading as such.

When requesting a regrade the grade will NEVER be lower than when you made the request. We will not lower a grade for finding something else wrong. That said, please note that while reviewing your request we discover we made a mistake in taking points but also made a mistake in not deducting points it is possible your grade will remain the same.

Assignment Extensions, Escalated Grading Questions & General Course Info

For Assignment extensions, escalated grading questions, and other general course information, please email the instructors.

Assignments & Course Content

Ask questions about assignments and course content, on Piazza, as opposed to direct messages to the instructors or the GTAs or the ULA, in order to help make these questions and answers available to everyone. You will also get an answer to your question far faster by posting in Piazza than by emailing or sending a private message, as there are more than a hundred people looking at those discussion boards.

Personal Questions

For personal questions, you can email the instructors from your OSU email account or via private posts on Piazza for the instructors.

Office Hours & Real-Time Communication

The official OSU Slack workspace for this class is:

Slack is a fantastic resource for real-time communication. We will conduct office hours on Slack. You can also ask questions of other students on Slack. However, if we are not on Slack, don't count on us reading the scroll back to find a question you asked earlier: your primary method for getting help is still Piazza.


If you email the instructors or the TAs, use your OSU email account. You must put CS344 in the subject line, or else we may miss it.

Response Time

We will strive to respond to email and Piazza posts within two business days. We will aim to have the assignments graded within 7 days of the due date. Please note that we may not be accessible over the weekend and on holidays.

Office Hours

The best place to ask questions and get help is on Piazza. If you'd like direct, personal help, our Office Hours for this course will be held on our Slack channel or on Zoom. The up to date list of office hours is provided on the "Home" page

Note: Office hours will not be held during Finals Week, or on days that the University has off (holidays, inclement weather days, etc.). The Instructors and TAs reserve the right to cancel or move office hours, but will give appropriate warning, if possible.

Programming Languages Used

We will use C and Rust programming languages in the course. You can use the course's OSU server for coding and running your programs in both these programming languages.

Server Access & File Management

You'll need to access our course server via a command-line driven SSH client to complete your programming assignments. For Windows, you can download PuTTY here - this is what I use to connect to the OSU UNIX servers. An SSH command-line client is already built-in to both Linux and MacOS's Terminal applications.

The course server you must use is - connect to this with your command-line client. This server has been set aside for us to use, and is where you should do ALL of your development. This is also the server we will be grading your software on. We will exclusively be using the bash shell on this server for grading and development, so make sure that's what you're using, too (see below for instructions on how to change your shell).

Follow the tutorial here to learn how to connect to our server with PuTTY. Note that you cannot connect to os1 from outside the OSU network; see the tutorial for details.

Do not use other OSU servers to run our class assignments on, as much of our software will crash the server you use; this is why we have been given our own machine! If you run your programs for this class on any other server at OSU, the EECS IT support team will notify me of it, and you will lose 15 points.

I highly recommend that you change the default shell used on our server to be bash (it's normally tcsh) by using this page: to an external site.

If you suspect that you have started too many programs, and/or are otherwise having trouble logging in to our EECS servers, please use this page to kill off any programs running on your account that might be blocking your access: to an external site.

If you still have trouble logging in, contact EECS Support at:

Backup your software as you write it; keep archived copies of your homework as you work on it. If you accidentally delete or overwrite something from an EECS server, and you don't have your own backup, you may be able to do some restoration manually by following these instructions: to an external site. . Additionally, you can contact for help recovering data.

Course Summary:

Date Details Due