CS 213: Introduction to Computer Systems, Fall, 2024

Instructor:Peter Dinda
Teaching Assistants: David Dlott
Karl Hallsby
Peer Mentors: Jerry Han
Andrew Li
Sean Rhee
Nathan Wang
Ryan Wong
Leo Zhang
Lecture:Tuesdays and Thursdays, 9:30-10:50am, Annenberg G21
Optional Discussion: Thursdays, 6pm, Tech M164

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.

There are currently 100 students enrolled.

Scheduling

Scheduling information (office hours, etc) is available on the class calendar

Communication

We will use Canvas minimally, mostly just for grades and some homework handins. For critical announcements, we will send email to the addresses that CAESAR maintains.

For discussions, we will use Piazza. Directing your questions to Piazza will likely produce the fastest response, and everyone else in the class will also benefit. Piazza is configured to allow posting that is anonymous to other students.

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. More information is in Piazza.
  • 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, or need a refresher, please note that several resources are available on Piazza. Additionally, the first discussion session will have some material on this.
  • 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

  • Pack Lab (pdf) (Out: 9/24, In: 10/10)
  • Bomb Lab (pdf) (Out: 10/10, In: 10/29)
  • Attack Lab (pdf) (Out: 10/29, In: 11/12)
  • SETI Lab (Parallelism Lab) (pdf) (Out: 11/13, In: 12/3)
  • Homework Assignments

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

    Exams

  • Midterm: Wednesday, October 30, 6pm, Annenberg G21
    Covers lectures 1-9 and related reading/materials in syllabus
    Midterm Review Session: Monday, October 28, 6pm, Lunt Hall 105 and Zoom (will also be recorded)
  • Final: 2 hours on 12/12, 12pm (formal time)
    Covers lectures 10-20, and related reading/materials in syllabus
    Final Review Session: TBD (will be rcorded)
  • 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, the very much alive and kicking ARM architecture that powers your phone, tablet, or M1+ Mac, and the up-and-coming open source RISC-V architecture.
  • 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