![]() Princeton University
|
Computer Science 217
|
Fall 2008 |
The schedule will change throughout the course. Please check it frequently.
Reading (required): C Programming (King) 1
Reading (required): Computer Systems (Bryant & O'Hallaron) 1
Lecture 1: (Thursday) Introduction; C Overview
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
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
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
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
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
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)
(Monday - Sunday) Fall Recess
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
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
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
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
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
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
(Monday - Sunday) Winter Break
(Monday - Sunday) Winter Break
(Monday - Sunday) Winter Break
(Tuesday - Sunday) Reading Period
(Monday - Tuesday) Reading Period
(Tuesday) Dean's Date
(Tuesday) Shell Assignment Due
(Wednesday - Sunday) Final Examination Period
(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)