CSC373/406: Computer Systems I (Spring 2011/2012)
James Riely

Important Links

Syllabus

Mailing list

Course online

Code examples

Tutors

Textbook Errata

Labs

riely373.cdm.depaul.edu

Lab descriptions at CMU

Data Lab

(Online copy of the code)

Bomb Lab

(My gdb Notes)
(My Bomb Lab Notes)

Buffer Lab

(My Buffer Lab Notes)
Unix

UNIX Tutorial for Beginners

Ubuntu documentation

GNU bash Manual

Editors

nano (Recommended)

vim

emacs

C

GNU C Programming Tutorial

(pdf)

An introduction to C

GNU gcc Manual

GDB

My gdb Notes

gdb Tutorial

GNU gdb Manual

Assembly

Gnu Assembler Manual

(See the x86 features)

Intel opcode table for IA32

(Uses intel syntax)

Intel IA32 Documentation

(Uses intel syntax)

x86-64 Machine-Level Programming

This document supplements Chapter 3 of the textbook.

x86-64 Application Binary Interface (ABI)

Specifies the rules for compilers and linkers.

Intel software optimization manual

Descriptions of all Intel architectures (incl. x86-64 and IA32). Latencies and throughputs of assembly instructions.

Smashing The Stack For Fun And Profit

A nice article from 1996. Also available as a PDF.
Linux

ELF Format

The Linux Kernel

(pdf)
Lecture Materials
1. Binary Representations; Logic [03/27-29]

Skim CS:APP 1 (ie, chapter 1 of the textbook Computer Systems: A Programmer's Perspective)

Skim Hoover 1 (ie, chapter 1 of the textbook System Programming with C and Unix)

Read CS:APP 2.1

Read Tutorial One: http://www.ee.surrey.ac.uk/Teaching/Unix

Skim this C reference: http://cprog.tomsweb.net/

Slides from class: file:class-01 file:s01-1.pptx file:02-1.ppt

2. Integer Representations [04/03-05]

Read CS:APP 2.1-2.2

Read Hoover 2

http://www.youtube.com/watch?v=OCYZTg3jahU

Slides: file:class-02 file:02-2.ppt

3. Integer Arithmetic; Floating Point [04/10-12]

Read CS:APP 2.3-2.4

Slides: file:class-03 file:s02-3.pptx

4. Assembly I (Pointers; Arithmetic) [04/17-19]

Read CS:APP 3.1-3.5

Read Hoover 3-4

Read about C pointers: http://boredzo.org/pointers/

Slides: file:03-1.ppt

More slides on C: file:class-02

5. Midterm Exam; Assembly II (GDB) [04/24-26]

My gdb Notes My Bomb Lab Notes

6. Assembly III (Control; Procedures) [05/01-03]

Read CS:APP 3.6-3.7

Slides: file:03-2.ppt file:03-3.ppt

7. Assembly IV (Structured Data) [05/08-10]

Read CS:APP 3.8-3.13 file:03-4.ppt file:03-5.ppt

How do buffer overflow attacks work?

8. TBD [05/15-17]
9. TBD [05/22-24]
10. Memory Hierarchy [05/29-31]

Read CS:APP 6

Slides: file:s06-1.pptx file:s06-2.pptx

Memory System Performance Characterization with ECT memperf - Extended Copy Transfer Characterization

Intel's Sandy Bridge Microarchitecture (By: David Kanter)

11. Final Exam [06/07]

Final exam is held Thursday, June 7, 2012 11:45am-2:00pm

Contact Hours
Class Hours: Tue/Thu 1:30-3:00pm in CDM 220 [Section 601]
Online, Anytime [Section 610]
Office Hours: Tue/Thu 3:00pm-4:00pm in CDM 846


The stylesheets used to create this website are based on Corin Pitcher's XSLT stylesheets for lecture slides.