Faculty of Science Home Page University of Alberta Home Page

CMPUT 229 Description

Have you thought about what might be lurking underneath the Java, C, or C++ you've been writing?

After all, you're not handing your high-level program off to a human expert - you're sending it off to run on a rather anonymous and potentially mysterious chunk of circuitry. That seems like a rather large leap of faith, especially with things like online transactions, MRI scans and potentially your own bank account "hanging in the balance."

The goal of CMPUT 229 is to introduce you to the fundamental bits and pieces behind the scenes of program execution. By the end of the course, you should have a good idea of how a modern CPU works, and you'll probably be much more appreciative of the facility and expressive power of your favourite high-level language.

Much of the learning in this course occurs in the lab, where you will be working in machine language, to create things like device drivers and low-level memory managers. You will learn the common binary representations of native types (characters, integers, floating point numbers, etc.), and you should get to the point where formats for object and executable files seem reasonably straightforward.