Computer Organization and Design
COM1130

Spring, 2003
Monday, Tuesday, Thursday at 1:35, Room 420 Shillman
Final Exam: Wednesday, 8 a.m., Room: TBA

Instructor

John Casey, jcasey@ccs.neu.edu

Course Calendar

Click here for the current calendar.

How to find the Real Home Page

After the first class,
no new course material will be put on this page.
Follow the directions in the next section to reach the
real course homepage.

News

Watch here for updates: assignments,etc.

Apr. 3
Full lab schedule:
Monday: 9:15 -- 10:15, and 12:00 -- 1:30
Tuesday: 12:30 - 1:30 and 5:15 -- 6:15
Wednesday: 9:15 -- 10:15 and 1:00 -- 2:00
Thursday: 12:00 -- 1:30
Friday: 9:15 -- 10:15

Mar. 23
How to read files in different formats: Click here.

Mar. 23
How to link to course info - it's not on the Web:

When logged in to one of the Unix machines:


cd $HOME
cd .www
ln -s /course/com1130 com1130

Then, in your browser at home, go to the URL:
http://www.ccs.neu.edu/home/yourUsername/com1130/
With continuing thanks to
Mike Ruelle.

Course Description

Prerequisites

Prerequisites: Some programming experience, or a course like COM1100, plus some data structures, at the level of COM1101.

Teacher

John Casey
Office: 209 Cullinane
Phone: 373 - 3550; email: jcasey@ccs.neu.edu Office hours: To Be Announced
or just come find me in my office or the lab.

Course Requirements

What does this course teach?

The one phrase answer is: the hardware/software interface. Another part of the answer is: the hierarchical nature of all computer systems.

To get experience working at that interface, we make choices: our hardware is the MIPS family of chips; our software is in MIPS assembly langauge, and in C.

Why learn this material now?

We believe that learning in computer science and engineering should reflect the current state of the field, as well as introduce the principles that are shaping computing. We also feel that readers in every specialty of computing need to appreciate the organizational paradigms that determine the capabilities, performance, and, ultimately, the success of computer systems.

Modern computer technology requires professionals of every computing specialty to understand both hardware and software. The interaction between hardware and software at a variety of levels also offers a framework for understanding the fundamentals of computing. Whether your primary interest is computer science or electrical engineering, the central ideas in computer organizations and design are the same. Thus, our emphasis in the book is to show the relationship between hardware and software and to focus on the concepts that are the basis for current computers.

... The performance of future software systems will be dramatically affected by how well software designers understand the basic hardware techniques at work in a system. Thus, compiler writers, operating system designers, database programmers, and most other software engineers need a firm grounding in the principles presented in this book.
- from the first page of the textbook(page xix)

Student responsibilities

1. Students are expected to attend classes regularly, to be on time, and not to leave the classroom before the class is over.

2. Weekly labs: these will be held in 201 Cullinane. More information about them will be posted later.

2. Readings, exercises, quizzes, four (small) programming assignments, one exam, and a final.

Plagiarism

We encourage people to get together and discuss the assignments, prepare for tests, etc. But this is not the same as copying some one else's code or answers to assignments. If I find material that is substantially the same in two submissions, then the minimum penalty will be twice the full credit for that work. That is, if something were worth 100 points, it will be as if you scored -100.

Objectives

By the end of the quarter, you should know:

what operations the chip can perform

what data structure represents each of those operations

how the hardware decodes each operation, and carries it out

all operations are carried out by doing boolean algebra on single bits

how all this affects performance

how to write small programs in assembly language

This Week's Schedule

Reading Assignment: Hennessy and Patterson, Sections 4.1 -- 4.2(leaving out Fig. 4.2).

Tools

Required Materials


1. David A. Patterson and John L. Hennessy.
Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufmann, San Mateo, 1998.
Second edition.
Often referred to as P&H or H&P.
Might be the first (or second) great undergraduate computer science textbook ever written. An instant classic. Available at the NU Bookstore (or at online bookstores).

2. You'll need a reference for C. We require:
Brian Kernighan and Dennis Ritchie.
The C Programming Language: Second Edition. Prentice Hall, 1988.
Sometimes referred to as the New Testament; commonly called K&R.

Readings from this will be assigned, but you may be able to avoid buying the book. The readings will be short, perhaps 5 to 20 pages; you may be able to keep up by using the copy on reserve in Snell library.

3. The course Xerox packet, from Gnomon Copy, which is just across Huntington Avenue, and a 3-ring binder to hold it, along with other handouts. If I put the right refernce materials in the packet, you can use it when you're doing homework or programming, rather tha lugging the heavy textbook around.

Other Ways to Learn

The 1990s saw the emergence of the Internet and the World Wide Web, the first successful handheld computing devices(personal digital assistants or PDAs), and the emergence of high-performance digital consumer electronics, from video games to set-top boxes. These changes have set the stage for a dramatic change in how we view computing.(from H&P's other book) And this has lead to an explosion of new ways of teaching about the place where software meets hardware. Three wonderful books with very different approaches are on reserve in Snell library:

Randal E. Bryant and David O'Hallaron. Computer Systems: A Programmer's Perspective. Prentice-Hall, 2002.
A strong emphasis on optimizing performance, and a way of seeing programs run on real machines.

Yale N. Patt and Sanjay J. Patel. Introduction to Computing Systems: From Bits and Gates to C and Beyond. McGraw-Hill, 2001.
The title says it: start from transistors and logic gates, and work through the design of a tiny, but real, machine, and arrive, bottom-up, at C programs.

Andrew S. Tanenbaum. Structured Computer Organization. Prentice-Hall: 1999.
Also a bottom-up approach: start with digital logic and end with assembly language.

Software tools

Our chip

The xspim simulator for the MIPS processor, by James R. Larus. Type the command "xspim" on any Solaris machine and look into the hardware of a current RISC-based chip.