About the Course

This course introduces students to the design of operating systems. Students will be exposed to a wide variety of topics, including: processes, threads, concurrent programming, scheduling, memory, files, I/O management, and security issues. The course will conclude with a series of advanced topics.

Logistics

Lectures: Barnard Hall 108 | Monday, Wednesday, Friday 8:00–8:50 a.m.
Textbook: Operating Systems: Internals and Design Principles (9th Edition), by William Stallings — (Amazon)
D2L: https://ecat.montana.edu/d2l/home/553509

Instructor: Dr. Travis Peters | travis.peters1@montana.edu | NAH 253A | x4296
Office Hours: NAH 253A | Monday, Wednesday, Friday 9:00–10:00 a.m. and by appointment.

If you’d like to meet with me outside of office hours, please contact me and we’ll set up a time. Also, I hang around my office quite a bit so if my office door is open, feel free to drop in.

Grader: Gerard Shu Fuhnwi | gerard.shufuhnwi@student.montana.edu
Office Hours: Barnard Hall 259 | Monday, Wednesday 1:10–2:10 p.m.

For more information on getting help, visit the Student Success Center website.


Resources

Technical Resources
Reference Resources
Research Resources

Prerequisites

Prior to taking this course, you should have fulfilled the following CSCI prerequisites: CSCI 232, and CSCI 361 or EELE 371.

If you do not have any of the above prerequisites, you should touch base with me as soon as possible.

Questionnaire

I would like to know a little about you. Please fill out this Questionnaire as soon as possible.

Schedule

This is a tentative schedule that is subject to change with minimal notice. The schedule will be altered as the term progresses.

Below is the calendar for this course. It is the responsibility of the students to frequently check this web-page for schedule, readings, and assignment changes. As the professor, I will attempt to announce any change to the class, but this web-page should be viewed as authoritative. If you have any questions, please contact me.

Unless otherwise indicated, references are to the textbook Operating Systems: Internals and Design Principles (9th Edition), by William Stallings.

Feedback is always appreciated regarding typos, suggestions for more detailed explanations, additional examples, etc.

Other stuff from class: Makefile Vagrantfile

Date Topics & Lectures Reading Assignments
Week 1 Introduction; Week 1 will be led by Professor Binhai Zhu. Chapters 1 & 2  
08/26/2019 Introduction & Course Overview; History of OS Development (Part I). slides Chapter 2 HW1 (Due 09/13)
08/28/2019 Class Cancelled.    
08/30/2019 History of OS Development (Part II);
Early Memory Management: static and dynamic partition, memory deallocation. slides
7.1-7.2  
Week 2 Review and High-Level OS Concepts  
09/02/2019 No Class. Labor Day.    
09/04/2019 OS Reboot: Introduction Revisited + Week 1 Review slides   Questionnaire
09/06/2019 Computer System Overview & Operating System Overview slides Chapter 1 & 2  
Week 3 Processes, Threads Chapters 3–6  
09/09/2019 Class Cancelled.    
09/11/2019 Processes (Part I). slides 3.1, 3.2  
09/13/2019 Processes (Part II). slides fork_bomb.c 3.3-3.5  
Week 4  
09/16/2019 Processes (Part III). slides    
09/18/2019 Processes & Threads. slides 4.1, 4.2, 4.3, 4.6  
09/20/2019 Some Review of Processes & Threads. slides   HW2 (Due 10/11)
Week 5 Concurrency    
09/23/2019 Concurrency: Mutual Exclusion & Synchronization (Part I) slides 5.1-5.9, Intro to Threads  
09/25/2019 Concurrency: Mutual Exclusion & Synchronization (Part II) slides threads01.c threads02.c    
09/27/2019 Concurrency: Mutual Exclusion & Synchronization (Part III) slides   PA1 (Due 10/16)
Week 6      
09/30/2019 Finish Concurrency: Mutual Exclusion & Synchronization (Part IV) slides 6.1-6.6 (6.7-6.8) HW3 (Due 10/18)
10/02/2019 Concurrency: Deadlock & Starvation (Part V) slides (Extra) Synchronization + Deadlock  
10/04/2019 Exam Review — Come with questions and topics you’d like to review!    
Week 7      
10/07/2019 Exam #1 Sample Exam Coversheet    
10/09/2019 Class Cancelled.    
10/11/2019 Review Exam #1 Results (exam & feedback available on Gradescope)
MINIMUM 34.5%, MEDIAN 72.75%, MAXIMUM 91.5%, MEAN 67.48%, STD DEV 17.27%
   
