Princeton CS 333 Advanced Programming Techniques, Spring '96
Direct general questions to
cs333@phoenix.Princeton.edu
Location
Computer Science Building, Room 105, MW 1:30-2:50
Description
CS 333 is a programming course that studies the construction of
real-world programs -- programs that robustly interact with their
users and with their computing environment.
The course is roughly organized into two sections: Unix programming
and
Java
programming. The first section covers Unix system calls,
shells, and tools; the second section introduces and uses
the distributed programming language
Java.
In the context of
Java,
we will study concurrency, graphics, user interfaces,
and network programming.
The course emphasizes large-scale programming
and program correctness. Throughout the term, guests will
augment the core material with lectures describing various software systems.
The course catalog's description can be found in
here.
People
-
Instructor
- Lorenz Huelsbergen
(lorenz@cs.princeton.edu)
(lorenz@research.att.com)
- Room: 407
- Phone: 258-4633 (908-582-4628)
- Office Hours: MW 3:00-4:00, and by appointment
-
TAs
- Drew Dean
(ddean@cs.princeton.edu)
- Room: 413
- Phone: 258-1797
- Office Hours: TuTh 2:00-3:00, and by appointment
- Jeff Korn
(jlk@cs.princeton.edu)
- Room: 217
- Phone: 258-0451
- Office Hours: M 4:00-5:00, and by appointment
-
Recommended Texts
- The C Programming Language by Kernighan and Ritchie, Prentice Hall,
ISBN 0-13-110362-8.
- Writing solid code : Microsoft's techniques for developing bug-free C programs by Maguire, Microsoft Press, ISBN 1-55615-551-4.
Tentative Syllabus
- Week I: INTRODUCTION
- Feb. 5: Course organization, overview
(notes)
- Feb. 7: Processes, files, file systems, make.
(notes,
programs)
- Week II: SHELLS
- Feb. 12: Shell programming.
(notes,
programs)
- Feb. 14: Programming a shell.
(notes,programs)
- Week III: TOOLS
- Feb. 19: grep, sed; A ksh/sed/grep Mailbot
(notes)
- Feb. 21: lex, yacc
(notes)
- Week IV: SHELL GRAPHICS
- Feb. 26: Tcl/Tk
(notes)
- Feb. 28: Visual Basic
(notes)
- Week V: JAVA
- Mar. 4: Java, top down (notes);
Tksh
- Mar. 6: Java, bottom up; Unix timers
(notes)
- Week VI: MIDTERM WEEK
- Mar. 11: Guest Lecture, Olin Shivers
- Mar. 13: In-class project proposals
- Week VII: SPRING BREAK
- Week VIII: ADVANCED JAVA
- Mar. 25: Java Class Libraries
(notes)
- Mar. 27: Guest Lecture, Gene Nelson
- Week IX: CONCURRENCY
- Apr. 1: Threads, synchronization
(notes)
- Apr. 3: Guest Lecture, John Reppy
- Week X: GRAPHICS
- Apr. 8: Java graphics
(notes)
- Apr. 10: Guest Lecture, Dave MacQueen
- Week XI: USER INTERFACES
- Apr. 15: Java interaction
(notes)
- Apr. 17: Guest Lecture, Guy Jacobson
(notes)
- Week XII: NETWORK PROGRAMMING
- Apr. 22: Networked Java (Guest Lecture, Joann Ordille)
- Apr. 24: Guest Lecture, Jim Larus
- Week XIII: WHATEVER'S LEFT
- Apr. 29: profiling, debugging, gc
(notes); Java security (Drew Dean)
- May 1: TBA
- Week XIV: READING PERIOD
- Week XV: PROJECT DEMOS
Programming Assignments
Send questions regarding assignments to
cs333@phoenix.Princeton.edu
There are four programming assignments; each constitutes 10% of the final
grade. The first three assignments address Unix programming. The last
assignment addresses Java programming. All assignments will be made and
completed in the first half of the course, leaving the second half free
for the programming project.
Assignment I
Assignment II
Assignment III
Assignment IV
Programming Project
A substantial programming project comprises 60% of the course's final
grade. A project must be proposed, designed, implemented and documented
in teams of three to five students.
Project Timetable
- March 13, In-class proposals (15-20 minutes per team)
- April 8, Written project specifications due (5 page maximum)
- Week of April 22, Code reviews (30-45 minutes per team) Moved to the week of April 29
- Week of May 20 (Final's Week), Final Project Demos (30-45 minutes per team)
Resources
Java Links
Guest Lecturers
- David Dobkin
- Guy Jacobson
- Jim Larus
- Dave MacQueen
- Gene Nelson
- Joann Ordille
- John Reppy
- Olin Shivers
Tue Mar 14 12:27:13 EST 1995
lorenz@research.att.com