This class will be run primarily from Canvas. Some static course information is posted here, but everything here will also be able to be found in Canvas.

Course Description

Fundamental issues in operating system design. Concurrent processes: synchronization, sharing, deadlock, scheduling. Relevant hardware properties of uniprocessor and multiprocessor computer systems.Fundamental issues in operating system design. Concurrent processes: synchronization, sharing, deadlock, scheduling. Relevant hardware properties of uniprocessor and multiprocessor computer systems.

An "operating system" is a program that controls the overall function of a computing system, including managing the execution of other programs. In this course, we will study all aspects of operating systems, including:
  • Theory and algorithms: how does an operating system work, and why?
  • Interface and manipulation: how can one control an existing operating system to do what one wishes?
  • Implementation and practice: how does one write parts of an operating system?
  • Literacy: how can one read and understand existing operating system code?
We will build to the last goal through complete and thorough pursuit of the others. During the course, the first three goals will be intertwined and inseparable; practice follows theory and code must be based upon algorithms conformant with the theory.

Course Policies: All students are expected to know and adhere to our course policies. Please take the time to read both the last section of this page and our course policies page in full.

Prerequisites: (both of the following)
  1. COMP 15 or the ability to program in some high-level language (e.g., C, C++, Java, ...) and willingness to learn the C language. You must be familiar with basic data structures, including stacks, queues, trees, and graphs.
  2. COMP 40 or EE 14 or familiarity with computer architecture, such as provided by a traditional Computer Organization course.

Textbooks:
  • (required) Stallings, Operating Systems: Internals and Design Principles, Ninth Edition, Pearson.
    ISBN 13: 978-0134670959
  • (recommended) Kernigham and Ritchie, The C Programming Language, second edition, Prentice-Hall.
    ISBN 13: 978-0131103627
  • This semester, you also need to have a reliable Internet connection and a microphone. A webcam is also recommended. (Most webcams have a microphone built-in, and many laptops have a webcam and microphone built in - this is an acceptable option.)
    • If you have any concerns about meeting the technology requirements for online learning this semester, please contact the instructor. We'll see what we can do!

Class Location: Online (Zoom link in Canvas)
Time: (Mon/Wed) 4:30pm - 5:45pm EDT

Midterm #1: Monday, Oct. 19
Midterm #2: Monday, Nov. 23
Final Exam: Tuesday, Dec. 15

Course Staff

Instructor: Dave Lillethun
Email: dave@cs.tufts.edu
Office Hours: Fridays 10:00am - 12:00pm
(Zoom link in Canvas)

Teaching Assistant: James Mattei
Office Hours: Mon. 1:00 - 2:00pm, Wed. 2:00-4:00pm
(Zoom link in Canvas)
Teaching Assistant: Runze Si
Office Hours: Tuesdays & Thursdays, 10:00 - 11:30am
Location: Tuesdays in Halligan 111A & Thursdays in Halligan 111B

** All times are Eastern time zone! **

Piazza: The preferred means of contacting the course staff is via Piazza, an online forum where students can ask and answer questions. General questions about the course concepts, homework, course policies, C, or Linux should be posted publicly so that your classmates can benefit from the answers and any resulting discussion (before posting a question, please check to see whether your question has already been asked!). Questions that are personal in nature, or that pertain to specific pieces of code that you have written can be posted privately to the course staff.

Expectations and Structure of This Course (Fall 2020)

COMP 111 Operating Systems this semester will be a mostly online course. There will be only one small in-person component (factored into the Participation portion of the grade), but a remote alternative will be availble for anyone who prefers not to (or is unable to) do it in person. (It will be possible to complete this course entirely online.)

Most parts of the course will be available to work on asynchronously, but class lectures will be held synchronously on Zoom, at the assigned class time. Since we will be having discussions and practice problems in class, you are strongly encouraged to attend class live if possible. However, class sessions will also be recorded and made available to watch asynchronously, in case you are unable to attend live (or if you just want to review them later). If you, for example, are participating from a distant time zone, it will still be possible to complete this class.

Weekly Sequence: Each week of class will follow a pattern (with occasional deviations when there are school holidays, midterms, etc.). A weekly synopsis will be posted in Canvas for each week, giving an overview of the required work for that week. First, you will prepare for class prior to attending the first class of the week (typically Monday afternoon). Then class will be held on Zoom. Finally, you will work on a homework programming assignment.

Class Preparation: Preparation may include reading, watching lesson videos, answering small multiple choice questions ("quizzes" in Canvas), and answering discussion questions ("discussions" in Canvas). Reading and discussion will be required nearly every week, and videos and quiz questions (typically 2 of them) will be required about half the weeks.

Participation: Points will be awarded for participating in the dicussion activities (typically 2 points per discussion), correctly answering the quiz questions that accompany the videos (typically 1 point per question), as well as various other small activities that will be assigned for participation points as needed. Quiz questions must be answered correctly for credit, but you have unlimited attempts (until the deadline) and the answer is provided in the following lesson video. So there's no reason not to get credit, but please make at least one honest attempt before looking at the answer! Discussion questions will be graded for effort to provide a thoughtful reply.

Programming Homework Assignments: There will be 5 programming homework assignments, due on Fridays, typically one every two weeks. The programming homework are individual assignments to be complete on your own at home. You are expected to do all your own work, including writing code.

Exams: There will be two midterms and a final exam. All will be open-book, open-nodes, take-home exams, which will be submitted on Canvas. All exams are cumulative, and you may be asked about any material covered in any lecture, video, or required reading assignment. You may use any electronic devices (a calculator may be helpful), software, published materials (including material found on the Internet), or notes that you have prepared yourself.

You may not collaborate or work together in any way with any other students (regardless fo whether they are enrolled in this or not, or whether they go to Tufts or somewhere else). You may not use class nodes prepared by another student during the exam, although you are free to share notes prior to the exam beginning, just not while taking it. You may not ask anyone else for and answer or part of an answer to any question - this equally applies to asking someone in person and posting online for an answer. (You may use previously published material, but not material or answers taht you solicit yourself).

Furthermore, you must write all answers yourself and in your own words. The amterials you use may help you and guide your thinking, but you need to come up with yoru own words in your own voice for your answers. Copying text (or images or anything else) from any other source, including the textbook or any notes provided by the instructor, is plagiarism and an academic integrity violation. Even copying in part and making small changes is not acceptable; your answer must be entirely in your own words.