My primary teaching goals are to enable my students to become intellectuals (by which I mean people who love to play with ideas) and teachers (people who want to share ideas with others and can do so effectively). I am an idealist and an optimist, and believe that achieving those goals helps my students lead more fulfilling lives.
To help students become intellectuals, I want them to experience the joy and pleasure of discovering creative and original solutions to hard problems. Throughout nearly their entire education, students answer questions to which the teacher already knows the answer. This gives the demoralizing impression that learning is about acquiring knowledge so you can answer questions other people already can. I like to ask students to solve problems no one yet knows how to solve. Even in introductory courses, I strive to design problems that give students the feeling that they are discovering and creating something new and exciting. We are fortunate in computer science, that even beginning students can encounter and understand the most interesting and important open problems. For example, the first assignment in my introductory Computer Science course involves making photomosaics, and students learn that determining whether or not it is possible to produce an efficient program that generates an optimal, non-repeating photomosaic is an instance of the most famous open problem in computer science. One student wrote on a solution to a problem in my Cryptology class, "Personally, I felt invincible after solving this." I want all my students to solve problems that they initially think are impossible, and to feel invincible when they do.
To help students become teachers, I want students to realize that what they are learning is important and interesting, and that they have a duty to share it with others. For an assignment in my cryptography course, students are asked to produce an artifact that conveys a technical idea to the general public. The results greatly exceeded my expectations—two pairs of students published articles in the Cavalier Daily; another group produced a movie including cameo actors and a soundtrack that I showed to the class and expect to show to future classes; one group of students developed and taught a cryptography course for high school students.
I find Computer Science to be an intellectually deep and rewarding field, and do my best to convey that to my students. In addition, computing also has many important and exciting applications, and I believe it is valuable to use interesting applications to motivate students' understanding and interesting in the elegant and profound theories I want to cover. I love lecturing and find preparing for lectures to be one of the most rewarding activities I do. I believe all lectures should tell a story—people pay attention to and remember stories a lot better than we remember lists. Like good stories, I strive to present lectures to have a clear beginning (that introduces characters, the problems they need to solve, and why we should care about them), middle (that explains how they solved them), and end (that explains why it mattered, and builds towards what happens next). My teaching motto is something I learned from coaching youth soccer: let the game be the teacher. My role is to provide students with the tools they need, motivate them to care about a problem, inspire them to want to do great things, give them the confidence and courage to believe they can, and create the right conditions for them to play, discover and create on their own. When I manage to achieve this, I find that UVa students nearly always exceed my expectations.