A Program introduced some classic paradigms for the design of algorithms and illustrated them with examples of recurring basic problems concerning numbers, strings, set systems, and graphs. The course was theoretical, but the algorithmic principles learned will be broadly useful for future programming needs.