Course Syllabus

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

Operating Systems II explores the internals of operating systems including virtualization, concurrency, and persistence. We also study the principles of computer operating systems like concurrent processes, synchronization, memory management, job scheduling, multiprocessing, file systems, performance evaluation, and networking.

Our main approach will be to build our own operating system. The course material will prepare you for 4 different labs which are the only 4 graded components of the course. The labs ask you to build out and finish JOS, an educational OS project. You'll start by getting it boot (Lab 1), adding virtual memory (Lab 2), setting up  process management (Lab 3), and finally adding multi-tasking (Lab 4).

A lot of Universities and colleges have helped to build JOS and the materials in this course! Notably,  MIT's 6.828, the original course that developed JOS. It also borrows materials from CS3210 of the Georgia Institute of TechnologyCSE 451 of the University of Washington. and material by Yeongjin Jang and Eric Muhati.

Note: some of the links in these Syllabus tabs may only accessible to registered students.

Online Instructor

Hello! My name is Benjamin Brewster. I've been teaching at OSU since 2014 and have loved every minute of it. I'm the Online Program Director, which means I manage the operations of all the online courses. There's a short bio of me here. I'm also honored to be teaching this course!

Before teaching, I started, ran, and sold an IT business here in Corvallis. I've taught Networking, System Administration, Capstone, and Operating Systems; in fact, most of the materials that make up this course were written by me.

My wife Amanda and I have five kids and live in Roseburg, OR. It's a two-hour drive to get to campus; when I make the drive, I catch up on sci-fi audiobooks.

My hobbies are aviation, board games, lockpicking, and electronics. I have a Sport Pilot's license (I'm almost done with my Private license), ham radio license, and motorcycle license.

Previous Online Instructor

The previous teacher of this course was Eric Muhati. He added a lot of great videos and comments in the course, and I'd like to put his intro video here, too:

Course Syllabus

The syllabus is available as a pdf file.

Syllabus Quiz

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

Instructional Staff

Role Name Email
Teacher Ben Brewster

brewsteb@oregonstate.edu

GTA Ping-Jui Liao

liaop@oregonstate.edu

ULA Patrick Iacob

iacobp@oregonstate.edu

ULA Tyler Harwood

harwoodt@oregonstate.edu


Communication Policy

Grading & Regrading & Extensions

We will attempt to grade the assignments within 5 days of the due date. For questions related to grading, regrading, or extensions, please directly email your grading TA as listed below. TA's grade assignments of groups of students based on student last names as follows:

Start End
Grader
From Beginning Fink

Ping-Jui Liao

Francisco Martin

Patrick Iacob

Mayfield To End

Tyler Harwood

You can request a regrade on an assignment by contacting your grader within 48 hours of receiving your grade (See the Syllabus for details).

Assignments & Course Content

Ask questions about assignments and course content on Teams or Ed discussions, as opposed to direct messages to the instructors or the TAs, 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 on Teams and Ed than by emailing or sending a private message, as there are many more people looking at those discussion boards!

Personal Questions

For personal questions, please email the teacher from your OSU email account. You must put CS444 in the subject line, or else I may miss it. You can also post a private message on Teams or Ed Discussions.

Email

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

Response Time

We will strive to respond to communications within one business day. We will aim to have the assignments graded within 5 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 Teams and Ed Discussions. If you'd like direct, personal help, our Office Hours for this course will be held using a mixture of venues. Here are our office hours, all times Pacific:

Note: Office hours will not be held during the first week of class, 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, bash, and Assembly programming languages in the course. All course work should be done on our dedicated OSU server for coding and running your programs (see below).

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 - or use any other SSH-capable command line program. An SSH command-line client is already built-in to both Linux and MacOS's Terminal applications.

The course server you must use is os2.engr.oregonstate.edu - 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 os2 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.

Of critical importance is Lab Setup page. This will walk you through the configuration you'll need to do in your user account on os2 to complete the labs. This Setup page is linked liberally throughout Canvas.

I highly recommend that you change the default shell used on our server to be bash (it's normally tcsh) by using this page: https://teach.engr.oregonstate.edu/teach.php?type=change_shell

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:
https://teach.engr.oregonstate.edu/teach.php?type=kill_runaway_processes

If you still have trouble logging in, contact EECS Support at: support@engr.oregonstate.edu

Backup your software as you write it; our use of git will certainly help in that. 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: http://it.engineering.oregonstate.edu/restoring-snapshots-command-line-macos-and-linux Additionally, you can contact support@engr.oregonstate.edu for help recovering data.