EECS 213: Introduction to Computer Systems, Spring, 2017

Instructor:Peter A. Dinda (Office Hours: Tuesdays, 9-12, Tech L463)
Teaching Assistants: Conor Hetland (Office Hours: Wednesdays, 4-7, Ford 2-211)
Georgios Tziantzioulis (Office Hours: Fridays, 3-6, Tech L466)
David Samuels (Office Hours: Mondays, 12-3, Wilkinson Lab)
William Wallace (Office Hours: Thursdays, 4-7, Wilkinson Lab)
Murphy Angelo (Office Hours: Mondays, 4-7, Wilkinson Lab)
Class Sessions:Tuesdays and Thursdays, 2-3:20pm
Lecture Location:Tech L251
Enrollment Limit:80 (will be about 60)

Final Review Session: Monday, 6/5, 5pm, Tech L251

Midterm Review Session: Wednesday, 4/26, 6pm, Tech L251

GDB/Reverse Engineering Tools Review Session: Monday, 4/17, 6pm, Tech L221

Unix Review Session: Tuesday, 4/4, 6:30, Tech L221

EECS 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.


We will use Canvas to report grades and for homework hand-in, but for nothing else. For critical announcements, we will send email to the addresses that CAESAR maintains.

For discussion, we will use Piazza: EECS 213 Piazza Site. Directing your questions to Piazza will likely produce the fastest response, and everyone else in the class will also benefit.

Each student is required to submit at least one question based on the readings by noon of the day of the class session that covers them. Information on how to do this will be given in class and Piazza.

Accounts, Remote Access, Getting Started with Unix

  • You will have a Linux account on the Wilkinson and TLab machines. Both labs are very convenient for working together. Mostly, though, you'll be using those machines as terminals. You should also be able to use NUIT labs near Tech.
  • 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 VNC (remote graphical desktop) to access the class servers. To get started with VNC, ssh into the server and run ~cs213/HANDOUT/ You can also use X11 tunneled over SSH. You may also find tmux to be useful.
  • If you haven't used Linux or Unix before:
  • Introduction to the Linux environment on our server (Peter Dinda) (YouTube)
  • Introduction to Unix (James Whang and Adel Lahlou) (YouTube)
  • Unix Review Session: Tuesday, 4/4, 6:30, Tech L221
  • 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: 3/28, In: 4/13)
  • Bomb Lab (pdf) (Out: 4/13, In: 5/2)
  • Attack Lab (pdf) (Out: 5/2, In: 5/16)
  • SETI Lab (Parallelism Lab) (pdf) (Out: 5/16, In: 6/1)
  • Homework Assignments

  • HW 1: Integer and Floating Point Number Representations (pdf) (Out: 3/30)
  • HW 2: De-compiling Assembly Code (pdf) (Out: 4/11)
  • HW 3: Memory and Cache (pdf) (Out: 5/1 (originally planned 4/25))
  • HW 4: Virtual Memory and I/O (pdf) (Out: 5/22) [delayed due to moving up the pthreads/parallelism lectures]
  • We will make solution sets for these homeworks available. They will not be graded. Nonetheless, we strongly encourage you to do them in preparation for exams.


  • Midterm: Thursday, April 27, 6pm, Annenberg Hall G15
    Covers lectures 1-9 and related reading/materials in syllabus
    Midterm Review Session: Wednesday, 4/26, 6pm, Tech L251
  • Final: Friday, June 9, 9am, Tech L251
    Covers lectures 10-20, and related reading/materials in syllabus
    Final Review Session: Monday, 6/5, 5pm, Tech L251
  • Lecture-related pointers

  • My Lecture Slides
    I am not using slides all that much. Nonetheless, the lectures for which I have used slides will appear below. You may also find the CMU lecture slides (see below) to be useful.
  • General lecture slides, videos, and other materials for the CMU version of the class
  • Java applets showing how gates are built from CMOS transistors
  • Java simulators of logic and more complex circuits
  • Resources

  • The Book's Student Site
    Contains many useful FAQs, Primers, etc.
  • Make Introduction (pdf)
  • Gdb commands (pdf)
  • Gdb manual (html)
  • An amazing online disassembler
  • 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)
  • Cygwin Unix Emulation Environment for Windows
  • Wilson, P., et al, Dynamic Storage Allocation: A Survey and Critical Review, International Workshop on Memory Managment, September, 1995. (pdf)

  • Peter Dinda
    Last modified: Thu Jun 1 17:23:43 CDT 2017