\ CPS 310 (Duke University) Operating Systems
CPS 310: Operating Systems (also ECE 353) Fall 2020
home calendar topics work resources
Class Meetings
M 3:30 - 4:45 Activity on Zoom: access through Sakai.
WF 3:30 - 4:45 Ghost classes: no required session except by special announcement; instructors available.
Prerecorded lectures on Panopto
Instructors
Jeff Chase (chase at cs.duke.edu)
Mike Hewner (hewner at cs.duke.edu)
Teaching Assistants
Shujun Qi
Weikun (Michael) Ma
5 great UTAs: TBD
Help
Piazza: please follow standard etiquette.
Office hours: instructors available during scheduled ghost classes WF 3:30-4:45.
U/TA office hours: see Piazza.

Course announcements

Welcome to CPS 310 (ECE 353) for Fall 2020. Here are some things to know:

  • Thread labs: p1t is due on Monday, September 28, and p1s is due on Monday, October 5. You may work in pairs if you wish. These labs use the same AG repo and tests. The p1t deadline is an interim progress checkpoint: final points are awarded for both labs based on your Oct 5 score.
  • Atomic lab due Monday 9/21. This advanced lab is optional. It is individual; no teams please.
  • Autograder (AG). We use AG350 to manage teams, repositories, and submission for the labs. See the labs page. The Sakai link is still wonky, so don't use that.
  • Workload. This offering of CPS 310 is different from recent offerings. We plan to do the heap, threads, and Raft labs, and some additional (easier) labs, including JOS boot (due 8/24). We also have weekly Monday activities and weekly quizzes. But no exams.
  • Two tracks. Course topics are synchronized week-by-week with the advanced OS class CPS 510. The 510 lectures and papers are available to you if you are interested. We are storing them in common folders/repositories as described below.
  • Syllabus [PDF]

Every week follows the same plan: the same tasks at the same times every week.

  • Watch the lectures. Lectures are pre-recorded. You can find them in the Panopto folder. There are three lectures per week (a, b, c). For week number N, please watch lectures named Na-310, Nb-310, and Nc-310. Start now with week 1: 1a-310, 1b-310, and 1c-310.
  • Review the lecture materials. You can find all lecture slides and related materials in the course git repository. Clone it! Pull it! Keep it up to date. Lectures are numbered by week, sequence, and course, just like the pre-recorded lectures on Panopto.
  • Do the labs (due Monday). There is a lab for each week, due the Monday of the following week. JOS lab is due 8/24.
  • Participate in the activity (Monday). There is a synchronous activity session on Zoom (links on Sakai) every Monday at 3:30. The activity helps to prepare for labs and lecture material for the week. It may help to watch the week's lectures first, but it is not required. The activity is done during the session in randomized teams. The session introduction and wrapup are recorded for students who cannot participate synchronously: access it through Sakai.
  • Submit an activity report (Tuesday). Submit your work for the Monday activity on Sakai, by Tuesday 11:59 PM. Each student submits separately. Submit your team's code from the session and any additions of your own. Name the members of your team for each activity.
  • Ghost class (Wednesday). No required meeting except by special announcement. Instructors available for questions and discussion.
  • Nothing (Thursday).
  • Ghost class (Friday). No required meeting except by special announcement. Instructors available for questions and discussion.
  • Take the quiz (Friday). There is a short quiz on the lecture material and activity for the week, on Sakai.

Resources:

  • Online textbook. The Arpaci-Dusseau team has an excellent textbook Three Easy Pieces. The book is closely matched to the needs of the class for most of the semester. Toward the end of the semester we will move away from core OS topics and toward networked/distributed systems.

This course gives an introduction to systems concepts and operating systems. Traditionally the course emphasizes classical operating systems topics: concurrency, facilities for storage, communication, and protection, kernel services and structure, architecture/OS interaction, distributed systems, and practical application of operating system concepts in real operating systems. We also explore the nature of "systems" as an evolving discipline encompassing all aspects of bridging the gap between applications and hardware.

More broadly, an operating system is software that controls some programmable platform for sharing resources and data. All operating systems must deal with core issues of protection, resource management, program environment and execution, coordination, and reliable state storage and recovery. Various programming systems ranging from cloud services to Web frameworks to programmable networks to browsers meet our definition of a "programmable platform". The last part of the course covers principles and topics that are important for understanding modern networked software systems.

The prerequisites for this course are introductory programming and basic computer architecture (e.g., CPS 250). The intended audience is computer science undergraduates and graduate students needing a background in systems. Welcome to the Machine [PDF] is a quick-and-dense overview of relevant computer architecture: if it mostly makes sense to you, then you'll be OK. You should take time to review any unfamiliar topics or terms discussed in that document.


More course policies