Teaching Statement

 Michael T. Cox
Computer Science Department
Carnegie Mellon University
Pittsburgh, PA 15213-3891


 


I am significantly committed to teaching both undergraduate and graduate computer science courses.  I have been fortunate to have had teaching assistantships under extremely qualified and effective educators at Georgia Tech that gave me positive experiences with students.  I have been a teaching assistant for a sophomore-level data-structures course, for a junior-level introduction to artificial intelligence, and I was assistant for graduate-level artificial intelligence courses.  My contact with students as laboratory assistant and my experience in creating and presenting tutorials for AI programming techniques have both been extremely rewarding. In these courses, and along with my advisor's machine learning course, I have often substituted for faculty during paper discussions and lectures.   I also gained valuable lessons designing and teaching introductory programming courses while working for NL Industries, Inc. Houston TX.

Course Qualifications

I am qualified to teach basic classes throughout the entire introductory suite of undergraduate computer science classes.  I am able to teach introductory programming, data structures, functional programming, computer languages, software engineering and design, theoretical computer science, data base theory and application, human factors / human-computer interfaces, and all areas of artificial intelligence.  With respect to artificial intelligence, I am especially qualified to teach a number of courses, including machine learning, planning, case-based reasoning, expert systems, connectionist modeling, and introductory models of human information-processing.  At the graduate level, I am qualified to teach most courses in artificial intelligence, including machine learning, planning, case-based reasoning, knowledge representation, models of human information-processing and advanced LISP programming techniques.  I can also teach graduate courses in human factors/ human-computer interfaces.  Most importantly, however, I truly enjoy teaching all of these subjects.

Teaching Philosophy

I am comfortable speaking in public and in front of a class.  Because effectiveness of teaching is a function of both student motivation and the content of the presented material, I believe that teaching style and presentation is often as important as what is taught.  Before returning to college, I spent a few years in sales and marketing.  This experience gave me considerable insight into group dynamics and public presentation, not easily taught or learned by classroom experience.  Without hav ing to cast my presentations as a hard sales  pitch, however, I have found students both stimulated and more engaged when the material is presented interactively and with a human side as opposed to more traditional lecture styles.

The content of the material, however, is not an insignificant consideration.  I believe that the needs of a quality computer-science education require teachers to transcend simple instruction of programming techniques.  The undergraduate and graduate computer science education must integrate the relevance of theoretical considerations with software development philosophies.  For example, the students should realize that given a particular data distribution, the choice of an efficient sort or search algorithm preempts any code optimizations performed on less efficient algorithms.  Moreover, software design principles emphasize that the creation of working code is only a small part of the total effort in non-trivial computational problems.  Equally important is to have proper analytical habits that result in structured, readable, maintainable, and especially usable code.

Furthermore, as I learned while a teaching assistant for an undergraduate course under Dr. Ashok Goel, computer programming can be thought of as an empirical design experiment. In such a case, the object of the design is a program which can meet particular design specifications. As an experiment, the student can attempt to apply a set of algorithms over various sets of data, and then evaluate the trade-offs of using each, given some performance criteria (which they themselves might have to create). The experiment thus involves analyzing the quantitative and qualitative performance over the distribution of data, then generalizing the results to form conclusions that determine the role of each algorithm under various conditions. Very small effort is needed to get a program to run; what is more important is the process a student goes through in thinking about the problem and the design trade-offs. Questions of interest include: What does the student learn from the experiments? What process did the student go through when evaluating various algorithms? Can the student write a reasonable report on the program's design, implementation, results, and interpretations? Since my research is in learning (and because I have taken a cognitive science perspective I am concerned with learning in both humans and machines), I have an appreciation for the metacognitive components of learning. Students must be able to assess their own understanding of, as well as assess the solution to, various problems with which they are confronted. These skills are hard to teach, but not unrealistically so.

My philosophy on graduate courses is similar. The central lessons to impart in class concern good problem-solving techniques, rather than specific programming languages or computational techniques in isolation. I also believe that real research questions (albeit, simplified and bound ones) should be integrated with study at the graduate level. Course projects are therefore important in most class structures. I also believe that it is valuable for the graduate student to stay abreast of the current literature in relevant areas. Selected papers are thus integral to augment standard textbook presentations. Finally, group discussion of issues and problems can be as valuable as any lecture. For a comprehensive graduate education, a student must be able to creatively and critically examine open problems, and most importantly, be able to pose novel problems that have a significant bearing on computational issues. I regard the encouragement and development of this particular skill as the primary role of both the graduate advisor and the undergraduate computer science instructor.

Prospective Research Seminars

In addition to a "current readings" in mixed-initiative planning seminar, the following three descriptions are examples of early research seminars I may offer to graduate students.

Learning Conceptual Categories by Man and Machine
This interdisciplinary graduate research-seminar examines theories of categorization grom the literatures of both machine learning and experimental psychology.  The course will compare and contrast theories that depend on similarity and syntax (data-driven approaches) with theories that depend on the learner's background knowledge and goals (theory-driven or goal-driven approaches).  Category formation will be examined from the perspective of both acquisition and performance under various artificial (laboratory) and natural (ecological) tasks.  Of immediate interest from the data-driven approach is the work of Martin & Billman; Cheeseman; McClelland; and Fisher in machine learning.  In psychology, the data-driven approach is typified by the work of Kahneman & Tversky; Nosofsky; Anderson & Matessa; and Barsalou (his most recent work).  Theory-driven methods include the machine learning systems of Mooney & Ourston;  Whitehall & Lu; Yoo & Fisher; and Schank; whereas, psychological models in this class include Murphy; Medin; Wisniewski; Ross; and Barsalou (his early work).  Interestingly, a number of models attempt to combine both data-driven and theory driven approaches.  for example, Pazzani; Shavlik & Towell; and Newell all report results from integrated models.  An ambitious deliverable for the course is to develop a computational theory of categorization constrained by known human data (with preliminary implementation design and data structures by the next to final week of the term), and a psychological experiment design that is falsifiable (with informal pilot tests run on human subjects at the end of the course).


Machine-Learning Evaluation
This research-seminar examines empirical and analytic approaches to evaluation in machine learning. Machine learning has already developed many methods for evaluating algorithms used in clearly defined problems such as classification and attribute prediction. However, in more ill-defined areas of intelligent performance, such as comprehension tasks, there are few available evaluation methods. For example, story understanding has been long studied, but evaluations of story understanding systems are usually tested by question-answering and paraphrase methods which have known flaws. An agent may be able to paraphrase or answer some questions about a story, yet at the same time, have a shallow understanding of the input. Additionally, comparative analyses using these evaluations are weak. One approach is to use the notion of explanatory coherence. Yet few methods exist to quantitatively measure differing explanations. One encouraging line of research to examine is that of Dr. Christopher Hale (University of Chicago & Armstrong Laboratories, Texas).


Case-Based Teaching Aids
This seminar looks at current and proposed systems that use a case-based (or related) methodologies to assist a human teacher or a human student. Some existing systems can be evaluated, such as the Sci-Ed Project and related systems associated with the EduTec Institute (Georgia Institute of Technology), the Ask Systems at the Institute of Learning Sciences (Northwestern University), and Sherlock II developed at the Learning Research Development Center (University of Pittsburgh). Additional light can be shed on the approaches by considering the large literature on the metacognitive components of learning in automated systems. Finally, we will examine the metacognitive model of learning contained in the Meta-AQUA system of Cox & Ram and the support it can provide to the interaction of problem solving and self-understanding. A central question is whether the model can reasonably predict students self-knowledge and problem-solving progress in a given learning task.