Princeton University
Computer Science Department

Computer Science 217
Introduction to Programming Systems

Andrew W. Appel

Fall 2002


Directory
General Information | Schedule | Assignments | Announcements | Policies

Lectures listed in roman type. Precepts listed in italics.
Before taking this course, you should already know the material in Chapters 1-9,11-14,16 of the King textbook.

Date Topic Reading
9/12Introduction; Modules & Interfaces
Introduction; The Program Prep. ProcessLoukides&Oram 4
9/17Modules & InterfacesK&P(Practice of Pgmming.) 4
Advanced C: Dynamic Memory ManagementKing 17:1-6
9/19Programming Style; ScopeK&P(Practice of Pgmming.) 1
Advanced C: Void Pointers and Generic ADTsKing 15, 19
9/22Assignment 1 due: symbol table
9/24ADTs; Software design; HashingK&P(Practice of Pgmming.) 4.5, 2.9
Advanced C: Function Pointers and Generic ADTsKing 17.7
9/26Dynamic memory managementK&P(Practice of Pgmming.) 4.6
Advanced C: Declarations, Definitions, Scope, Linkage, DurationKing 10, 18
9/29Assignment 2 due: hash table
10/1Game playing programs; Alpha-beta searchKalah Rules, McGill notes, Rich chapter 12.
Emacs; GdbLoukides&Oram 3, 6
10/3Incremental evaluation in alpha-beta
Game Player Team Discussion: attendance is mandatory
10/8Testing and profilingK&P(Practice of Pgmming.) 6, 7
Make; Game Player Team Discussion: attendance is mandatoryLoukides&Oram 7
10/10Robust programming
Gprof; Game Player Team Discussion: attendance is mandatoryLoukides&Oram 9
10/13Assignment 3 due: game player
10/15Operating systems; Buffered I/O
UNIX and BashLoukides&Oram 2
10/17Processes; fork/exec
Pre-Exam Review
10/21MIDTERM (7:00-9:00pm) Fall 2001 Midterm 1, Fall 2001 Midterm 1 Answers, Fall 2000 Midterm 1, Fall 2000 Midterm 1 Answers, Fall 1999 Midterm 1, Fall 1999 Midterm 1 Answers
10/22Interprocess communication; pipe/dup
UNIX ProcessesK&P(UNIX Pgmming. Env.) 7
10/24Sparc architecture
UNIX Low-Level I/OK&P(UNIX Pgmming. Env.) 7
(Midterm break)
11/5Sparc instructions
UNIX Pipes, Signals, and AlarmsK&P(UNIX Pgmming. Env.) 7
11/7Number systems
Assembly Language: Getting StartedPaul 2.1-4
11/10Assignment 4 due: referee
11/12Branching
Assembly Language FundamentalsPaul 3, 4, 9
11/14Procedure Calls
Assembly Language Branching; Gdb for Assembly LanguagePaul 2.5-13
11/17Assignment 5 due: assembly lang echo/wc
11/19Kernel mode
Assembly Language Stack and SubroutinesPaul 5, 7
11/21Combinational circuits
Assembly Language Leaf Subroutines and Optimization
11/24Assignment 6 due: assembly lang sort
11/26Sequential circuits
Circuit Simulator (Interpreted Version)
11/28(Thanksgiving break)
12/3Parsing
Circuit Simulator (Interpreted Version)
12/5Building a computer
Examples of Digital Circuits
12/8Assignment 7 due: circuit simulator (interpreted)
12/10Assemblers & Linkers
SPARC Assembler, Linker, and Machine LanguagePaul 8
12/12Software engineering
Circuit Simulator (Compiled Version)
(Winter break)
1/12Assignment 8 due: circuit simulator (compiled)
1/23 FINAL EXAM (7:30-10:30pm) Spring 2002 Midterm 2, Spring 2002 Midterm 2 Answers, Fall 2001 Midterm 2, Fall 2001 Midterm 2 Answers

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