CPS 310: Operating Systems (also ECE 353) Spring 2017
home calendar topics work resources
Class Meetings
WF 1:25 - 2:40 in B101 LSRC [Panopto]
M 1:25 - 2:40 in B101 LSRC (recitation)
Instructor
Jeff Chase (chase@cs.duke.edu)
Office hours: Tues 11:00 - 12:00 and Fri 3:00 in D306 LSRC, or by appointment, or try a drop-in.
Teaching Assistant
Christopher Streiffer
8 great UTAs
U/TA Office hours

  • Pwned! Threats and defenses (4/26) [PPTX, PDF]
  • Midterm #2 [pdf, pptx] and solution [pdf, pptx]
  • Crypto basics (4/19-21) [PPTX, PDF]
  • Data tier: performance and scale (4/12-14) [PPTX, PDF]
  • Service performance and scale [PPTX, PDF]
  • The Raft paper [PDF]
  • Replication and consensus (3/29-31): [PPTX, PDF]
  • RPC and Android (3/22-24): [PPTX, PDF]
  • Server structure and concurrency (3/8): [PPTX, PDF]
  • Midterm 1 solutions are out: [PDF].
  • Sockets and servers with networking and security (3/3): [PPTX, PDF]
  • Unix: parents and children (3/1): [PPTX, PDF]
  • Unix programming model and the kernel (2/22-24): [PPTX, PDF]
  • Synchronization from the metal up (2/15, 2/20): [PPTX, PDF]
  • More threads (2/8-10): [PPTX, PDF]
  • Concurrency control basics (2/3): [PPTX, PDF]
  • Threads and the kernel (2/1): [PPTX, PDF]
  • Processes and the kernel (1/27): [PPTX, PDF]
  • Programs and processes (1/25): [PPTX, PDF]
  • Heap etc. (1/18 and 1/20): [PPTX, PDF]
  • Intro slides: [PPTX, PDF]
  • Syllabus [PDF] required by Duke policy, but all information is also on this website. Any changes to the information in the syllabus will be announced, and a dated revision of the syllabus provided.
  • The topics page has a list of course topics and some related readings. You should keep an eye on that and keep up with the readings.
  • C sample programs
  • Know the course policies!
  • Read C-101 page at Stanford. This material will not be tested, but some familiarity will save you programming time. Start with the EssentialC pdf. There is other useful material on the site.
  • Online textbook resource. The Arpaci-Dusseau team has an excellent textbook Three Easy Pieces. The book is closely matched to the needs of the class at least through the first six weeks. In the second half of the class we will move away from core OS topics and toward networked/distributed systems.


Anonymous feedback: You may use this link to send anonymous feedback on any Duke CPS course, including this one. Your comments are visible to the instructor, CPS Director of Undergraduate Studies, and CPS Chair.

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". About half the course focuses on classical OS topics; the other half covers other principles and topics that are important for understanding modern networked software ecosystems.

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.

There is no required textbook. Several texts are available and may be worth the investment: see the intro lecture notes. Operating Systems in Three Easy Pieces (OSTEP) is an excellent resource for at least the first half of the course. There is lots of useful material in the classic computer systems textbook Bryant/O'Hallaron CS:APP.


More course policies
Exam FAQ about exams in this class
Exam archive