MPCS 52015 Advanced Computer Systems (Spring 2026)

Section 1
Instructor(s) Kimpe, Dries (dries)
Location None
Meeting Times
Fulfills Core Systems Elective Specialization - High Performance Computing (HPC-2)

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).

Topics: 

- 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.

Labs include:

- Data lab: learn how to efficiently perform arithmetic operations without doing arithmetic

- Bomb lab: reverse engineer (disassemble) a binary program to discover the secret keys

- Attack lab: Perform a buffer overflow exploit in order to bypass authentication. 

and more.



The information above is the intended content of the course and subject to change.

Course Prerequisites

This course requires a working knowledge of C Programming for assignments.

For MPCS 52015 Advanced Computer Systems, one of the following is required:
- Completion of MPCS 51040 C Programming
- Completion of MPCS 51100 Advanced Programming
- Completion of the MPCS C Programming Bootcamp

Students who have prior knowledge of C but have not completed one of the above will need to obtain instructor consent in order to enroll. In these cases, the student will be expected to provide details of their C programming background to the instructor for review. MPCS 51044 C/C++ for Advanced Programmers will not provide enough background for the course without also attending the C Bootcamp.

This is an advanced Core Systems class and we recommend that students take MPCS 51082 Introduction to Unix Systems or MPCS 52011 Introduction to Computer Systems before enrolling in this course.

Other Prerequisites

This course requires competency in Unix and Linux. If you attended the MPCS Unix Bootcamp you covered the required material. If you did not, please review the UChicago CS Student Resource Guide here: https://uchicago-cs.github.io/student-resource-guide/.

Course request information for non-MPCS students: https://masters.cs.uchicago.edu/student-resources/non-mpcs-student-course-requests/

Overlapping Classes

This class is scheduled at a time that does not conflict with any other classes this quarter.

Eligible Programs

MS in Computational Analysis in Public Policy (Year 2) MA in Computational Social Science (Year 2) Masters Program in Computer Science