EECS 213: Introduction to Computer Systems, Fall, 2009

Instructor:Peter A. Dinda (Office Hours: Thursdays 2-4pm or by appointment)
Teaching Assistant:Jieyi Long (Office Hours: Tuesdays, 3-6pm or by appointment)
Lecture Time:MW 2-3:20
Lecture Location:Tech M152
Recitation Time:Thursdays, 7-9pm
Recitation Location:Tech M349
Enrollment Limit:30

The midterm is Tuesday, October 27th, 6pm in Tech L221. You may bring a single 8.5x11 sheet of notes if you would like. We would also suggest bringing a calculator.

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 Weinberg. 213 can also be taken for credit within the Computer Engineering curriculum.


  • We will NOT be using Blackboard
  • We will use the Google Group EECS 213 at Northwestern for class discussion. If you don't have a subscription already, you can request one:
  • Accounts, etc

  • You will want an account on the TLab and/or Wilkinson Lab computers. The Wilkinson Lab has recently been renovated and is now quite a nice place to meet to work together.
  • You will want a Linux account on a private server in the VLab that will be used in the class. These accounts will be discussed in class.
  • If you haven't used Linux or Unix remotely before, you will want to read Using Unix Remotely Without the Excruciating Pain.
  • 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)
  • Important Handouts

  • Syllabus (pdf)
  • Physics To Logic (pdf)
  • Unix Systems Programming In A Nutshell (pdf)
  • Sockets In A Nutshell (pdf)
  • Concurency (pdf)
  • Virtual machines (pdf)
  • Distributed and Parallel Systems (pdf)
  • Programming Assignments

  • Data Lab (pdf) (Out: 9/23, In: 10/12) contest!
  • Bomb Lab (pdf) (Out: 10/12, In: 10/30) contest!
  • Exploit Lab (pdf) (Out: 11/2, In: 11/13) contest!
  • Parallelism Lab (pdf) (out: 11/16, In: 12/2)
  • Homework Assignments

  • HW 1: Integer and Floating Point Number Representations (pdf) (Out: 9/28, In: 10/12) (Solution available in HANDOUT directory)
  • HW 2: De-compiling Assembly Code (pdf) (Out: 10/12, In: 10/23) (Solution available in HANDOUT directory)
  • HW 3: Memory and Cache (pdf) (Out: 10/26 , In: 11/9 )
  • HW 4: Virtual Memory and I/O (pdf) This Homework Is Not Graded - It's Provided For Illustration Only. (Solution available in HANDOUT directory)
  • 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 book's lecture slides (see below) to be useful.
  • October 12 (ppt)
  • October 14 (ppt)
  • October 19 (ppt)
  • October 21 (ppt)
  • October 26 (ppt)
  • December 2 (ppt)
  • The Book's General Lecture Slides
  • Measure your own memory mountains using ECT memperf
  • Java applets showing how gates are built from CMOS transistors
  • Java simulators of gates 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
  • Compare and contrast with the beautiful and much mourned DEC Alpha
  • 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: Wed Dec 2 11:48:37 CST 2009