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.

Ryan Gambord

Course Syllabus

The syllabus document is available as a pdf file.

Course Schedule

The course is broken up into weekly modules, each with a major theme, along with major assignments to go with the modules.

The course schedule is available as a pdf file.

Syllabus Quiz

Please don't forget to take the syllabus quiz, which is a prerequisite to unlock the first module: Syllabus Quiz

Instructional Staff

Refer to the syllabus pdf document for contact info of instructional staff.

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. Regrades are considered only when you can provide evidence that your program meets the expectations or produces different output than the grader experienced.

Assignments & Course Content

Ask questions about assignments and course content, on Ed discussions or in Teams, as opposed to direct messages to instructional staff, 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 Ed or Teams 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 Ed or Teams for the instructors.

Office Hours & Real-Time Communication

See the Accessing Microsoft Teams page for info about connecting to the class Teams channel.

Teams is a resource for real-time communication, and can be used to communicate directly with other students. It will also be used as the primary contact method during office hours. 

Emails

If you email the instructors or the TAs, use your OSU email account. Please put CS344 in the subject line. If you don't receive a response within 48 business hours, please reach out again; we may have missed your email.

Response Time

We will strive to respond to email and Ed 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 Ed discussions or Teams. If you'd like direct, personal help, our Office Hours for this course will be held on our Teams channel or on Zoom. The up to date list of office hours is provided on the "Home" page.

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. Linux and Mac computers should already have an SSH client installed, or can be installed easily with a package manager. Windows users should install Windows Subsystem for Linux (WSL), which manages a linux virtual machine, and use the SSH client that it provides to do your work.

The course server you must use is os1.engr.oregonstate.edu - connect to this with your command-line client (possibly via access.engr.oregonstate.edu as a jump-host if not using the school vpn). This server has been set aside for us to use, and is where you should do ALL of your development. Your programs will be tested on os1 for grading. We have our own server because students in this class have a tendency to crash the server. IT will notify me if they catch you working on another server, and you will be harshly penalized for it.

Course content covering shell commands will assume that you are using the bash shell. A shell is a program that interprets commands, executes shell scripts, and runs programs for you; it's what provides the command-line interface. Scripts/commands written for Bash may not work in other shells (zsh, tcsh, csh, etc).

Instructions for setting all of this up are provided in the course content later on. 

For problems you are unable to solve, contact EECS Support at: support@engr.oregonstate.edu

Course Summary:

Date Details Due