Remember to check this regularly
ProfessorFabián E. Bustamante
Technological Institute, L465
+1 847 491-2745
Office Hours: Mon. 3:30-4:30PM (or by appointment)
Ford Design Center, Room 2-217
+1 847 491-7060
Office Hours: Mon. & Wed. 4-5:30PM
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
Mondays and Wednesdays 2:00-3:20PM.
- Final Exam:
Monday June 4th, 9:00-11:00AM.
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 firstname.lastname@example.org. SSD is located in the basement of Scott Hall. Additionally, I am available to discuss disability-related needs during office hours or by appointment.
- EECS-211 Fundamentals of Computer Programming II. (Required)
- Experience with C or C++ (Required)
- EECS-311 Data Structures and Data Management. (Useful)
There are a number of communication channels set up for this class:
- We will use the course web site to post homework assignments, projects, course-related announcements, etc. You should check this regularly.
- There are two newsgroups set up for this course, both at news.cs.northwestern.edu: cs.213.announce and cs.213.discuss. The first one will serve as an alternative announcement board while the second one is intended to foster communication among you, the students. You'll find that someone else in the class will have thought of the same problem that you have and will perhaps have some valuable insight that will prove helpful. The staff will be monitoring the discussion threads and will step in with guidance when appropriate.
- Finally, there is an email alias (eecs-213-ta@cs) for the TA that you should use for questions that would be inappropriate to post on the newsgroup (source code being a good example).
Textbook and Other Readings
- Computer Systems: A Programmer's Perspective, Randal E. Bryant and David R. O'Hallaron, PH 2003. (Textbook).
- Advanced Programming in the Unix Environment, R. Stevens, Addison-Wesley, 1992. A basic book for anyone writing programs that run under Unix (Highly recommended).
- The C Programming Language, 2nd Ed., B. W. Kernighan and D. M. Ritchie, Prentice Hall, 1988. ``The'' reference book (Recommended).
The course is organized as a series of lectures, Lab and hoemwork assignments and exams:
- Lectures - A set of lectures through which I present the core of the material.
- Homework - Four homework assignments with questions from (or similar to those in) your textbook, aimed at reinforcing the material covered in the lectures. Homework assignments are to be done alone.
- Labs - There will be three programming labs. We remove the malloc lab due to lack of TA.
- Exams - Two exams, a midterm and a final exam. These exams cover the material presented in the lecture, homework assignments and labs.
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.
|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)||-|
|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:
- Homework 10%
- Class participation
- Projects 30%
- Exams (25% each) 50%
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/28||Bits and Bytes||2, 2.1|
|04/04||Floating point||2.4, 2.5|
|04/09||The machine model||3, 3.1-3.5, 5.7|
|04/23||Advanced machine code||3.12-3.16|
|04/30||Memory and cache||6, 6.1-6.4|
|05/09||Exceptional control flow||8, 8.1-8.8|
|05/14||Memory system and virtual memory||10, 10.1-10.8|
|05/23||Network programming||12, handouts|
|05/30||Concurrency, distributed systems and wrap-up||13, handouts|
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