Course Information

CS 3013: Operating Systems
Time: A term, 2012, Tuesdays and Fridays, 12:00pm to 1:50pm
Location: Fuller Labs, Lower Perreault Lecture Hall

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 or networking, appear in separate courses (CS 4513 - Distributed Systems and CS 3516 - Computer Networking, respectively).

Teaching Staff

Course Instructor: Craig A. Shue, Ph.D.
Email: cshue at cs.wpi.edu
Office: Fuller Labs 236
Office Hours: Walk-ins welcome. Appointments also available, if desired.

Teaching Assistant: Satyanarayana Janga
Email: sjanga at wpi.edu
Office: Fuller Labs A22
Office Hours: Mondays, 3pm-5pm; Wednesdays, 1pm-3pm; Thursdays, 2pm-4pm

Teaching Assistant: Curtis Taylor
Email: crtaylor at cs.wpi.edu
Office: Fuller Labs A22
Office Hours: Mondays 9am-11am and 1pm-2pm; Wednesdays, 10am-11am; Thursday 9am-11am

Textbooks

We will be using the following textbooks for the course:

  1. Andrew S. Tanenbaum, Modern Operating Systems. 3rd edition, Prentice Hall, 2008.
  2. Robert Love, Linux Kernel Development, 3rd edition, Addison-Wesley, 2010.

Students must complete readings from the Tanenbaum 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.

The instructor recognizes textbooks can impose a financial burden and tries to minimize costs while maximizing the students' education. The instructor recommends Allen Downey's "The Little Book of Semaphores" (a free online textbook) as an additional resource, but notes there currently are no free equivalents of the required textbooks. However, the Tanenbaum book may also be useful for CS 4513 (Distributed Systems).

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 Tanenbaum book 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.

Class NumberDateReading RequiredTopic
1Aug. 241Introduction to the Course
Aug. 24Project 0 Assigned
Aug. 24Project 1 Assigned
2Aug. 282.1Introduction to Concurrency, Processes
Aug. 28Project 0 Due
Aug. 30Project 1 Checkpoint
3Aug. 311.6, 2.2, 2.3System calls, Threads, Synchronization
Sept. 3Project 1 Due
Sept. 3Project 2 Assigned
4Sept. 4Introduction to Project 2
5Sept. 72.3Synchronization, Concurrent Applications
Sept. 8Project 2 Checkpoint
6Sept. 11NIBConcurrent Applications, Project 3
7Sept. 142.4, 3.1, 3.2Scheduling, Memory Management
Sept. 14Project 2 Due
Sept. 14Project 3 Assigned
8Sept. 183.1, 3.2Memory Management
Sept. 19Project 3 Checkpoint
9Sept. 213.3Caching Principles and Paging
10Sept. 253.4-3.7Caching and Paging Performance, Virtual Memory
Sept. 25Project 3 Due
Sept. 25Project 4 Assigned
11Sept. 284.1-4.2, 5.1-5.4File Systems, Input/Output
Sept. 30Project 4 Checkpoint
12Oct. 29.1-9.4Miscellaneous Topics
13Oct. 59.5-9.8System Security and Protection
Oct. 6Project 4 Due
14Oct. 9Linux, 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.

Official Communication

Class discussion, class hand-outs, 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

Students must check their email daily. The class email list is automatically created based on official registration information. The instructor and TAs will use this mailing list to send information to the class.

Questions about the course should be sent to cs3013-staff at cs.wpi.edu. The teaching staff will monitor this list and answer detailed questions. The instructor will handle all policy issues.

InstructAssist

The MyWPI system used university-wide does not meet the course's needs. Instead, we will be using InstructAssist, a homebrew course management tool. This system will be used for posting grades, submitting projects, obtaining slides, scheduling project demonstrations, and posting partner evaluations. It is available at https://ia.wpi.edu/cs3013/.

A note on security: InstructAssist is hosted on a separate server, ia.wpi.edu. This server, run by the instructor, uses a self-signed certificate for SSL to protect student records and account information. While self-signed certificates offer confidentiality of communication, they do not provide authenticity (you cannot be sure you are interacting with the correct server the first time you connect). To be secure, you must verify these certificates are authentic before accepting them. The authentic fingerprints of the Cerebro system certificate are:

  • SHA1: 09:99:19:24:68:A5:32:3E:7D:FD:EC:43:DB:D9:53:0F:00:23:D6:76
  • MD5: 61:A2:D3:B6:72:62:0E:35:9A:77:1A:DB:5F:99:2D:B0

You must also verify the authenticity of these fingerprints are legitimate. A copy of this syllabus is being distributed in class from the instructor, providing a trusted source of authenticity. Alternatively, you can view this Web page via SSL (https://web.cs.wpi.edu/~cshue/cs3013/) and verify the Web site is operated by the WPI Computer Science Department and that the URL reflects a Web page that only the instructor can edit.

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.

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

Assignments submitted late will not receive credit.

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

I exclude weekend days (Saturday and Sunday) and university-recognized breaks from the count of late days. However, programs are due at the exact time specified.

Any programs submitted after 4pm on Thursday, October 11, 2012 will not be graded.

Course Grading

The course programming assignments and in-class quizes form the basis for 80% of the course grade. The remaining 20% 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:

  • Quizes (40%): The 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 two questions long. The first question will cover material from reading due before class and will be more factual (and simplistic) in nature. The second question will be more application-oriented, requiring students to apply concepts from prior class discussions to new challenges.
     
  • Projects (40%): 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 (20%): Students are expected to be engaged in class, answer questions from the instructor and asking questions when needed. Students must regularly attend classes and show up to demonstration times they schedule. Disregard for course policies or unprofessional conduct with students or the teaching staff will be penalized. This grading component is a signed value, allowing students to earn a negative score for abusive behavior.
     

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.