Course Information

CS 3013: Operating Systems
Class Dates: C Term 2017, Tuesdays and Fridays
Meeting Time and Place:
     Section C01: 9:00am to 10:50am in Atwater-Kent 219
     Section C02: 12:00pm to 1:50pm in Kaven Hall 116

Course Catalog Description

This course provides the student with an understanding of the basic components of a general-purpose operating system. Topics include processes, process management, synchronization, input/output devices and their programming, interrupts, memory management, resource allocation, and an introduction to file systems. Students will be expected to design and implement a large piece of system software in the C programming language. Undergraduate credit may not be earned both for this course and for CS 502. Recommended background: CS 2303 or CS 2301, and CS 2011.

Instructor's Description

Operating systems are present in a broad range of devices, from embedded systems to powerful supercomputers. This course is designed to help students learn more about operating systems, allowing students to know how to write applications that leverage operating system resources or for those that wish to develop operating systems themselves. The course will introduce the concepts of concurrency, abstracton, and caching. Other topics, such as file systems and networking, may be discussed only briefly, but are described in greater detail in separate courses (CS 4513 - Distributed Systems and CS 3516 - Computer Networking, respectively).

Teaching Staff

Course Instructor (Section C01): Craig A. Shue, Ph.D.
Email: please post via the class discussion board
Office: Fuller Labs 236
Office Hours: Mondays, 2:30pm-3:30pm; Fridays, 2pm-3pm

Course Instructor (Section C02): Robert J. Walls, Ph.D.
Email: please post via the class discussion board
Office: Fuller Labs 147
Office Hours: walk-ins (if door open) and by appointment

Teaching Assistant: Joshua Pritchett
Office: Fuller Labs A22

Student Assistant: Binam Kayastha
Office: Fuller Labs A22
Office Hours: Fridays, 5pm-7pm

Student Assistant: Huyen Nguyen
Office: Fuller Labs A22
Office Hours: Tuesdays, 11am-12pm; Wednesdays, 3pm-4pm

Student Assistant: Harry Sadoyan
Office: Fuller Labs A22
Office Hours: Thursdays, 12pm-2pm

Student Assistant: Tejas Rao
Office: Fuller Labs A22
Office Hours: Mondays, 4-5pm and 7-8pm


We will be using the following textbooks for the course:

  1. Required: Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, Operating Systems: Three Easy Pieces (OSTEP), March, 2015. Available online for free at or as a $10 ebook.
  2. Optional: Robert Love, Linux Kernel Development, 3rd edition, Addison-Wesley, 2010. ISBN-13: 978-0672329463 ($24 used online; may also be available via WPI library)
  3. Optional: Allen Downe, The Little Book of Semaphores. Available online for free at

Students must complete readings from the OSTEP book before each class. A quiz at the start of class will include contents from the readings. Failure to acquire the book will likely lead to poor performance in the course.

Lecture Schedule and Readings

This schedule is subject to change. Any changes will be announced in class with at least one week's advance notice, when possible. All readings are out of the OSTEP textbook unless otherwise noted. All readings are due before class on the date indicated. Students are expected to have read the readings prior to arriving for class. All projects are due at 11:59:00pm on the date indicated.

ClassDateRequired Reading Description
1Friday, Jan. 13, 2017OSTEP Chapter 2 Class: Course Introduction
2Tuesday, Jan. 17, 2017OSTEP Chapters 4 and 5 Class: System calls, Threads, Synchronization
 Wednesday, Jan. 18, 2017 Due: Project 1 - Checkpoint
 Thursday, Jan. 19, 2017 Due: Project 0
3Friday, Jan. 20, 2017OSTEP Chapters 26 and 27 Class: Introduction to Project 2, Concurrency
4Tuesday, Jan. 24, 2017OSTEP Chapter 28 Class: Intro. to Concurrency, Processes
 Tuesday, Jan. 24, 2017 Due: Project 1 - Final
5Friday, Jan. 27, 2017OSTEP Chapters 29 and 30 Class: Synchronization, Concurrent Applications
 Sunday, Jan. 29, 2017 Due: Project 2 - Checkpoint
6Tuesday, Jan. 31, 2017OSTEP Chapters 31 and 32 Class: Concurrent Applications, Project 3
 Tuesday, Jan. 31, 2017 Due: Project 3A
