EECS 213: Introduction to Computer Systems, Spring, 2014

Instructor:Peter A. Dinda (Office Hours: Wednesdays 9-12 or by appointment, Tech L463)
Teaching Assistants: Kyle Hale (Office Hours: Mondays 1-4 or by appointment, Ford 2-221)
Kaicheng Zhang (Office Hours: Tuesdays 3:30-6:30 or by appointment, Tech L476)
Conor Hetland (Office Hours: Thursdays 3:30-6:30 or by appointment, Wilkinson Lab)
Lecture Time:Tuesdays and Thursdays, 2-3:20pm
Lecture Location:Tech LR5 (M139)
Recitation Time:Mondays, 6pm (starts second week)
Recitation Location:Tech L251
Enrollment Limit:80

The class enrollment is limited to 80 students. There are currently 71 enrolled after hitting a high point of 90. All declared CS majors on the waiting list have been let in. We will not be able to accomodate any additional non-CS students.

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 not be using Blackboard for anything. For critical announcements, we will send email to the addresses that CAESAR maintains.

For discussions this quarter, we will attempt to 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.

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, as these have been upgraded with remote tools like SSH, X11, VNC, and NX.
  • You will also have a Linux account on a private server we have set up. These accounts will be discussed in class.
  • You will be able to access the private server remotely using SSH (text-based login), and VNC tunneled through SSH (graphical remote desktop sessions), and X11 tunneled through SSH (remote graphical windows). This page describes how to use VNC and X11 in this way. You may also find tmux, to be useful.
  • If you haven't used Linux or Unix before, you may want to watch this video: Introduction to Unix (Peter Dinda) (Real, Part 1, Real, Part 2 - use your netid and password to access these) or check out Prof. Bustamante's List of C and Unix Resources. We will probably dedicate our first recitation to using Unix.
  • Handouts

  • Syllabus (pdf)

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

  • Data Lab (pdf) (Out: 4/1, In: 4/17)
  • Bomb Lab (pdf) (Out: 4/17, In: 5/6)
  • Buffer Lab (pdf) (Out: 5/6, In: 5/20)
  • SETI Lab (or Parallelism Lab) (pdf) (out: 5/20, In: 6/4)
  • Homework Assignments

  • HW 1: Integer and Floating Point Number Representations (pdf) (Out: 4/3, In: 4/15)
  • HW 2: De-compiling Assembly Code (pdf) (Out: 4/15, In: 4/29)
  • HW 3: Memory and Cache (pdf) (Out: 4/29, In: 5/15)
  • HW 4: Virtual Memory and I/O (pdf) (Out: 5/22, In: 6/4)
  • Exams

  • Midterm: Wednesday, April 30, 6pm, Tech L361
    Covers lectures 1-9 and related reading/materials in syllabus
  • Final: Monday, June 9, 9am, Tech LR5
    Covers lectures 10-20, and related reading/materials in syllabus
  • 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 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.
  • The Book's Code
  • Make Introduction (pdf)
  • Gdb commands (pdf)
  • Gdb manual (html)
  • The ELF Format (pdf)
  • Comparison with GAS format and Intel's assembler format (text)
  • The Intel Architecture Manuals and the AMD Architecture Manuals
  • Gentle introduction to 64 bit x86 assembly (alternate link)
  • 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: Mon May 26 12:41:57 CDT 2014