Teaching Statement
I love helping other people learn. Whether I am relating the traveling salesperson problem to students, presenting research at a conference, or explaining the rules of a new board game to friends, it is inspiring to watching their faces light up when they see how a new concept works. I enjoy distilling complex concepts into their salient points and finding just the right analogy to connect for each student.

I find I am most effective as a teacher when sharing my enthusiasm for computer science. Computer science brings the principles of critical thinking and ingenuity to the forefront, as there is rarely one best solution to a given problem. It allows for the direct exploration of many other fields, such as cellular processes in biology, friendship and interaction in social networks, or even logical frameworks for metaphysics in philosophy. By teaching computer science at a liberal arts institution, I hope to inspire the next generation of scholars and teachers.

Teaching Experience
My first experiences of teaching were as an undergraduate at Kenyon College. Before my senior year, I participated in an independent study in mathematics through Kenyon's Summer Science Scholar program. My advisor, Professor Stephen Slack, showed me that one of the best ways to learn is to teach. Each week he asked me to study the material and then lecture to him. At first I struggled through on the chalkboard, but then with his guidance I learned how to find and present the key concepts hidden underneath the text. His lessons were augmented throughout my senior year, from critiquing a videotape of myself giving a lecture for an epistemology seminar to giving my first slide-based presentation for my mathematics senior exercise. These experiences encouraged me to pursue teaching as a career and enroll in graduate school for computer science at the University of Wisconsin-Madison.

At UW-Madison, my teaching assignments have been varied and rewarding. I began as a discussion leader for two sections of CS 132 - Introduction to Computers, helping non-technical students learn to use Excel, Access, Word and PowerPoint. While preparing handouts and working examples for my students, I learned the value of clarity and simplicity when explaining computer science to an outside audience. I found I enjoyed answering questions during office hours and providing guidance for these students as they navigated through unfamiliar territory.

CS 302 - Introduction to Programming in Java presented my next challenges as a teacher. Over two semesters I taught four stand-alone sections and lead one discussion section. Most of my students were freshmen, wide-eyed and ready to learn. While they stepped through loops and sentinels, I learned about how to plan exciting lectures and reinforce key concepts. I encouraged outside exploration through examples such as DNA string matching, fractal iteration and artificial intelligence. My students consistently rated me with highest marks in both enthusiasm and overall recommendation, and in 2000 I was awarded the Outstanding Graduate Student Instructor in the UW CS Department. I have been very proud to see many of my students continue their coursework in other computer science courses and for some to eventually graduate as CS majors.

A majority of my teaching experience was with CS 540 - Introduction to Artificial Intelligence, where I was a teaching assistant for three semesters and was the sole instructor for the summer session in 2001. Working with Professors Jude Shavlik, Jim Gast and Gerson Zaverucha, I developed homeworks, lead discussion sections and gave guest lectures when the professor was unavailable. As instructor in the summer, I organized the syllabus, created exams and lectured five times a week for eight weeks. The junior and senior level undergraduate students inspired me, as they had conquered the basics and were ready for more. Through holding many office hours, I gained a deeper understanding of the material than before, as each student had different strengths and weaknesses which needed to be addressed.

Teaching Philosophy
The crux of my teaching philosophy is the use of analogies to make connections between computer science algorithms and everyday experiences. By relating stacks and vectors to a deck of cards, databases to phonebooks, and search algorithms to navigating through a maze, I try to bring home the sometimes esoteric concepts involved in storing and manipulating information. I also explain the derivation of terms such as concatenation or sentinel, so students can see these words in contexts other than computer science. This is approach is complemented by memorizing language constructs and working through examples, so students have the necessary tools to begin making their own analogies.

I believe the classroom should have a collaborative atmosphere between instructors and students. When teaching, I prefer to write on the chalkboard, and reserve PowerPoint slides for more intricate demonstrations. This creates a dynamic atmosphere where the students become actively involved in the lecture, as their questions and participation will influence the direction of my examples and focus. I also encourage students to take their own notes, so as to engage them in learning through personally visualizing, discussing and recording each concept. In class, I have students work in groups with their peers on small practice problems. This builds on the collaborative atmosphere and tests students understanding of the material through explaining it to each other. Student feedback should be incorporated as much as possible into daily lecture, so I make a point of starting each semester with a survey of my students' interests and background, and I following up on this feedback with midterm evaluations to make adjustments as needed.

A typical homework for my courses will include a section on working through a concept by hand, useful for understand the mechanics of an algorithm, followed by a programming section to put the algorithm into practice. For advanced classes, I like to incorporate an independent project, which allows students to delve into related topics of their interest and then present their findings to the rest of the class. I feel exams should rely less on memorization and more on application of the concepts to new problem settings to test their ability to transfer and abstract the course material.