CSE 378: Machine Organization and Assembly Language Programming, Winter 2003
Course Overview

Course Goals

Machine architectures define interfaces - specifications of what can be done and how to make those things happen. Architectures are typically thought of as the lowest level interface in a system, the one defined by the hardware. Complicated software behavior is obtained by layering many interfaces on top of this lowest level one - e.g., the operating system, the language runtime, a set of libraries/packages, and the application code.

This course typically looks down from the architecture interface, concentrating on how to build hardware systems that implement it efficiently. We will do that as well, following the book to concentrate on critical components of the hardware organization, in particular the central processing unit (CPU) and memory subsystem.

More than in most instances of 378, though, I'd like to spend a little time also looking up from the architecture interface, to explain the role of other system components (e.g., compilers, linkers, and the operating system), how their jobs are affected by the architecure, and what the architecture must do to support them.

By the end of the quarter, you should understand not only the fundamentals of how machines are built (and why they're built that way), but also the fundamentals of how computer systems operate. (And you may have learned a bit of C along the way as well.)


There will be homework. In all cases, the goal of the homework is to help motivate you to learn the material, and to help verify that you have done so. There will be three kinds of homework: SMOK/Cebollita projects, programming in assembly language (on a simulated MIPS machine), and written questions from the book or my own imagination. There may also be some minor compiler hacking in Java.

Class Participation

I'd like this to be an interactive class. Interaction with the instructor and the TA in class and during office hours is highly encouraged (although not required). If I do call on you, that does not mean that I'm picking on you, just that I'm trying to get you to participate. There might come a time when you have to answer a question to which you don't know the answer. In this case, you should not be ashamed to say, "I don't know." I guarantee this will happen to all of us (myself included) at some point.


There will be two midterm exams and a final exam:


Grades will be assigned roughly as follows: