Princeton University
Computer Science Department

Computer Science 217
Introduction to Programming Systems

Vivek Pai

Fall 2008


Directory
General Information | Schedule | Assignments | Announcements | Policies

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


Week 0: 9/8 - 9/14

Reading (required): C Programming (King) 1

Reading (required): Computer Systems (Bryant & O'Hallaron) 1

Lecture 1: (Thursday) Introduction; C Overview


Week 1: 9/15 - 9/21

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

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

Reading (recommended): Programming with GNU Software (Loukides & Oram) 1,2,4

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

Lecture 2: (Tuesday) Simple C Programs

Precept 2: (Wednesday/Thursday) Unix; Bash

Lecture 3: (Thursday) Integral Data Types in C


Week 2: 9/22 - 9/28

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

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

Reading (recommended): Programming with GNU Software (Loukides & Oram) 3

Precept 3: (Monday/Tuesday) The Decomment Assignment; Emacs

Lecture 4: (Tuesday) C Fundamentals

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

Lecture 5: (Thursday) Testing

(Sunday) De-Comment Assignment Due


Week 3: 9/29 - 10/5

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

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

Reading (recommended): Programming with GNU Software (Loukides & Oram) 6,7,8,9

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

Lecture 6: (Tuesday) Debugging

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

Lecture 7: (Thursday) Building and Performance

(Sunday) String Module Assignment Due


Week 4: 10/6 - 10/12

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

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

Precept 7: (Monday/Tuesday) C Files; C Structures; C Dynamic Memory Management

Lecture 8: (Tuesday) Program and Programming Style

Precept 8: (Wednesday/Thursday) Abstract Data Types in C

Lecture 9: (Thursday) Data Structures and Algorithms


Week 5: 10/13 - 10/19

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) Modularity

Precept 10: (Wednesday/Thursday) C Function Pointers

Lecture 11: (Thursday) Generics

(Sunday) Symbol Table Assignment Due


Week 6: 10/20 - 10/26

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

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

Lecture 12: (Tuesday) Portability; Exam Prep

Precept 12: (Wednesday/Thursday) NO PRECEPT

Lecture 13: (Thursday) Midterm Examination (See Midterm Exams and Answers from Previous Semesters)


Week 7: 10/27 - 11/2

(Monday - Sunday) Fall Recess


Week 8: 11/3 - 11/9

Reading (required): Computer Systems (Bryant & O'Hallaron) 3 (OK to skip 3.14 and 3.15)

Reading (recommended, for reference only): IA32 Intel Architecture Software Developer's Manual: Volume 1: Basic Architecture

Reading (recommended, for reference only):IA32 Intel Architecture Software Developer's Manual: Volume 2: Instruction Set Reference

Reading (recommended, for reference only): IA32 Intel Architecture Software Developer's Manual: Volume 3: System Programming Guide

Reading (recommended, for reference only): Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification

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

Lecture 14: (Tuesday) Toward the Hardware: Assembly Language 1

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

Lecture 15: (Thursday) Toward the Hardware: Assembly Language 2


Week 9: 11/10 - 11/16

Reading (recommended): Computer Systems (Bryant & O'Hallaron) 5,7

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

Lecture 16: (Tuesday) Toward the Hardware: Assembly Language 3

Precept 16: (Wednesday/Thursday) Assembly Language: Local Variables, Functions, GDB for Assembly Language (Part 2)

Lecture 17: (Thursday) Toward the Hardware: Assemblers, Linkers, Machine Language

(Sunday) Assembly Language Assignment Due


Week 10: 11/17 - 11/23

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

Reading (required): Communications of the ACM "Detection and Prevention of Stack Buffer Overflow Attacks" paper

Reading (required): The C Programming Language (Kernighan & Ritchie) 8.7

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

Lecture 18: (Tuesday) Toward the Operating System: Virtual Memory 1

Precept 18: (Wednesday/Thursday) C Abstract Objects; The HeapMgr Assignment: Baseline Implementation Data Structures and Algorithms

Lecture 19: (Thursday) Toward the Operating System: Dynamic Memory Management 1

(Sunday) Buffer Overrun Assignment Due


Week 11: 11/24 - 11/30

Precept 19: (Monday/Tuesday) The HeapMgr Assignment: Baseline Implementation Code, First Assignment Implementation Data Structures and Algorithms

Lecture 20: (Tuesday) Toward the Operating System: Dynamic Memory Management 2

(Thursday - Friday) Thanksgiving Holiday


Week 12: 12/1 - 12/7

Reading (required): Computer Systems (Bryant & O'Hallaron) 8

Precept 20: (Monday/Tuesday) The HeapMgr Assignment: Assignment Implementation Code (partial), Second Assignment Implementation Data Structures and Algorithms

Lecture 21: (Tuesday) Toward the Operating System: Processes and System Calls

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

Lecture 22: (Thursday) Toward the Operating System: Signals

(Sunday) Heap Manager Assignment Due


Week 13: 12/8 - 12/14

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

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

Lecture 23: (Tuesday) Toward the Operating System: I/O

Precept 23: (Wednesday/Thursday) The Unix Shell Assignment: I/O Redirection and Signals

Lecture 24: (Thursday) Portability Revisited


Week 14: 12/15 - 12/21

(Monday - Sunday) Winter Break


Week 15: 12/22 - 12/28

(Monday - Sunday) Winter Break


Week 16: 12/29 - 1/4

(Monday - Sunday) Winter Break


Week 17: 1/5 - 1/11

(Tuesday - Sunday) Reading Period


Week 18: 1/12 - 1/18

(Monday - Tuesday) Reading Period

(Tuesday) Dean's Date

(Tuesday) Shell Assignment Due

(Wednesday - Sunday) Final Examination Period


Week 19: 1/19 - 1/25

(Monday - Saturday) Final Examination Period

(Tuesday) Final Exam: 9AM-Noon in Friend Center 101 (Exam Prep Sheet, Exams and Answers from Previous Semesters, This Semester's Exam with Answers)


All lecture notes are copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by David August, Vivek Pai, Jennifer Rexford, Kai Li, Andrew W. Appel, Thomas Funkhouser, David R. Hanson, Larry Peterson, Randolph Wang, and/or Robert M. Dondero, Jr. All precept handouts are copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 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.