Patterson and Hennessy, Computer Organization and Design, 4th Edition.

You are also encouraged but not required to get The C Programming Language by Kernighan and Richie.


Problem Sets: 25%
Quizzes: 15%
Exams: 35%
Lab: 25%

There will be approximately 6 problem sets. The lowest score will be dropped.

There will be several short quizzes at the end of class. The lowest score will be dropped.

There will be about 10 lab assignments focused on learning the C programming language and honing your MIPS programming skills. You should all register for Comp 590-411 for 1 hour in order to receive credit for your lab work. You will get one grade for both. The lab is not optional. All labs are due at the time specified but one may be submitted up to one week late for full credit.

Late Policy

Assignments are due at the beginning of class on the specified due date. No credit will be given for late assignments but the lowest score on assignments will be dropped.

Make up policy

Serious illness, a death in the family, and activities such as intramural meets and student exchange programs can justify waiving or relaxing the usual rules for class work and examinations. But the ups and downs of student life, including the consequences of procrastination and commitments to other courses, cannot. In circumstances that merit special treatment, documentation is usually available to the student, and I feel most comfortable when a request for special consideration is accompanied by appropriate written material supporting the request. In cases where events that will interfere with course work are foreseen, a student should discuss the matter with me well before the work is due.


An incomplete will only be given for serious emergencies. Documentation (such as a physician's note) is required.


  • Programming
    • Information Encoding
    • Instruction Sets
    • Addressing Modes
    • Assembly Language
    • Stacks and Procedures
    • Assemblers and Compilers
    • Operating Systems and IO (DMA, direct mapped, concurrency)
  • Implementation
    • Transistors and gates (from switches and wires to logical operations)
    • Arithmetic Circuits (arithmetic operations, 2’s complement)
    • Multiplication and Division
    • Floating Point Arithmetic (emphasis on sources of error)
    • Control and Execution (logic + registers = FSM, fetch/decode/execute)
    • Memory (RAM, DRAM, external)
  • Performance
    • Measuring Performance
    • Pipelining
    • Memory Hierarchy
    • Caches and Virtual Memory