CS240: Intro to Machine Organization Computer Systems, Spring 2015

Welcome! We are revising CS240 for the upcoming spring 2015 offering, so there is not much here yet. In the meantime, you probably want to know the important stuff, like: What textbook are we using? I heard the course is changing. What's up with that? Will this webpage get any less boring?

Looking for CS240 Fall 2014?


Required:Computer Systems: A Programmer's Perspective, 2/E. (2nd edition)
Bryant and O'Hallaron, Prentice Hall, 2011. ISBN-13: 978-0-13-610804-7, ISBN-10: 978-0-13-610804-0.
Recommended:The C Programming Language, 2nd edition
Kernighan and Ritchie, Prentice Hall, 1988. ISBN-13: 978-0131103627, ISBN-10: 0131103628.

The main textbook is expensive, but valuable and highly regarded. Looking past Amazon or considering the international edition may reveal lower prices. Note that the 2nd edition includes a substantive update in chapter 3, where we will spend about 3 weeks of the course. This makes the 1st edition less desirable. The C book is a classic.

The new 240

CS240 will (tentatively) have a new title, Introduction to Computer Systems, reflecting a shift in the emphasis and approach this course takes. While it covers largely the same concepts as preceding versions of 240, it redistributes the amount of time (and depth) in each, and takes an approach that is more overtly grounded in the perspective of the programmer. Specific changes include a reduced emphasis on hardware and an increased emphasis on systems programming (in C) and the operating system interface. We will also be trying to break out of the "lectures + problem sets + exams" model to a degree, and trying out some alternatives to exams (like more projects, plus exams where you get to work with the instructor). Below is a tentative course description:

This course examines how modern computer systems run programs, introducing key software and hardware abstractions between high-level programming languages and hardware circuits. The course traces themes of data representation and program translation, with a focus on how each level of abstraction (and its implementation) in a computer system impacts the execution of a high-level program. Topics include the C programming language, basic concepts of program compilation and assembly, machine code, instruction set architecture, basic microarchitecture, number representation and computer arithmetic, digital logic, the memory hierarchy, the operating system process model, virtual memory, and memory management. Students explore computer systems through projects ranging from simple hardware circuits through software memory allocators. Students are required to attend one three-hour laboratory weekly.

Prerequisites: CS 111 or CS 112 or CS 118 [2012-13]. CS 230 or programming experience beyond CS 111 or CS 112 is recommended.

This webpage

Will hopefully get prettier, but no guarantees.


Contact Ben Wood.

website in prepartion