7Friday, Feb. 3, 2017OSTEP Chapters 7, 9, 13 and 14 Class: Scheduling, Memory Management
 Friday, Feb. 3, 2017 Due: Project 2 - Final
8Tuesday, Feb. 7, 2017OSTEP Chapters 15, 16, and 17 Class: Memory Management
 Wednesday, Feb. 8, 2017 Due: Project 3B - Checkpoint
9Friday, Feb. 10, 2017OSTEP Chapters 18, 19, and 20 Class: Caching Principles and Paging
10Tuesday, Feb. 14, 2017OSTEP Chapters 21 and 22 Class: Caching and Paging Performance, Virtual Memory
 Wednesday, Feb. 15, 2017 Due: Project 3B - Final
11Friday, Feb. 17, 2017OSTEP Chapters 36 and 37 Class: File Systems, Input/Output
12Tuesday, Feb. 21, 2017OSTEP Chapter 39 Class: Input and Output
 Tuesday, Feb. 21, 2017 Due: Project 4 - Checkpoint
13Friday, Feb. 24, 2017 Class: System Security and Protection
 Friday, Feb. 24, 2017 Due: Project 4 - Final
14Tuesday, Feb. 28, 2017 Class: Linux, MacOS X, Android, IOS

Course Policies and Procedures

The following represent the official policies and procedures for the course. Please review this information and discuss any questions with the professor as soon as possible.


The university-wide myWPI system is insufficient for the course's needs. Instead, we will be using InstructAssist, a custom-built course management tool created by the instructor. This system will be used for posting grades, submitting projects, obtaining slides, scheduling project demonstrations, and posting partner evaluations. It is available at InstructAssist uses a WPI SSL certificate for authenticity and encryption to protect student records.

Official Communication

Class discussion, class hand-outs, posts on the class forum, emails to the student's WPI email account, and the course Web pages are avenues for official course communication. Students are responsible for any information distributed through any of these venues.

Class Email and Forum

Students must check their WPI email daily. The instructor and TAs will use email to send urgent information to the class. Classmates collaborating on teams may also use email to coordinate efforts, so checking email periodically will be essential for timely responses.

Students should post all questions about the course on the class discussion board. The teaching staff will use the discussion board to keep track of assistance requests. Further, posts on the discussion board will be available to all students by default, allowing everyone to learn from these questions.

By default, all students will be subscribed to receive email copies of the classwide announcements sent by the teaching staff. Students may unsubscribe from non-urgent postings by adjusting their profile settings. Students are responsible for all announcements, even if they elect not to receive email copies.

If a question is of a more personal or private nature, students can choose to create a new discussion topic and select the "Visible by Invitation Only" topic privacy option. Any communication in that topic will be visible only to the Instructor, the TAs, the student creating the topic, and any individuals the student explicitly invites to the topic. This approach will allow students to have a private discussion with the staff while still allowing the staff to keep track of unresolved issues and address them in a timely fashion.

Programming Assignments

The CS Department Documentation Format should be considered when programming. In general, code must be clean and organized. It must be appropriately commented as well. During project demonstrations, students may be graded on their ability to accurately describe what a code segment does, so students are well-advised to aim for clairity in their programming.

Submissions must include a README file and a Makefile for compilation. All programs must compile and execute on the provided virtual machines. Programs that do not compile, or programs lacking commenting, will not be graded and will be assigned a score of 0.

Students must present demonstrations for each of the course projects, except Project 0 and Project 3A. Students who fail to appear for a demonstration may earn a score of zero on the project until a demonstration is completed. During the demonstrations, students are expected to be able to explain their code and design decisions. For team projects, both partners are expected to attend the demonstration. If only one partner attends the demonstration, the absent partner may have a grade deduction.

For students working in pairs, each student must complete a partner evaluation indicating the contributions of each team member. Failure to complete an evaluation will result in a penalty. Students who are found to not have contributed their fair portion of the assigned deliverables may face grade deductions at the discretion of the teaching staff.

Programming Languages

Students with a strong computer science background develop the ability to quickly pick up a new programming language as needed. This provides them the flexibility to adapt to changing work requirements and the ability to recognize the most efficient tool for the job. Students pick up these abilities through exposure to different programming languages, especially those that serve as the model for future languages.

In this course, we will be using the C programming language. This language is the basis of many common operating systems and network programs, with operating system APIs designed with these languages in mind. Students without experience in C will have to develop such a background while concurrently developing course projects. This is extremely challenging and prior courses have shown that students without a background in C programming generally do not perform well in CS 3013.

