Picture a room full of students hard at work on math problems. Some draw graphs on the chalkboard, testing out algorithms. Others shuffle complicated algebraic expressions, trying to simplify a summation. Still, others stare intently at a piece of paper, trying to find the one necessary final lemma to complete a proof or to understand a recent result.

The students are all working hard, but they are also having fun, as the air is ripe with the excitement of discovery. These are not college students, though they are studying at a college campus, and learning material that is not normally taught until the undergraduate or even the graduate level.

Rather, these are mostly high school students, spending the summer learning and enjoying themselves, studying theoretical computer science.

*But if this is computer science, where are all the computers?*

While it is true that computers and programming are a major part of modern computer science, the Program in Algorithmic and Combinatorial Thinking (PACT) – funded partially through the National Science Foundation and Rutgers University and hosted by Princeton University through the Center for Computational Intractability – goes beyond that. The program teaches students about the mathematics and algorithms fundamental to the computer science field. Many summer programs teach high school students programming and application development, but this five-week intensive course is one of very few with a theoretical and proof-based emphasis.

The only requirements to participate are high school algebra, the willingness to work hard and be challenged, and, above all, the desire to learn.