Princeton University |
Computer Science 217 |
Spring 2004 |
Reading (required): King (C Programming) 2, 3, 10; Kernighan & Pike (Practice of Programming) 1
Reading (recommended): Kernighan & Ritchie (The C Programming Language) 1; Loukides & Oram (Programming with GNU Software) 2, 3, 4
Lecture 1: (Monday) Introduction and basics of C
Precept 1: (Monday/Tuesday) Introduction; The Program Preparation Process
Lecture 2: (Wednesday) Programming style and scope
Precept 2: (Wednesday/Thursday) UNIX; Emacs
Reading (required): Kernighan & Pike (Practice of Programming) 4; King (C Programming) 4, 5, 6, 7, 8, 9
Reading (recommended): Kernighan & Ritchie (The C Programming Language) 5; Loukides & Oram (Programming with GNU Software) 6
Lecture 3: (Monday) Modules and interfaces
Precept 3: (Monday/Tuesday) C Simple Programs; C Fundamentals
Lecture 4: (Wednesday) Pointers and arrays
Precept 4: (Wednesday/Thursday) C Multi-File Programs; Gdb
(Sunday) De-Comment Assignment Due
Reading (required): King (C Programming) 11, 12, 13, 14, 15, 16,
Reading (recommended): Kernighan & Ritchie (The C Programming Language) 4.11
Lecture 5: (Monday) Abstract data types
Precept 5: (Monday/Tuesday) C Pointers; C Arrays
Lecture 6: (Wednesday) Preprocessing and Macros
Precept 6: (Wednesday/Thursday) C Strings; C Constants
(Sunday) MyString Module Assignment Due
Reading (required): Kernighan & Pike (Practice of Programming) 2, 5; King (C Programming) 17.1-6, 19.1-3
Reading (recommended): Loukides & Oram (Programming with GNU Software) 9; Hanson (C interfaces and implementations) 3.2
Lecture 7: (Monday) Program design and hash table
Precept 7: (Monday/Tuesday) C Files; C Structures; C Dynamic Memory Management
Lecture 8: (Wednesday) Robust programming and debugging
Precept 8: (Wednesday/Thursday) C Abstract Data Types
Reading (required): Kernighan & Pike (Practice of Programming) 6; King (C Programming) 17.7
Lecture 9: (Monday) Testing and profiling
Precept 9: (Monday/Tuesday) C Void Pointers and Abstract Data Types; The Symbol Table Assignment
Lecture 10: (Wednesday) Dynamic memory allocation
Precept 10: (Wednesday/Thursday) C Function Pointers and Abstract Data Types; A DynArray ADT
(Sunday) Symbol Table Assignment Due
Reading (required): IA32 Intel Architecture Software Developer's Manual, (Volume 1: Basic Architecture) 4; Bartlett (Programming from the Ground Up) 1, 2; King (C Programming) 18
Reading (recommended): Loukides & Oram (Programming with GNU Software) 7; IA32 Intel Architecture Software Developer's Manual, (Volume 1: Basic Architecture) 3;
Lecture 11: (Monday) More on allocation and Overview of architecture
Precept 11: (Monday/Tuesday) C Declarations and Definitions; Exam Preparation
Lecture 12: (Wednesday) Midterm Examination (Old exams and answer sheets)
Precept 12: (Wednesday/Thursday) Make
(Monday - Sunday) Spring Recess
Reading (required): Bartlett (Programming from the Ground Up) 3, 10, B, E
Reading (recommended): Using as, the GNU Assembler; IA32 Intel Architecture Software Developer's Manual, Volume 1: Basic Architecture 2.1, 3, 4.1-4.2, 5
Lecture 13: (Monday) IA32 instructions
Precept 13: (Monday/Tuesday) Assembly Language: Getting Started
Lecture 14: (Wednesday) Floating-point, branching and assembler directives
Precept 14: (Wednesday/Thursday) Assembly Language: Fundamentals
Reading (required): Bartlett (Programming from the Ground Up) 4, 9, F
Reading (recommended): Bartlett (Programming from the Ground Up) 5, 6, 7, 8, 11, 12, 13, C; Executable and Linkable Format
Lecture 15: (Monday) Procedure calls and calling conventions
Precept 15: (Monday/Tuesday) Assembly Language: Control Transfer, Instruction Operand Types
Lecture 16: (Wednesday) Assembler and Linker
Precept 16: (Wednesday/Thursday) Assembly Language: Local Variables, Functions, Gdb
(Sunday) UNIX Commands in Assembly Language Assignment Due
Reading (required): Kernighan & Pike (Unix Programming Environment) 7.5; King (C Programming) 24.3
Reading (recommended): Kernighan & Pike (Unix Programming Environment) 1, 2, 3, 4, 5; Loukides & Oram (Programming with GNU Software) 9
Lecture 17: (Monday) Overview of operating system
Precept 17: (Monday/Tuesday) Assemblers and Linkers
Lecture 18: (Wednesday) Signals and alarms
Precept 18: (Wednesday/Thursday) Gprof; The Execution Profiler Assignment (Part 1)
Reading (required): Kernighan & Pike (Unix Programming Environment) 7.4
Reading (recommended): Kernighan & Pike (Unix Programming Environment) 7.1-3
Lecture 19: (Monday) Exceptions
Precept 19: (Monday/Tuesday) UNIX Signals and Alarms
Lecture 20: (Wednesday) Processes
Precept 20: (Wednesday/Thursday) The Execution Profiler Assignment (Part 2)
(Sunday) Execution Profiler Assignment Due
Lecture 21: (Monday) Interprocess communication
Precept 21: (Monday/Tuesday) Abstract Objects; The Shell Assignment: Overview
Lecture 22: (Wednesday) Interprocess communication, cont'd
Precept 22: (Wednesday/Thursday) The Shell Assignment: UNIX Processes
Reading (required): Kernighan & Pike (The Practice of Programming) 7, 8
Lecture 23: (Monday) Portable programming
Precept 23: (Monday/Tuesday) The Shell Assignment: UNIX Low-Level I/O
Lecture 24: (Wednesday) Performance tuning
Precept 24: (Wednesday/Thursday) The Shell Assignment: UNIX Inter-Process Communication
(Monday - Sunday) Reading Period
(Monday) Reading Period
(Tuesday) Dean's Date
(Tuesday) Shell Assignment Due
(Tuesday) Exam Preparation
(Thursday) Final Examinations: Room 104, 1:30-3:30pm. (Old exams and answer sheets)