Princeton University
Computer Science Department

Computer Science 217
Introduction to Programming Systems

Jennifer Rexford

Fall 2015


Directory
General Information | Schedule | Assignments | Announcements | Policies

Overview

The schedule will change throughout the course. Please check it frequently.

Monday Tuesday Wednesday Thursday Friday
10:00AM Lecture (Rexford) Lecture (Rexford)
11:00AM Office (Rexford)
Office (Petras @11:30)
Office (Rexford)
Office (Petras @11:30)
Office (Popovych)
12:30PM Precept (Petras)
Precept (Wolf)
Precept (Petras)
Precept (Wolf)
Office (MacDavid)
1:30PM Precept (Dondero) Precept (Petras)
Precept (Oda)
Precept (Dondero) Precept (Petras)
Precept (Oda)
Office (Roberts)
2:30PM Office (Dondero) Office (Petras)
Office (Oda)
Office (Dondero) Office (Petras)
Office (Oda)
Office (Roberts)
3:30PM Precept (Dondero) Precept (Popovych)
Office (Wolf)
Precept (Dondero) Precept (Popovych)
Office (Wolf)
4:30PM Office (Dondero) Office (Popovych) Office (Dondero)
7:30PM Precept (MacDavid)
Precept (Roberts)
Precept (Nagree)
Precept (Qiu)
Precept (MacDavid)
Precept (Roberts)
Precept (Nagree)
Precept (Qiu)
8:30PM Office (MacDavid) Office (Nagree)
Office (Qiu)
Office (Nagree)
Office (Qiu)

Week-by-Week


Week 0: 9/16 - 9/20

Reading (required): C Programming (King) 1

