I gained valuable teaching experience by working as a teaching assistant for two Introduction to Computer Science courses at the University of Maryland, one of which was taught in C and the other in C++. My duties included preparing for and leading recitation sections, holding regularly scheduled office hours, and grading homework, quizzes, projects and exams. I was allowed a significant amount of freedom in my recitation sections. Although I was given guidance on what material needed to be covered for any given day, I was able to decide how I would present it to the students. I tried to provide clear and concise examples of all concepts and also used anecdotes and tips from my industry experience to enhance the lesson. I encouraged student participation and made them feel comfortable about asking any question, no matter how stupid they thought it might be. During office hours, I think the most important qualities are patience, understanding, and the ability to give encouragement. My emphasis was on leading a student to the correct answers, rather than giving answers to them. Sometimes, I had to first convince a student that they were capable of learning the material before I could proceed.
I look forward to teaching at both the undergraduate and graduate level. I would like to try my hand at developing a great Introduction to Artificial Intelligence course. I understand that the rich diversity of topics in AI makes it difficult to provide a quality overview in a semester (and can even be difficult in two semesters), but I find this challenge stimulating. I think the main purpose of such a course should be to help students learn if they are interested in a particular subfield of AI and provide them with a basic toolbox if they choose to continue in the field. I would use programming projects to drive the concepts home, including simple projects in Lisp and Prolog that were specifically chosen to demonstrate the strengths of these languages. In addition to presenting classic AI techniques and problems, I would like to introduce students to ideas from cutting edge research.
I would also be interested in teaching a course in Advanced Web Technologies, focusing on the application of XML standards and tools. Since many of the XML standards are difficult to read and are still evolving, this would initially be a graduate level course. However, given a few years and some time to develop it, it could probably be offered at the undergraduate level.
Other courses that I would like to teach include Knowledge Representation, Programming in Java, Introduction to Databases, and a seminar course on my current research interests, the Semantic Web. I would tailor my teaching methods to the level of students in the class. It is likely that my undergraduate courses would mostly consist of lectures, use a textbook, and have many small graded homework assignments and projects, while my graduate level courses would tend to focus on reading carefully selected research papers, student presentations, and possibly a large project.