Courses Currently Teaching

I am teaching EECS 370: Intro to Computer Organization, in the Fall 2021 semester

This course is intended to give you a basic understanding of how computers execute programs. Understanding computers means understanding the hardware/software process of how you and the computer work together to have the computer carry out a task.

In your introductory programming courses (e.g. EECS 280), you learned how to express a task in terms of a high-level programming language such as C or C++. In EECS 370, you will see how a low-level language is executed by the hardware, and you will see how to put together basic hardware building blocks to form the functional units of a computer.

To achieve these goals, you will design and “build” simple computers at various levels of detail. In this course, building will not mean connecting chips and gates. Rather, you will describe the hardware in diagrams, finite-state machines, and hardware simulators (written in C).