About CS 51

As you can see, I've memorized this utterly useless fact long enough to pass a test question. I now intend to forget it forever. You've taught me nothing except how to cynically manipulate the system. Congratulations.

In CS 51, we won't ask you to memorize any utterly useless facts (or even thoroughly useful ones!).
We're after something bigger.

All your life you've been faced with computational problems, from sharing toys with friends to the programming assignment you just handed in. But what does it mean to compute something? What makes some problems harder than others? Are there questions even the world's most powerful computer can't answer?

We'll answer these questions and, in the process, explore important concepts such as Turing machines, languages, reductions, and NP-completeness.

It's a magical world, the world of theoretical computer science, and we hope you'll join us in exploring it!


the course staff