Advanced Computer Systems

Title Advanced Computer Systems (52015)
Quarter Winter 2020
Instructor Dries Kimpe (

Syllabus This class will use the book Computer Systems: A Programmer'sPerspective (3rd Edition), Randal E. Bryant, David R. O'Hallaron (required).

This course focuses on studying modern computer systems from the point of view of a programmer, with an emphasis on topics which help you improve the performance, correctness or utility of user-level programs.

As such, this is intended to be a practical, hands-on study of contemporary computer systems. We will focus on the X86-64 architecture (as implemented by Intel/AMD 64 bit processors).


- Representing and Manipulating information: unsigned and two's complement representation, IEEE floating point and corresponding arithmetic.

- Machine level representation of programs: x86-64 assembly, control instructions, translation of basic C control constructs (such as loops and switch statements), a study of common code security vulnerabilities (such as buffer overflows).

- Processor architecture: study of a pipelined out of order processor.
- Code optimization

- Memory hierarchy: persistent storage(magnetic spinning disks, SSD), RAM and ROM, and caches. 

- Virtual Memory

This is a hands on course; There will be multiple labs requiring you to program in C.

NOTE: This is a new course. The information above is the intended content of the course and subject to change.

Prerequisites (Courses)

MPCS 51040 C Programming or MPCS 51100 Advanced Programming.

Prerequisites (Other)


Core Systems


Monday 5:30-8:30pm


Ryerson 276