Week 8 Scheduling Chapters 9 & 10  
10/14/2019 Scheduling (Part I) slides 9.1-9.2 (9.3)  
10/16/2019 Scheduling (Part II) slides 10.1-10.2 (10.3-10.5)  
10/18/2019 Scheduling (Part III) slides   HW4 (Due 10/25)
Week 9 Memory Management & Virtual Memory Chapters 7 & 8  
10/21/2019 Memory (Part I) slides 7.1-7.2  
10/23/2019 Memory (Part II) slides 7.3-7.4  
10/25/2019 Memory (Part III) slides 8.1-8.2 (8.3,8.4,8.6) HW5 (Due 11/01)
PA2 (Due 11/11)
Week 10 File Systems & I/O Chapters 11 & 12  
10/28/2019 Memory (Part IV) slides    
10/30/2019 I/O & Files (Part I) slides    
11/01/2019 I/O & Files (Part II) slides   Project Proposal Due!
HW6 (Due 11/08)
Week 11 OS Security. Potential Special Topics:
Embedded Systems, IoT, Mobile OS, Networks, VMs, Containers, Side-Channel Attacks
Chapters 13–16  
11/04/2019 Hold for Guest Lecture - Will Peteroy, CEO @ icebrg.io - Breaking and Securing an OS slides DEP & ASLR I / DEP & ASLR II / 0days  
11/06/2019 Exam Review — Come with questions and topics you’d like to review!    
11/08/2019 Exam #2 Sample Exam Coversheet   PA3 (Due 12/07 Due 12/12)
Week 12    
11/11/2019 No Class. Veteran’s Day.    
11/13/2019 Hold for Guest Lecture - Daniel Pagan, OS Enthusiast & Pen Tester @ IBM X-Force Red slides    
11/15/2019 Review Exam #2 Results (exam & feedback available on Gradescope)
MINIMUM 51.5%, MEDIAN 85.0%, MAXIMUM 97.0%, MEAN 81.93%, STD DEV 11.13%
   
Week 13    
11/18/2019 OS Wrap-Up slides    
11/20/2019 Project Presentations.    
11/22/2019 Class Cancelled. Project Presentations.    
Week 14    
11/25/2019 Class Cancelled. Project Presentations.    
11/27/2019 No Class. Thanksgiving.    
11/29/2019 No Class. Thanksgiving.    
Week 15    
12/02/2019 Project Presentations.    
12/04/2019 Project Presentations.    
12/06/2019 Project Presentations. (Last Day of Class.)    
Week 16    
12/12/2019 Project Presentations. (Official Final Exam Slot — 8:00am - 9:50am.)   Project Due!
PA3 Due!

Schedule Legend: HW = Homework, P = Programming Assignment, E = Exam.

Grading

The course will involve a variety of assignments, exams, and a project. Unless otherwise noted by the instructor, all work in this course is to be completed independently. If you are ever uncertain of how to complete an assignment, you can go to office hours or engage in high-level discussions about the problem with your classmates on the Piazza boards.

If a scheduling conflict prevents you from taking an exam at the scheduled time, you must let me know at least one week before the exam.

There is no final exam for the course, but there is a final project.

Will the course grades be curved?

No. I’ve studied the topic and in my current understanding (thanks to great insights and research by others), applying a curve does more harm than good in the long run.

Assignments

Homework in this course comes in two forms: short assessments of comprehension based on textbook readings, paper readings, material covered in class, etc., and programming assignments that provide opportunities to gain hands-on experience with select topics from the course.

Handing in Assignments

Unless otherwise stated, everything will be submitted through D2L, and is due by 10pm on the due date.

Even when an assignment has some written exercises, you are required to either type in a file or scan your written work and submit it electronically.

To submit output from your program, submit a copy-pasted file in plain text format and/or a screenshot, as appropriate.

For plain text, you can use an editor like Sublime, TextEdit, NotePad, Emacs, or even Word, but be sure to save as plain text.

