Princeton University
Computer Science Department

Computer Science 217
Introduction to Programming Systems

Randy Wang

Fall 2004


Directory
General Information | Schedule | Assignments | Announcements | Policies

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

The .avi movies of the recorded lectures listed below are in MPEG4 format. If you have trouble playing these movies, please see this page for trouble-shooting tips.

Week 1: 9/9 - 9/12

Reading (required): C Programming (King) 1, 2; The Practice of Programming (Kernighan & Pike) 1

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

Lecture 1: (Thursday) Introduction: pdf (169KB), avi (50min, 39MB).

Precept 1: (Thursday/Friday) CANCELLED BECAUSE OF SCHEDULING PROBLEMS


Week 2: 9/13 - 9/19

Reading (required): C Programming (King) 3, 4, 5, 6, 7; The Practice of Programming (Kernighan & Pike) 4

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

Lecture 2: (Tuesday) Introduction to C: pdf (228KB), avi (55min, 47MB).

Precept 2: (Tuesday/Wednesday) Introduction; The Program Preparation Process

Lecture 3: (Thursday) Programming style and scope: pdf (497KB), avi (50min, 40MB).

Precept 3: (Thursday/Friday) UNIX; Emacs


Week 3: 9/20 - 9/26

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

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

Lecture 4: (Tuesday) Modules and interfaces: pdf (338KB), avi (47min, 36.9MB).

Precept 4: (Tuesday/Wednesday) C Simple Programs; C Fundamentals

Lecture 5: (Thursday) Pointers and arrays: pdf (510KB), avi (54min, 42.6MB).

Precept 5: (Thursday/Friday) C Fundamentals (cont.); C Multi-File Programs; Gdb

(Sunday) De-Comment Assignment Due


Week 4: 9/27 - 10/3

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

Reading (recommended):

Lecture 6: (Tuesday) Abstract data types: pdf (261KB), avi (54min, 41.2MB).

Precept 6: (Tuesday/Wednesday) C Pointers; C Arrays

Lecture 7: (Thursday) Preprocessing and Macros: pdf (59.6KB), avi (50min, 37.8MB).

Precept 7: (Thursday/Friday) C Arrays (cont.); C Strings; C Constants

(Sunday) MyString Module Assignment Due


Week 5: 10/4 - 10/10

Reading (required):  C Programming (King) 19; The Practice of Programming (Kernighan & Pike) 2, 5, 6

Reading (recommended):

Lecture 8: (Tuesday) Program design and hash table: pdf (294KB), avi (48min, 39.9MB).

Precept 8: (Tuesday/Wednesday) C Files; C Structures; C Dynamic Memory Management

Lecture 9: (Thursday) Robust programming and debugging: pdf (230KB), avi (56min, 42.9MB).

Precept 9: (Thursday/Friday) C Abstract Data Types


Week 6: 10/11 - 10/17

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

Reading (recommended):

Lecture 10: (Tuesday) Testing and profiling: pdf (289KB), avi (53min, 39.8MB).

Precept 10: (Tuesday/Wednesday) Void Pointers and Abstract Data Types; The Symbol Table Assignment

Lecture 11: (Thursday) Dynamic memory allocation: pdf (566KB)

Precept 11: (Thursday/Friday) C Function Pointers and Abstract Data Types; A DynArray ADT

(Sunday) Symbol Table Assignment Due


Week 7: 10/18 - 10/24

Reading (required): Programming from the Ground Up (Bartlett) 1, 2, 3, 10, B, E

Reading (recommended): Programming with GNU Software (Loukides & Oram) 7, 9; IA32 Intel Architecture Software Developer's Manual: Volume 1: Basic Architecture

Lecture 12: (Tuesday) Overview of architecture: pdf (437KB), avi (49min, 35MB).

Precept 12: (Tuesday/Wednesday) C Declarations and Definitions

Lecture 13: (Thursday) Midterm Examination Old exams and answer sheets, This semester's exams.

Precept 13: (Thursday/Friday) Make; Gprof


Week 8: 10/25 - 10/31

(Monday - Sunday) Fall Recess


Week 9: 11/1 - 11/7

Reading (required): Programming from the Ground Up (Bartlett) 4, 9, F

