Princeton University
Computer Science Department

Computer Science 217
Introduction to Programming Systems

Jaswinder Pal Singh

Fall 2011


Directory
General Information | Schedule | Assignments | Announcements | Policies

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


Week 0: 9/15 - 9/18

Reading (required): C Programming (King) 1

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

Lecture 1: (Thursday) Introduction; C Overview


Week 1: 9/19 - 9/25

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; The Computing Environment; Program Preparation

Lecture 2: (Tuesday) C Programming Examples

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

Lecture 3: (Thursday) C Examples (contd.) and Number Systems


Week 2: 9/26 - 10/2

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) Simple C Programs; C Fundamentals

Lecture 4: (Tuesday) Design Decisions in C

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

Lecture 5: (Thursday) Testing

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


Week 3: 10/3 - 10/9

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


Week 4: 10/10 - 10/16

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

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

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

Lecture 8: (Tuesday) Program and Programming Style

(Tuesday 10/11) String Module Assignment Due (at 9:00PM)

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

Lecture 9: (Thursday) Data Structures and Algorithms


Week 5: 10/17 - 10/23

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; A DynArray ADT

Lecture 11: (Thursday) Generics

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


Week 6: 10/24 - 10/30

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

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

Lecture 12: (Tuesday) Exam Prep

Precept 12: (Wednesday/Thursday) NO PRECEPT

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


Week 7: 10/31 - 11/6

(Monday - Sunday) Fall Recess


Week 8: 11/7 - 11/13

Reading (required): Computer Systems (Bryant & O'Hallaron) 8.1-8.3

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

Precept 13: (Monday/Tuesday) Primality Tester Project Team Meeting 1

Lecture 14: (Tuesday) Overview of Primality Testing and Team Assignment

Precept 14: (Wednesday/Thursday) Primality Tester Project Team Meeting 2

Lecture 15: (Thursday) Service Levels Tour: Exceptions and Processes


Week 9: 11/14 - 11/20

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

Precept 15: (Monday/Tuesday) Primality Tester Project Team Meeting 3

Lecture 16: (Tuesday) Service Levels Tour: Memory Management

Precept 16: (Wednesday/Thursday) Assembly Language: Getting Started

Lecture 17: (Thursday) Service Levels Tour: Dynamic Memory Management

(Sunday 11/20) Primality Tester Assignment Due (at 9:00PM)


Week 10: 11/21 - 11/27

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

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 17: (Monday/Tuesday) Assembly Language: Fundamentals, Control Transfer (Part 1)

Lecture 18: (Tuesday) Language Levels Tour: Assembly Language 1

(Thursday - Friday) Thanksgiving Holiday


Week 11: 11/28 - 12/4

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

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

Lecture 19: (Tuesday) Language Levels Tour: Assembly Language 2

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

Lecture 20: (Thursday) Language Levels Tour: Assembly Language Function Calls


Week 12: 12/5 - 12/11

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

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

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

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

Lecture 21: (Tuesday) Language Levels Tour: Assemblers, Linkers, Machine Language

(Tuesday 12/6) Assembly Language Assignment Due (at 9:00PM)

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

Lecture 22: (Thursday) Service Levels Tour: Process Management, I/O Management


Week 13: 12/12 - 12/18

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

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

Lecture 23: (Tuesday) Service-Levels Tour: Signals

(Tuesday 12/13) Buffer Overrun Assignment Due (at 9:00PM)

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

Lecture 24: (Thursday) Service-Levels Tour: Performance Revisited


Week 14: 12/19 - 12/25

(Monday - Sunday) Winter Break


Week 15: 12/26 - 1/1

(Monday - Sunday) Winter Break


Week 16: 1/2 - 1/8

(Monday - Sunday) Winter Break


Week 17: 1/9 - 1/15

(Tuesday - Sunday) Reading Period

(Sunday 1/15) Shell Assignment Due (at 9:00PM)


Week 18: 1/16 - 1/22

(Monday - Tuesday) Reading Period

(Tuesday) Dean's Date

(Wednesday - Sunday) Final Examination Period

(Wednesday 1/18) Exam Prep Session (Final exam preparation handout)

(Thursday 1/19) Exam Prep Session (Final exam preparation handout)

(Friday 1/20) Final Examination, 9:00 AM, Frick Chemistry Laboratory B02 (Final Exams and Answers from Previous Semesters; This Semester's Exam; Answers to this Semester's Exam)


Week 18: 1/23 - 1/28

(Monday - Saturday) Final Examination Period


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