CPS 210 Introduction to Computer Systems (Duke)
home calendar work resources about
Class Meetings
Lecture: WF 1:45 - 3:00 in Gross Hall 107
Discussion: M (various sections)
Instructor
Jeff Chase (chase@cs.duke.edu)
Teaching Associate
Yesenia Velasco (yvelasco@cs.duke.edu)
Teaching Assistants
Luka Đuranović
Yongkang Li
UTA team led by Aaric Han and Alyssa Zhao
Office hours TBD
Resources
Ed discussion (or access through Sakai)
Panopto lecture capture
Panopto instructor videos (Chase)
Git: CPS 210 repository

Thanks for taking Compsci/CPS/CS 210!

  • CPS 210 will be back in 23 Spring, with some of the same team and now featuring Prof Matt Lentz.
  • Grades are out and we hope everyone has a great holiday!
  • The last few announcements are preserved here. Slide links are on the calendar.
  • Concurrency quiz for LDOC is waived! Everyone gets the points.
  • Optional recovery quiz on LDOC will happen. See the Ed note on details and logistics. Here is Midterm 1 for review.
  • Labs L21-23 are due on regular schedule. Lab L24 is optional/EC. No project P7.
  • Midterm 2 debrief [PDF]. Both exams are in the internal resources directory.

This class follows the template of the Spring 2022 offering. Here are some highlights:

  • Readings and due dates per the schedule, with 25 numbered lectures.
  • One short lab per lecture, released on W, due the following W at 11:59 PM.
  • One Sakai quiz per lecture, due before it starts.
  • Larger projects due on certain Tuesdays (after Ian) at 11:59 PM, on average once every two weeks.
  • Monday discussion sections for lab work: attendance expected unless you complete lab early (or use a free pass).
  • Two midterms; LDOC quiz; no final exam (!)
  • Required textbook: CS:APP3e: be sure you have the third edition (3e).
  • Free supplementary texts: C for Java Programmers (CJP), OSTEP, Dive Into Systems
  • Labs and projects use C on Linux systems hosted by Duke's Containers service.
  • To get started: create your container, attach to it with VSCode, use gitlab to fork lab/project folders from the course repo.
  • Details in course git repository hosted on CS GitLab:see the Getting Started Guide.
  • Please review the course policies for grading, regrading, attendance, collaboration, extensions, etc.

Compsci 210 is an undergraduate introduction to computer systems software "close to the metal" on real machines. It provides a programmer's view of how computer systems execute programs and store information, with exercises using the C programming languge. It examines key computational abstractions behind high-level programming languages:number and data representations, instructions, memory hierarchy, programs and processes, and basics of multi-core/concurrency. The Big Ideas in this class are broadly applicable across the many subfields of computer systems and computer science, with specific instances demonstrated through labs and projects. Prerequisites: Compsci 201 or equivalent, and experience programming in a high-level language (e.g., Java).