The C Programming Language, by Kernighan and Ritchie, (ISBN: 0-13-110362-8) is the de facto standard guide to programming in C and provides a good reference in addition to the textbooks.

Course Participation and Professionalism

During lectures, students are to be focused on the course. Students should not use materials or electronic devices that would inhibit their attention to the course lecture and discussion. Laptops may only be used for note-taking purposes; transmission capabilities on these devices must be disabled and only appropriate note-taking application may be used in class. Mobile devices, such as phones or PDAs, are not to be used in class. Significant penalities may be assessed for repeated infractions.

Students must treat each other and the teaching staff with respect at all times. Disagreement, debates, and criticism of ideas are healthy aspects of academic environments; however, students should avoid demeaning language or comments which can be taken personally. The ability to handle conflict professionally and work with a variety of people is an acquired skill, yet is increasingly important in technical careers.

Late Submission

Students will not receive credit for Project 0 or Project 3A if they submit it late.

All other programming projects may be submitted late, but with significant penalties. Programs that are late by a certain amount of time, denoted as t, will incur the following penalties:

0 minutes < t ≤ 1 day10% deduction from maximum grade before the rest of the grading begins
1 day < t ≤ 3 days30% deduction from maximum grade before the rest of the grading begins
3 days < t ≤ 5 days50% deduction from maximum grade before the rest of the grading begins
5 days < tno credit will be awarded

Any projects submitted after 4pm on Tuesday, February 28, 2017 will not be graded. Any projects not demonstrated by 6pm on Thursday, March 2, 2017 will not be graded.

Course Grading

The course programming assignments and in-class quizes form the basis for 90% of the course grade. The remaining 10% of the course grade will be attributed to in class participation and professionalism associated with the course. Details on each of these components are as follows:

  • Quizzes (45%): There will be a 10-15 minute quiz at the beginning of each class (except for the first day). The two lowest quiz scores will automatically be dropped, allowing for absences, illnesses, or simply "bad days". The quizes will be short, typically only four questions long. The first three questions will cover material from reading due before class and will be more factual (and simplistic) in nature. The fourth question will be more application-oriented, requiring students to apply concepts from prior class discussions to new challenges. Students may not access reference materials, the Internet, or communicate with others during the quiz, electronically or otherwise, during the quiz period, even after a student has completed his or her own quiz. Students may not use a phone at any point during the quiz.
  • Projects (45%): There will be multiple programming projects in the course to allow students to apply concepts. These projects may be done individually or in pairs unless otherwise indicated. Projects may have different point values and projects may have "checkpoint" deliverables in which students must show substantial progress towards completing the project.
  • Participation and Professionalism (10%): Students are expected to be engaged in class, answer questions from the instructor, and ask questions when needed. Students must regularly attend classes and attend the project demonstration times they schedule. Students meeting the basic participation requirements should expect an 85% in this category; participation beyond the minimum can yield a higher score. Participation can be via office hours, on the course forum, or in class. Disregard for course policies or unprofessional conduct with students or the teaching staff will be penalized.

Student Disabilities

If you need course adaptations or accommodations because of a disability, or if you have medical information that you need to share with the instructor, please make an appointment with the instructor as soon as possible. If you have not already done so, students with disabilities who believe that they may need accommodations in this class are encouraged to contact the Office of Disability Services (ODS) as soon as possible to ensure that such accommodations are implemented in a timely fashion. This office is located in the West St. House (157 West St) and their phone number is 508.831.4908.

Academic Honesty

The WPI Academic Honesty Policy describes types of academic dishonesty and requirements in documentation. We take these matters seriously. In the case of academic dishonesty, the instructor is required to report the incident to the Dean of Student Affairs. The instructor's penalty for academic dishonesty is to assign a NR grade for the course.

In this class, students may not look at any previous versions of a course assignment or project, regardless of how it is posted. If a student accidentally discovers such a posting, they must report it to the instructor immediately, avoid the resource in the future, and delete any copies that are cached on their computer.

Students are likewise forbidden from facilitating other students, current or future, in plaigarism or cheating. Students may not distribute their code publicly on the Internet, or in other means, during the term or even after the class has concluded. Students may share their code with potential employers or other individuals privately, so long as the code would not become available to other WPI students.