Computer Systems Organization

Course Information

Course Description

This class aims to teach students how computers work "under-the-hood" to execute programs and manipulate data. The course will start with the C programming language, proceed down to assembly and machine-level code, and then move to basic operating system and architectural concepts. Topics covered include: the C programming language, data representation, machine-level code, memory organization and management, performance evaluation and optimization, and concurrency.


CSCI 101 and 102 or equivalent.


Required: Kernighan, Brian W., and Ritchie, Dennis M. The C programming language, Second Edition (abbreviated as KR) (also on permanent reserve at Courant library).
Required: Bryant, Randal, and O'Hallaron, David. Computer Systems: A Programmer's Perspective, Second Edition (abbreviated as BO)


Monday and Wednesday 11:00am-12:15pm in room 102 of Warren Weaver Hall.


There will be one recitation section held by the TA for each of the five assignment. The schedule is as follows and is also listed on the syllabus. Slides for the recitation will be available on Piazza for those who are unable to attend.

Office hours


In preparing material for this class, I have drawn from the above-mentioned texts, as well as the previous editions of the course: