Princeton University
Computer Science Department

Computer Science 333
Advanced Programming Techniques

Robert Dondero

Spring 2021

General Information | Topics | Assignments | Project | Schedule | Policies

All times in the COS 333 course are expressed using "Princeton" time. That is, through 3/13 they are expressed using Eastern Standard Time, and from 3/14 onward they are expressed using Eastern Daylight Savings Time.

Course Description

The practice of programming. Emphasis is on the development of real programs, writing code but also assessing tradeoffs, choosing among design alternatives, debugging and testing, and improving performance. Issues include compatibility, robustness, and reliability, while meeting specifications. Students will have the opportunity to develop skills in these areas by working on their own code and in group projects.

Administrative Information


Most (and maybe all) of the lectures will be offered asynchronously. Audio lecture slide decks with accompanying handouts will be available to the Princeton community via the LectureServer application.

Some of the lectures may be offered synchronously at 3:00PM on Tuesdays or Thursdays at The synchronous lectures will be announced incrementally throughout the semester. Recordings of the synchronous lectures will be available to the Princeton community via the LectureServer application.

Lead Instructor:

Robert Dondero, Ph.D. :

Office hours: I'll have Zoom meeting office hours on Tuesdays and Thursdays from 3:00PM to 4:20PM — that's the normal lecture time slot — at When you join the Zoom meeting you will be placed in the waiting room along with other students who wish to see me. I will move you into the meeting in the order that you arrive. Feel free to request Zoom meetings with me outside of those regularly scheduled office hours. To do that, send me email so we can determine a mutually convenient time.

Teaching Assistants:

Willie Chang :

Office hours: Mondays from 4:00PM to 5:00PM and Saturdays from 4:00PM to 5:00PM at

Anat Kleiman :

Office hours: Mondays from 1:00PM to 3:00PM at

Satadal Sengupta :

Office hours: Wednesdays from 2:00PM to 3:00PM and Fridays from 2:00PM to 3:00PM at

Pi Songkuntham :

Office hours: Mondays from 12:00noon to 1:00PM and Fridays from 12:00noon to 1:00PM at

Undergraduate Coordinator:

Colleen Kenny : CS Building 210 : 609-258-1746 :


The prerequisites for COS 333 are successful completion of COS 217 and COS 226.

You must have completed COS 217 successfully before taking COS 333.

It is possible to take COS 226 at the same time as COS 333. However, doing so is a bad idea unless you are a very good programmer. Specifically, doing so is a bad idea unless you received at least a B+ grade in COS 217. If your COS 217 grade was less than B+ and you want to take COS 226 and COS 333 concurrently, then discuss the matter with the COS 333 lead instructor during the first week of the semester.


The course uses these textbooks:

Required Textbook

That book is available in the Princeton University bookstore and is on reserve in the Engineering Library.

Recommended Textbooks

All of those books are available through the Princeton Library as e-books, but some of the ebooks are not the most recent editions.

Academic Regulations

Please read the Policies, especially those regarding collaboration and plagiarism.

This page was written by Robert M. Dondero, Jr.