CS 213: Introduction to Computer Systems, Fall, 2021

Instructors:Peter Dinda (Office Hours: Wednesdays 3:30-6:30, Zoom, or by appointment)
Teaching Assistants: Mohammad Kavousi (Office Hours: Thursdays 10:30-12:00, Fridays 11:30-1:00, Zoom, or by appointment)
Shichao Xu (Office Hours: Tuesdays 9:00-10:30, Thursdays 9:00-10:30, Zoom, or by appointment)
Peer Mentors: Luke Arnold (Office Hours: Mondays 6:00-7:30, Wednesdays 6:30-8:00, Zoom, or by appointment)
Huaxuan Chen (Office Hours: Fridays 4:00-5:30, Sundays 3:00-4:30, Zoom, or by appointment)
Kinsey Ho (Office Hours: Mondays 1:00-2:30, Fridays 10:00-11:30, Zoom, or by appointment)
Seth May (Office Hours: Tuesdays, 12:00-1:30, Fridays 2:30-4:00, Zoom, or by appointment)
Kevin McAfee (Office Hours: Mondays 2:30-4:00, Wednesdays 11:00-12:30, Zoom, or by appointment)
Max Paik (Office Hours: Mondays 4:00-5:30, Tuesdays 8:00-9:30, Zoom, or by appointment)
Ze Feng Zhu (Office Hours: Tuesdays 6:30-8:00, Thursdays 4:30-6:00, Zoom, or by appointment)
Lecture:Tuesdays and Thursdays, 2:00-3:20pm, Tech L361
Optional Discussion: Weekly, Thursdays, 6:00pm, Zoom

Final Exam Review Session: Thursday, 12/2, 6pm (in discussion session)

CS 213 is a required core course in the Computer Science curriculum in both McCormick and Weinberg. It is also a required course for CS minors in both schools. 213 can also be taken for credit within the Computer Engineering curriculum.

This version of CS 213 has an increased focus on (a) low-level hardware aspects, (b) C programming, (c) the Unix system call interface, and (d) threading/parallelism (including a lab). It will be of particular value in preparing for CS 343 (Operating Systems) and similar courses.

There are currently 102 students enrolled.


We will use Canvas to report grades, and to make access to any Zoom sessions or recordings more straightforward, but for nothing else. For critical announcements, we will send email to the addresses that CAESAR maintains.

For discussion, we will use Campuswire and Piazza. Directing your questions to Campuswire will likely produce the fastest response, and everyone else in the class will also benefit. Campuswire and Piazza are configured to allow anonymous posting.

Accounts, Remote Access, Getting Started with Unix

  • You will have a Linux account in the CS department. This will give you remote access to a range of machines, the most important of which are the servers on which the class runs. We will say more in lecture.
  • You will also have a Linux account on private servers we have set up. These accounts will be discussed in class.
  • We recommend you use ssh (remote login) or FastX (remote graphical desktop) to access the class servers. McIT has more info about FastX in our environment. You can also use X11 tunneled over SSH. You may also find tmux to be useful when working with partners. It allows multiple people to share the same session.
  • If you haven't used Linux or Unix before:
  • Introduction to the Linux environment on our server (Peter Dinda) (YouTube) [CURRENTLY BROKEN]
    Note that this video spends some time talking about using VNC for graphical remote access to the servers.
    We highly recommend that you instead use FastX. A URL for FastX is available in Piazza.
  • Introduction to Unix (James Whang and Adel Lahlou) (YouTube) [CURRENTLY BROKEN]
  • Crash Course on Unix and Systems Tools (Souradip Ghosh) (shared privately)
  • Discussion section will include Unix and C review
  • The book's student site (see below) has additional pointers
  • Handouts

  • Syllabus (pdf)

  • Physics To Logic (pdf)
  • Unix Systems Programming In A Nutshell (pdf)
  • Sockets In A Nutshell (pdf)
  • Concurency (pdf)
  • Parallelism (pdf)
  • Programming Assignments

  • Data Lab (pdf) (Out: 9/21, In: 10/8 (one day extension))
  • Bomb Lab (pdf) (Out: 10/7, In: 10/27 (one day extension))
  • Attack Lab (pdf) (Out: 10/27, In: 11/10 (one day extension))
  • SETI Lab (Parallelism Lab) (pdf) (Out: 11/9, In: 12/2)
  • Homework Assignments

  • HW 1: Integer and Floating Point Number Representations (pdf) (Out: 9/23, In: 10/5 (extended))
  • HW 2: De-compiling Assembly Code (pdf) Out: 10/5, In: 10/21 (extended))
  • HW 3: Memory and Cache (pdf) (Out: 10/25, In: 11/12 (extended))
  • HW 4: Virtual Memory and I/O (pdf) (Out: 11/11, In: 12/2)
  • We will make solution sets for these homeworks available. Homeworks are important preparation for exams.


  • Midterm: Monday, 10/25 (2 hours, anytime, see CampusWire for Details)
    Covers lectures 1-9 and related reading/materials in syllabus
    Midterm Review Session: Thursday, 10/21, 6pm (Discussion)
  • Final: Monday, 12/6 (2 hours, anytime, see CampusWire for Details), with accomodation for students who for which this cannot be done
    Covers lectures 10-20, and related reading/materials in syllabus
    Final Review Session: Thursday, 12/2, 6pm (Discussion)
  • Resources

  • The Book's Student Site
    Contains many useful FAQs, Primers, etc.
  • Lecture slides, code, videos, and other materials for the CMU version of the class
  • Make Introduction (pdf)
  • Gdb commands (pdf)
  • Gdb manual (html)
  • An amazing online compiler
    This lets you easily see the assembly that results from C/C++ code
  • An amazing online disassembler
    This lets you easily decode object code back to assembly
  • The ELF Format (pdf)
  • Comparison with GAS format and Intel's assembler format (text)
  • The Intel Architecture Manuals and the AMD Architecture Manuals
  • Compare and contrast with the beautiful and much mourned DEC Alpha, and with the very much alive and kicking ARM architecture that powers your phone and tablet
  • Overview of the Linux Kernel (pdf) (This is very old, but still a good intro)
  • Windows Subsystem for Linux
  • Cygwin Unix Emulation Environment for Windows
  • Last modified: Thu Nov 11 16:46:49 CST 2021