If an assignment requires you to submit multiple files, zip all the files into a single zip file and submit that. If you have to revise your submission, submit your new zip file once more, with VX appended (V2 for Version 2, V3 for Version 3, etc.); only the last version will be graded.

Late Penalties

You are allowed at most one late submission (up to 48 hours) with no penalty – no excuse required.

To use your free late pass, indicate in your submission that you are electing to use your free pass (e.g., in a comment on your submission in D2L).

Note that you cannot change this decision later.

Once your pass is used (or you fail to indicate that you are using your free pass), the penalties for late submissions are as follows:

Note: this cannot be used to receive full credit on any assignment checkpoints.

Exams

There will be two in-class exams. If you are unable to attend class on these days, you must meet with me at least 1 week prior to the scheduled date of the exam to arrange an alternative date/time/location to take the exam.

Exam #1 will be held in class on 10/07/2019. Topics covered up to the class prior to the exam are all in-scope for this exam. (In other words, all topics covered in the first half of this course are fair game.) Sample Exam Coversheet

Exam #2 will be held in class on 11/08/2019. Topics covered between the first exam and up to the class prior to the exam are all in-scope for this exam. (In other words, all topics covered in the second half of this course are fair game.) Sample Exam Coversheet

Gradescope

We will be using Gradescope to evaluate exams this term, which allows us to provide fast and accurate feedback on your work. Exam grades will be returned through Gradescope. As soon as grades are posted, you will be notified immediately so that you can log in and see your feedback. You may also submit regrade requests if you feel we have made a mistake.

MSU has an institutional license with Gradescope, so you can use your NedID to login: https://www.gradescope.com/saml.

Project

Students will complete an OS-related project in the final weeks of this term. Students taking this course will be divided into groups of 2-4 people. (1-person teams are permissible, but groups of 2-4 people are preferable.) Each group will choose, propose, and implement an OS-related project; groups will also present a live demo and write a report about the project. The evaluation of the project is based on the report, quality, presentation, and participation. Each member of the same group should participate in the presentation/demo and will receive the same mark.

Click here to go to the official project page…

Sample Solutions

Any sample solutions that are released will be posted on D2L.

Course Expectations

The expectations for the course are that students will attend every class, do any readings assigned for class, and actively and constructively participate in class discussions. Class participation will be a measure of contributing to the discourse both in class, through discussion and questions, and outside of class through contributing and responding to the D2L forum.

Laptops and Phones

Out of respect for your classmates, I ask that you turn off all laptops, tablets, and phone screens for the duration of each class!

I have heard of various ways of dealing with the distractions that laptops cause during lecture: laptop zones, laptop permission forms, and the honor system. None worked. I also have a hard time saying “no laptops” since I know that some people do use them to take notes and follow along with live coding examples, etc. Here’s what I propose:

If you are someone that absolutely needs their laptop during lecture and you can’t part with it for 3 hours per week, then by all means, use your laptop. If you can manage to go through lecture without your laptop, I believe you will learn more and ultimately take more away from this class. There is recent research that attests to the negative impacts of learning and retention when multitasking. It has also been shown that writing notes by hand rather than on a laptop engages different cognitive processes and has direct (positive) consequences for learning.

Getting Help

Read: How To Ask Questions The Smart Way, Eric Steven Raymond

Academic Honesty

Please review MSU’s Code of Conduct, Policies, Regulations, & Reports.

A couple of clarifications and additions:

TL;DR Although you may discuss and design with others, the work you hand in (e.g., code, write-ups) must be entirely your own. Anything you submit that did not originate from you must be accompanied by attribution. Also, please do not share solutions or detailed information about solutions (e.g., specific code) with others.

Religious Observances

Some students may wish to take part in religious observances that occur during this academic term. If you have a religious observance that conflicts with your participation in the course, please meet with me as soon as possible to discuss appropriate accommodations.

Accommodations & Disabilities

If you have a documented disability (including “invisible” disabilities such as chronic diseases and learning disabilities) for which you are or may be requesting any accommodation(s), I encourage you to reach out to me and the Office of Disability Services (ODS) as soon as possible.

If you have a need for accommodations on exams, please see information on the MSU’s Testing Services website.