Professor:
Tia Newhall
Office: Science Center 249
Phone: (610) 690-5637
Office hours: Wed 9-12 and by appointment
Class: 1:15 TR, Sci Cntr 183
Lab A (Newhall):
1:15 Wednesdays, Sci Cntr 256
Lab B (Wiedenbeck):
3:00 Wednesdays, Sci Cntr 256
Recommended (optional) Text:
Additionally, each week there
will be optional readings from the recommended textbook:
Computer Systems: A Programmer's Perspective,
2nd Edition
Bryant and O'Hallaron,
Prentice Hall, 2011, ISBN: 0-13-610804-0
Copies of the textbook are on reserve at Cornell Library.
You are not required to purchase this textbook, but if you
do, make sure to purchace the second edition not the third.
I also recommend that you keep the textbook after taking CS31;
it will be a useful reference for many upper-level CS courses.
Link to course piazza page
The required weekly readings are from on-line sources. Supplemental (optional) weekly readings are listed as section numbers from the textbook. The textbook covers much material in more depth than we will in this class. Take a look at tips for reading CS textbooks to help you determine what to focus on and how to get the most out of both the on-line required and supplemental textbook readings.
WEEK | DATE | ANNOUNCEMENTS | TOPIC & READING | LAB |
1 | Sep 01 | Using Unix Session: | Required Reading: Computer Systems, Binary Data Representation, Binary Add, Sub, 2's Complement Textbook Supplimental (Optional) Reading: 1 (skim), 2.1-2.2
| Lab0 |
Sep 03 | Lab1 | |||
2 | Sep 08 | Required: Intro to C programming for CS31: Part 1 Supplimental: C for Python Programmers
| Wed lab | |
Sep 10 | Drop/Add ends (Sep 11) | Lab 2 | ||
3 | Sep 15 | Required: gates, circuits, machine architecture (we will learn differnet machine code so don't focus too much on the instrution details) Supplimental: 1.4, 4.2
| Wed lab | |
Sep 17 | Lab 3 | |||
4 | Sep 22 | Required: ISA (skim sections 1-3) IA32 Assembly Programming by Kai Li (read 1-2.3, we are using gnu syntax) IA32 Cheat Sheet by Julie Zelenski Supplimental: 7.1-7.3, 3.1-3.5 (skip 3.5.5)
| Wed lab | |
Sep 24 | Lab 3 Part 2 | |||
5 | Sep 29 | Required: C Programming: Structs and Pointers Arrays in C (1-dimensional only) x86 Programming Guide (read Control Flow instructions) Supplimental: 3.6-3.11, 3.15 (skip 3.6.7, 3.8.4, 3.8.5, 3.9.2) There are lots of additional IA32 references on-line that can be useful, for example: wikibooks X86 GAS Syntax
| Wed lab | |
Oct 01 | Lab 04 | |||
6 | Oct 06 | Required: Call Stack (Intro-Structure) x86 Programming Guide (read calling convention) x86 Call Stack Convention Arrays in C (just memory layout parts) Supplimental: 3.6-3.11, 3.15 (skip 3.6.7, 3.8.4, 3.8.5, 3.9.2)
| Wed lab | |
Oct 08 | Lab 5 | |||
Oct 13 | Fall Break | |||
Oct 15 | ||||
7 | Oct 20 | Required: x86 Programming Guide Arrays in C (just look at the memory layout parts of static 1 and 2 D arrays) Data Strucuture Alignment (skim) Supplimental: 1.5-1.7
| Wed lab | |
Oct 22 | Lab 5 (cont.) | |||
8 | Oct 26 | Midterm Exam Monday 7:30-9:30pm (SciCtr 101) | ||
Oct 27 | Required: Memory Hierarchy Caching (1-4: through "Hit or Miss", 8: "Cache Tagging", 11: "Cache Misses") Cache Basics, Cache Misses, Cache Associativity Supplimental: 1.5-1.7
| Wed lab | ||
Oct 29 | Lab 5 (cont.) | |||
9 | Nov 03 | Required: Operating Systems (skim) Arrays in C (2D arrays) Supplimental: 1.7, 8.1-8.5
| Wed lab | |
Nov 05 | Deadline for CR/NC | Lab 6 | ||
10 | Nov 10 | Required: Processes (through 4.4) fork,exec,wait (through 5.3) Virtual Memory Supplimental: 9.1-9.3, 9.9
| Wed lab | |
Nov 12 | Lab 7 | |||
11 | Nov 17 | Required: Virtual Memory Introduction to Virtual Memory and Paging Supplimental: 1.7, 1.9, 12
| Wed lab | |
Nov 19 | Lab 8 | |||
12 | Nov 24 | Required: Threads Pthread Programming Supplimental: 1.7, 1.9, 12
| In class Tues | |
Nov 26 | Thanksgiving | |||
13 | Dec 01 | Required: Threads Pthread Programming Supplimental: 1.7, 1.9, 12
| Written HW 2 | |
Dec 03 | Required: Threads Pthread Programming Supplimental: 12
| Wed Lab | ||
14 | Dec 08 | Wrapup | ||
Dec 15 | Final Exam Tuesday 2-5pm (SciCtr 101) |