Submit your best work to CGO 2015. The conference will be held in California's Bay Area!

Serving as program committee co-chair for CGO 2015

Submit your best work! 

About the Conference

cgologoThe International Symposium on Code Generation and Optimization (CGO) provides a premier venue to bring together researchers and practitioners working at the interface of hardware and software on a wide range of optimization and code generation techniques and related issues. The conferences spans the spectrum from purely static to fully dynamic approaches, including techniques ranging from pure software-based methods to architectural features and support.

Visit http://cgo.org for more info.

Computers_Processor_Removal_024254_

EECS 370: Introduction to Computer Organization (Fall 2014)

Course Website

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/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). To further your understanding of other topics, we will provide practice questions that will be discussed in the discussion sections.

Teaching Evaluation: 86% (4.3/5)

Intel-4th-gen-haswell-chip

EECS 370: Introduction to Computer Organization (Winter 2014)

Course Website

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/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). To further your understanding of other topics, we will provide practice questions that will be discussed in the discussion sections.

Teaching Evaluation: 93% (4.65/5)