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

Students


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

Last Lecture's Notes and Programs


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)

Project-Demo Signup

Project Grading

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