Reading (recommended): Programming from the Ground Up (Bartlett) 5, 6, 7, 8, 11, 12, 13, C

Lecture 14: (Tuesday) IA32 instructions, Floating-point, branching and assembler directives: pdf (139KB)

Precept 14: (Tuesday/Wednesday) Assembly Language: Getting Started

Lecture 15: (Thursday) Procedure calls and calling conventions: pdf (160KB)

Precept 15: (Thursday/Friday) Assembly Language: Fundamentals, Control Transfer


Week 10: 11/8 - 11/14

Reading (required):

Reading (recommended): IA32 Intel Architecture Software Developer's Manual: Volume 2: Instruction Set Reference; Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification

Lecture 16: (Tuesday) Assembler and Linker: pdf (429KB), avi (47min, 36MB).

Precept 16: (Tuesday/Wednesday) Assembly Language: Instruction Operand Types, Local Variables

Lecture 17: (Thursday) Overview of operating system: pdf (981KB), avi (46min, 34MB)

Precept 17: (Thursday/Friday) Assembly Language: Functions; Gdb for Assembly Language

(Sunday) UNIX Commands in Assembly Language Assignment Due


Week 11: 11/15 - 11/21

Reading (required): C Programming (King) 20

Reading (recommended):

Lecture 18: (Tuesday) Signals: pdf (332KB), avi (51min, 43MB)

Precept 18: (Tuesday/Wednesday) The Assembler Assignment: Overview

Lecture 19: (Thursday) Exceptions: pdf (98KB), avi (48min, 40MB)

Precept 19: (Thursday/Friday) The Assembler Assignment: Pass 1


Week 12: 11/22 - 11/28

Reading (required):

Reading (recommended):

Lecture 20: (Tuesday) Processes: pdf (172KB), avi (44min, 33MB)

Precept 20: (Tuesday/Wednesday) The Assembler Assignment: Pass 1 Relocation

(Thursday - Friday) Thanksgiving Holiday


Week 13: 11/29 - 12/5

Reading (required):  C Programming (King) 24

Reading (recommended): The UNIX Programming Environment (Kernighan & Pike) 7.1-3

Lecture 21: (Tuesday) Interprocess communication (pipes): pdf (288KB), avi (50min, 37MB)

Precept 21: (Tuesday/Wednesday) The Assembler Assignment: Pass 2

Lecture 22: (Thursday) Interprocess communication (sockets): pdf (472KB), avi (49min, 36MB)

Precept 22: (Thursday/Friday) The Shell Assignment: Overview

(Sunday) Assembler Assignment Due


Week 14: 12/6 - 12/12

Reading (required): The UNIX Programming Environment (Kernighan & Pike) 7.4-5; The Practice of Programming (Kernighan & Pike) 7, 8

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

Lecture 23: (Tuesday) Portable programming: pdf (168KB), avi (43min, 35MB)

Precept 23: (Tuesday/Wednesday) The Shell Assignment: UNIX Processes

Lecture 24: (Wednesday) Performance tuning: pdf (217KB), avi (41min, 32MB)

Precept 24: (Wednesday/Thursday) The Shell Assignment: UNIX Inter-Process Communication; Signals


Week 15: 12/13 - 12/19

(Monday - Sunday) Winter Break


Week 16: 12/20 - 12/26

(Monday - Sunday) Winter Break


Week 17: 12/27 - 1/2

(Monday - Sunday) Winter Break


Week 18: 1/3 - 1/9

(Monday - Sunday) Reading Period


Week 19: 1/10 - 1/16

(Monday - Tuesday) Reading Period

(Tuesday) Dean's Date

(Tuesday) Shell Assignment Due

(Wednesday - Sunday) Final Examinations


Week 20: 1/17 - 1/22

(Monday - Saturday) Final Examinations

(Tuesday/Wednesday) Exam Preparation Session (Summary Sheet, Old Exams and Answer Sheets)

(Friday) Final Examination (8:30am, CS 104)


All lecture notes are copyright 2001, 2002, 2003, 2004 by Kai Li, Andrew W. Appel, Thomas Funkhouser, David R. Hanson, Larry Peterson, and/or Randolph Wang. All precept handouts are copyright 2001, 2002, 2003, 2004 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.