Princeton University
Computer Science Department

Computer Science 217
Introduction to Programming Systems

Aarti Gupta

Spring 2017


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 (Gupta) Lecture (Gupta)
10:30AM Office (Gupta)
12:30PM Precept (Gunawardena) Precept (Gunawardena)
1:30PM Precept (Dondero) Precept (Gunawardena) Precept (Dondero) Precept (Gunawardena), Office (Gupta)
2:30PM Office (Dondero) Office (Gunawardena) Office (Dondero) Office (Gunawardena)
3:30PM Precept (Dondero) Office (Gunawardena) Precept (Dondero) Office (Gunawardena)
4:30PM Office (Dondero) Office (Dondero)
7:30PM Precept (Qiu) Precept (Qiu)
8:30PM Office (Qiu) Office (Qiu)


Week-by-Week


Week 1: 2/6 - 2/12

Reading (required): C Programming (King) 1, 2 ,3

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

Reading (recommended): Unix Tutorial for Beginners

Reading (recommended): GNU Emacs Tutorial

Reading (recommended): Linux Pocket Guide (Barrett) pp. 166-179 (concerning composing Bash shell scripts) (available through Blackboard in the "Course Materials" section)

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

Lecture 1: (Monday) Introduction; C Overview (1-up, 6-up)

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

Lecture 2: (Wednesday) A Taste of C (1-up, 6-up)

Precept 2: (Wednesday/Thursday) Linux and Bash; Emacs

(Sunday 2/12) Introductory Survey Assignment Due (at 9:00PM)


Week 2: 2/13 - 2/19

Reading (required): C Programming (King) 4, 5, 6, 7, 14, 15, 20.1

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

Reading (recommended): GNU GDB Tutorial

Lecture 3: (Monday) Number Systems (1-up, 6-up)

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

Lecture 4: (Wednesday) The Design of C (Part 1) (1-up, 6-up)

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

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


Week 3: 2/20 - 2/26

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

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

Lecture 5: (Monday) The Design of C (Part 2) (1-up, 6-up)

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

Lecture 6: (Wednesday) Testing (1-up, 6-up)

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


Week 4: 2/27 - 3/5

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

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

Reading (recommended): GNU Make Tutorial

Lecture 7: (Monday) Building; Debugging Part 1 (1-up, 6-up)

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

(Wednesday 3/1) String Module Assignment Due (at 9:00PM)

Lecture 8: (Wednesday) Data Structures; Debugging Part 2 (1-up, 6-up)

Precept 8: (Wednesday/Thursday) Tools for Debugging Dynamic Memory Management; Abstract Data Types in C


Week 5: 3/6 - 3/12

Reading (required): C Programming (King) 19, 22

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

Lecture 9: (Monday) Program and Programming Style (1-up, 6-up); Modularity (1-up, 6-up)

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

Lecture 10: (Wednesday) Modularity design principles (1-up, 6-up)

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

(Sunday 3/12) Symbol Table Assignment Due (at 9:00PM)


Week 6: 3/13 - 3/19

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

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

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

Reading (recommended, for reference only): OProfile Manual

Lecture 11: (Monday) Performance Improvement (1-up, 6-up)

Precept 11: (Monday/Tuesday) C Declarations and Definitions

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

Precept 12: (Wednesday/Thursday) NO PRECEPT


Week 7: 3/20 - 3/26

(Monday - Sunday) Spring Recess


Week 8: 3/27 - 4/2

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

Lecture 13: (Monday) Language-Levels Tour: Assembly Language 1 (1-up, 6-up)

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

Lecture 14: (Wednesday) Language-Levels Tour: Assembly Language 2 (1-up, 6-up)

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


Week 9: 4/3 - 4/9

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

Lecture 15: (Monday) Language-Levels Tour: Assembly Language Function Calls (1-up, 6-up)

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

Lecture 16: (Wednesday) Language-Levels Tour: Machine Language, Assemblers, and Linkers (1-up, 6-up)

Precept 16: (Wednesday/Thursday) Assembly Language: Local Variables, Functions, The Assignment 4 BigInt_add Function


Week 10: 4/10 - 4/16

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

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

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

Lecture 17: (Monday) Service-Levels Tour: Exceptions and Processes (1-up, 6-up)

Precept 17: (Monday/Tuesday) Linux and Bash (Part 2)

(Wednesday 4/12) Assembly Language and Testing Assignment Due (at 9:00PM)

Lecture 18: (Wednesday) Service-Levels Tour: Storage Management (1-up, 6-up)

Precept 18: (Wednesday/Thursday) The Buffer Overrun Assignment


Week 11: 4/17 - 4/23

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.9-12 (available through Blackboard in the "Course Materials" section)

Lecture 19: (Monday) Service-Levels Tour: Dynamic Memory Management (1-up, 6-up)

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

Lecture 20: (Wednesday) Service-Levels Tour: Dynamic Memory Management (cont., same as Lecture 19)

Precept 20: (Wednesday/Thursday) The HeapMgr Assignment: Baseline Implementation Data Structures and Algorithms, Baseline Implementation Code

(Sunday 4/23) Buffer Overrun Assignment Due (at 9:00PM)


Week 12: 4/24 - 4/30

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

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

Lecture 21: (Monday) Service-Levels Tour: Process Management (1-up, 6-up)

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

Lecture 22: (Wednesday) Service-Levels Tour: I/O Management (1-up, 6-up)

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


Week 13: 5/1 - 5/7

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

Lecture 23: (Monday) Service-Levels Tour: Signals (1-up, 6-up)

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

(Wednesday 5/3) Heap Manager Assignment Due (at 9:00PM)

Lecture 24: (Wednesday) Program Verification (1-up, 6-up)

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


Week 14: 5/8 - 5/14

(Monday - Sunday) Reading Period


Week 15: 5/15 - 5/21

(Monday - Tuesday) Reading Period

(Tuesday) Dean's Date

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

(Wednesday - Sunday) Final Examination Period

(Wednesday 5/17) Final Exam Prep Session, 1:30PM, CS Building 104

(Thursday 5/18) Final Exam Prep Session, 1:30PM, CS Building 104

(Friday 5/19) Final Examination, 1:30PM, Friend Center 101 (Final Exam Prep Document, Final Exams and Answers from Previous Semesters, This Semester's Exam, Answers to This Semester's Exam)


Week 16: 5/22 - 5/28

(Monday - Saturday) Final Examination Period


All lecture notes are copyright 2001-2017 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-2017 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.