EECS 213 Introduction to Computer Systems
Spring 2007


Remember to check this regularly

Administrative Information


Fabián E. Bustamante
Technological Institute, L465
+1 847 491-2745
Office Hours: Mon. 3:30-4:30PM (or by appointment)


John Otto
Ford Design Center, Room 2-217
+1 847 491-7060
Office Hours: Mon. & Wed. 4-5:30PM

Course Description

This course has four purposes: (1) to learn about the hierarchy of abstractions and implementations that comprise a modern computer system; (2) to demystify the machine and the tools that we use to program it; (3) to come up to speed on systems programming in C in the Unix environment; (4) to prepare students for upper-level systems courses.

Location and Time

In compliance with Section 504 of the 1973 Rehabilitation Act and the Americans with Disabilities Act, Northwestern University is committed to providing equal access to all programming. Students with disabilities seeking accommodations are encouraged to contact the office of Services for Students with Disabilities (SSD) at +1 847 467-5530 or SSD is located in the basement of Scott Hall. Additionally, I am available to discuss disability-related needs during office hours or by appointment.

Course Prerequisites

Communication Channels

There are a number of communication channels set up for this class:

Textbook and Other Readings

Course Organization

The course is organized as a series of lectures, Lab and hoemwork assignments and exams:


There will be two kinds of homework assignments given throughout the class: reading assignments and textbook-style questions. You should have finished the assigned reading before coming to lecture. In addition, there will be a set of written homework assignments that must be done alone and turned in by midnight on the due date (see course policies below).

To submit your assignments use the following page: SUBMISSIONS.


As you can deduce from the allocation of weights for grading, programming projects make up a major portion of this class. Their goal is to make you apply the concepts you've learned and to gain familiarity with Unix tools that can help you apply them.

There will be three (3) projects. All projects are to be done by teams of two (2) people. Both partners should work cooperatively on the design, implementation, and testing of their solution.

You'll be able to do the programming assignments on any modern Linux machine. You should already have a TLAB account. If this is not the case, contact root@eecs .... To enter the TLAB classroom (Tech F-252), contact Carol Surma (carol@eecs ...). It should be possible to do some of the asssignments using the Cygwin environment on Windows or in Mac OS X, but they will be graded in a Linux environment, so be sure your code works on the TLAB machines.

Info on the Teaching Lab.

The following table of deadlines should serve you as a guideline for planning your quarter. You are given about two weeks per project. This should be plenty of time if managed carefully.

HW Assignment Out In News
1: Ints & Floats 03/28 04/12 (11:59PM) Deadline extended
2: Decoding assembly 04/23 05/02 (11:59PM) -
3: Memory and Cache 05/10 05/18 (11:59PM) -
4: From linking to virtual memory 05/23 06/01 (11:59PM) -
Project Out In News
1: Data Lab 04/03 04/17 (11:59PM) Great work!
2: Bomb Lab 04/26 05/10 (11:59PM) Out
3: mysystem 05/23 06/01 (11:59PM) Out


There will be a midterm and a final exam. Exams will be in-class, closed-book, and will cover materials from lectures, homework assignments and projects. The final exam will not be cumulative.


I use a criterion-referenced method to assign your grade; in other words, your grade will be based on how well you do relative to predetermined performance levels, instead of in comparison with the rest of the class. Thus, if a test has 100 possible points, anyone with a score of 90 or greater will get an A, those with scores of 80 or greater will get a B, those with scores of 70 or greater will get a C, and so on. Notice that this means that if everyone works hard and gets >90, everyone gets an A.

Total scores (between 0 and 100) will be determined, roughly, as follows:

Course Outline and Approximate Dates

Because one has to be an optimist to begin an ambitious project, it is not surprising that underestimation of completion time is the norm.
-- Fernando J. Corbató, ``On Building Systems that Will Fail'', 1990 Turing Award Lecture.

03/26 Introduction 1
03/28 Bits and Bytes 2, 2.1
04/02 Integers 2.2, 2.3
04/04 Floating point 2.4, 2.5
04/09 The machine model 3, 3.1-3.5, 5.7
04/11 Control flow 3.6
04/16 Procedures 3.7
04/18 Data 3.8-3.11
04/23 Advanced machine code 3.12-3.16
04/25 Midterm
04/30 Memory and cache 6, 6.1-6.4
05/02 Cache performance 6.5-6.7
05/07 Linking 7
05/09 Exceptional control flow 8, 8.1-8.8
05/14 Memory system and virtual memory 10, 10.1-10.8
05/16 Memory allocation 10.9-10.13
05/21 Input/Output 11
05/23 Network programming 12, handouts
05/28 Memorial Day
05/30 Concurrency, distributed systems and wrap-up 13, handouts
06/04 Final


Late policy:

Unless otherwise indicated, homework assignments and projects are due by midnight on their due date. If you hand in an assignment late, we will take off 10% for each day (or portion thereof) it is late.

Cheating vs. Collaboration:

Collaboration is a really good thing and we encourage it. On the other hand, cheating is considered a very serious offense. When in doubt, remember that it's OK to meet with colleagues, study for exams together, and discuss assignments with them. However, what you turn in must be your own (or for group projects, your group's own) work. Copying code, solution sets, etc. from other people or any other sources is strictly prohibited.

Last modified: Thu Dec 9 16:11:30 CST 2010