Reading (required): Computer Systems (Bryant & O'Hallaron) 1 (available through Blackboard in the "Course Materials" section)

Lecture 1: (Thursday) Introduction; C Overview (6up pdf, ppt)


Week 1: 9/21 - 9/27

Reading (required): C Programming (King) 2, 3, 4, 5, 6, 7, 20.1

Reading (recommended, for reference only): C Programming (King) 21

Reading (recommended): Computer Systems (Bryant & O'Hallaron) 2

Reading (recommended): Unix Tutorial for Beginners

Reading (recommended): GNU Emacs Tutorial

Reading (recommended): Wikipedia "Deterministic finite automaton" article

Precept 1: (Monday/Tuesday) Introduction; The Computing Environment; Program Preparation

Lecture 2: (Tuesday) A Taste of C (6up pdf, ppt)

Precept 2: (Wednesday/Thursday) Unix; Bash; Emacs

Lecture 3: (Thursday) Number Systems (6up pdf, ppt)


Week 2: 9/28 - 10/4

Reading (required): C Programming (King) 14, 15

Reading (recommended): GNU GDB Tutorial

Precept 3: (Monday/Tuesday) Simple C Programs; C Fundamentals

Lecture 4: (Tuesday) The Design of C (Part 1) (6up pdf, ppt)

Precept 4: (Wednesday/Thursday) Multi-File C Programs; GDB

Lecture 5: (Thursday) The Design of C (Part 2) (6up pdf, ppt)

(Sunday 10/4) De-Comment Assignment Due (at 9:00PM)


Week 3: 10/5 - 10/11

Reading (required): C Programming (King) 8, 9, 11, 12, 13

Reading (recommended): The Practice of Programming (Kernighan & Pike) 6

Reading (recommended): GNU Make Tutorial

Precept 5: (Monday/Tuesday) C Pointers and Arrays

Lecture 6: (Tuesday) Testing (6up pdf, ppt)

Precept 6: (Wednesday/Thursday) C Arrays and Strings

Lecture 7: (Thursday) Building (6up pdf, ppt)


Week 4: 10/12 - 10/18

Reading (required): C Programming (King) 16, 17

Reading (recommended): The Practice of Programming (Kernighan & Pike) 1, 2, 5

Precept 7: (Monday/Tuesday) C Command-Line Arguments; C Structures; C Dynamic Memory Management

Lecture 8: (Tuesday) Program and Programming Style (6up pdf, ppt); Debugging (Part 1) (6up pdf, ppt)

(Tuesday 10/13) String Module Assignment Due (at 11:59PM)

Precept 8: (Wednesday/Thursday) The Meminfo Tool; Abstract Data Types in C

Lecture 9: (Thursday) Debugging (Part 2) (6up pdf, ppt); Data Structures (6up pdf, ppt)


Week 5: 10/19 - 10/25

Reading (required): C Programming (King) 19

Reading (recommended): The Practice of Programming (Kernighan & Pike) 4, 8

Precept 9: (Monday/Tuesday) C Void Pointers; The Symbol Table Assignment

Lecture 10: (Tuesday) History of Modularity (6up pdf, ppt)

Precept 10: (Wednesday/Thursday) C Function Pointers; A DynArray ADT

Lecture 11: (Thursday) Modularity Heuristics (6up pdf, ppt)

(Sunday 10/25) Symbol Table Assignment Due (at 9:00PM)


Week 6: 10/26 - 11/1

Reading (required): C Programming (King) 10, 18

Reading (recommended): Computer Systems (Bryant & O'Hallaron) 5.1-5

Reading (recommended): The Practice of Programming (Kernighan & Pike) 7

Reading (recommended): GNU Gprof Tutorial

Precept 11: (Monday/Tuesday) C Declarations and Definitions; Midterm Exam Prep Document

Lecture 12: (Tuesday) Performance Improvement (6up pdf, ppt)

Precept 12: (Wednesday/Thursday) NO PRECEPT

Lecture 13: (Thursday) Midterm Examination (Midterm Exam Prep Document, Midterm Exams and Answers from Previous Semesters, This Semester's Exam, Answers to This Semester's Exam)


Week 7: 11/2 - 11/8

(Monday - Sunday) Fall Recess


Week 8: 11/9 - 11/15

Reading (required): Computer Systems (Bryant & O'Hallaron) 3 (OK to skip 3.11) (available through Blackboard in the "Course Materials" section)

Reading (recommended, for reference only): Intel 64 and IA-32 Architectures Software Developer's Manual: Volume 1: Basic Architecture

Reading (recommended, for reference only): Intel 64 and IA-32 Architectures Software Developer's Manual: Volume 2: Instruction Set Reference

Reading (recommended, for reference only): Intel 64 and IA-32 Architectures Software Developer's Manual: Volume 3: System Programming Guide

Reading (recommended, for reference only): Intel 64 and IA-32 Architectures Optimization Reference Manual

Reading (recommended, for reference only): Using as

Precept 13: (Monday/Tuesday) Assembly Language: Getting Started

Lecture 14: (Tuesday) Language-Levels Tour: Assembly Language 1 (6up pdf, ppt)

Precept 14: (Wednesday/Thursday) Assembly Language: Fundamentals, Control Transfer (Part 1)

Lecture 15: (Thursday) Language-Levels Tour: Assembly Language 2 (6up pdf, ppt)


Week 9: 11/16 - 11/22

Reading (recommended): Computer Systems (Bryant & O'Hallaron) 5.6-15, 7

Precept 15: (Monday/Tuesday) Assembly Language: Control Transfer (Part 2), Instruction Operands, GDB for Assembly Language

Lecture 16: (Tuesday) Language-Levels Tour: Assembly Language Functions Calls (6up pdf, ppt)

Precept 16: (Wednesday/Thursday) Assembly Language: Local Variables, Functions

Lecture 17: (Thursday) Language-Levels Tour: Machine Language, Assemblers, and Linkers (6up pdf, ppt)


Week 10: 11/23 - 11/29

Reading (required): C Programming (King) 22

Reading (required): Communications of the ACM "Detection and Prevention of Stack Buffer Overflow Attacks" paper (available through Blackboard in the "Course Materials" section)

Reading (required): Computer Systems (Bryant & O'Hallaron) 8.1-8.3 (available through Blackboard in the "Course Materials" section)

Precept 17: (Monday/Tuesday) The Buffer Overrun Assignment

Lecture 18: (Tuesday) Service-Levels Tour: Exceptions and Processes (6up pdf, ppt)

(Tuesday 11/24) Assembly Language Assignment Due (at 11:59PM)

(Wednesday - Friday) Thanksgiving Holiday


Week 11: 11/30 - 12/6

Reading (required): The C Programming Language (Kernighan & Ritchie) 8.7 (available through Blackboard in the "Course Materials" section)

Reading (required): Computer Systems (Bryant & O'Hallaron) 9 (available through Blackboard in the "Course Materials" section)

Reading (recommended): Computer Systems (Bryant & O'Hallaron) 6

Reading (recommended): Security as a Class of Interface Guarantee, especially if you're interested in computer security (recommended by Prof. Andrew Appel)

Precept 18: (Monday/Tuesday) C Abstract Objects; The HeapMgr Assignment: Introduction

Lecture 19: (Tuesday) Service-Levels Tour: Storage Management (6up pdf, ppt)

Precept 19: (Wednesday/Thursday) The HeapMgr Assignment: Linked List Implementation: Data Structures, Algorithms, and Code

Lecture 20: (Thursday) Service-Levels Tour: Dynamic Memory Management (6up pdf, ppt)

(Sunday 12/6) Buffer Overrun Assignment Due (at 9:00PM)


Week 12: 12/7 - 12/13

Reading (required): Computer Systems (Bryant & O'Hallaron) 8.4 (available through Blackboard in the "Course Materials" section)

Precept 20: (Monday/Tuesday) The HeapMgr Assignment: Doubly-Linked List and Bin Implementations: Data Structures, Algorithms, and (partial) Code

Lecture 21: (Tuesday) Service-Levels Tour: Dynamic Memory Management (cont.)

Precept 21: (Wednesday/Thursday) The Unix Shell Assignment: Introduction

Lecture 22: (Thursday) Service-Levels Tour:Process Management (6up pdf, ppt), guest lecture by Professor Aarti Gupta


Week 13: 12/14 - 12/20

Reading (required): Computer Systems (Bryant & O'Hallaron) 8.5 (available through Blackboard in the "Course Materials" section)

Reading (recommended): Computer Systems (Bryant & O'Hallaron) 10

Precept 22: (Monday/Tuesday) The Unix Shell Assignment: Processes

Lecture 23: (Tuesday) Service-Levels Tour: I/O Management (6up pdf, ppt)

(Wednesday 12/16) Heap Manager Assignment Due (at 11:59PM)

Precept 23: (Wednesday/Thursday) The Unix Shell Assignment: Shell Built-In Commands, I/O Redirection, Signals

Lecture 24: (Thursday) Service-Levels Tour: Signals (6up pdf, ppt)


Week 14: 12/21 - 12/27

(Monday - Sunday) Winter Break


Week 15: 12/28 - 1/3

(Monday - Sunday) Winter Break


Week 16: 1/4 - 1/10

(Monday - Sunday) Reading Period


Week 17: 1/11 - 1/17

(Monday - Tuesday) Reading Period

(Tuesday 1/12) Dean's Date

(Tuesday 1/12) Shell Assignment Due (at 5:00PM)

(Wednesday - Sunday) Final Examination Period

(Thursday 1/14) Final Exam Prep Session, 1:30PM, CS Building 104 (Final Exam Preparation Document)

(Friday 1/15) Final Exam Prep Session, 1:30PM, Friend Center 006 (Final Exam Preparation Document)


Week 18: 1/18 - 1/23

(Monday - Sunday) Final Examination Period

(Tuesday 1/19) Final Examination, 1:30PM, McCosh Hall 50 (Final Exams and Answers from Previous Semesters, This Semester's Exam, Answers to This Semester's Exam)


All lecture notes are copyright 2001-2015 by Jaswinder Pal Singh, David August, Vivek Pai, Jennifer Rexford, Kai Li, Andrew W. Appel, Randolph Wang, Thomas Funkhouser, David R. Hanson, Larry Peterson, Aarti Gupta, and/or Robert M. Dondero, Jr. All precept handouts are copyright 2001-2015 by Robert M. Dondero, Jr. Permission to reproduce these notes for not-for-profit educational purposes is hereby granted. These notes may not be reproduced for commercial purposes without the express written consent of the author.