My teaching philosophy is that students learn best by doing. In all of my classes, I give programming assignments that are challenging, that will teach students the skills they need, and that will motivate students because the programs do interesting things. In my freshman class, CS 307, Foundations of Computer Science, students write a program that solves symbolic algebra problems, a program that writes a program to retrieve a "treasure" from a simulated cave, and a program that translates programs from the Scheme programming language to Java or C++. These are far more interesting and challenging programs than are found in the typical introductory course in Computer Sciences. In my class CS 375, Compilers, the students write a compiler for Pascal that produces real machine code that runs on hardware. Doing such a challenging project -- one of the major pieces of software one finds on a computer -- gives the students lasting confidence in their abilities.
Swiss mountain guides pride themselves on the fact that nobody has ever been killed while climbing a mountain with a Swiss Guide. In that same spirit, I try to teach in a way that will guide the students safely up the challenging assignments that I set as their goals. I prepare books of detailed lecture slides (also on the web) that students can use in class lectures and for study; I think these books are especially useful for the many foreign students in CS, who may have difficulty getting everything that is said in lectures. I often write educational programs that help students to get started on the assignments (since it is often easier to expand an example than to start from nothing), illustrate concepts from the lecture, or provide tutoring on basic concepts. One such program, the Scheme Tutor, has been used successfully in my freshman class for several years. The TMYCIN program, used for developing expert systems, is used in classes at UT and has been distributed to over 100 other sites. I have given my lecture slides to UT graduates who are taking jobs as faculty at other universities, and faculty at several universities in the US and Korea have requested permission to use my slides in their own courses.
My parents met while they were students at UT, I attended UT, and my children attended and are attending UT. When I first came to UT, for a summer math program after my junior year in high school, I fell in love with UT, and that has only deepened over the years. I feel a sense of ownership of this wonderful University that has been my home for two-thirds of my life. I have volunteered to serve on the UT Parking and Traffic Committee so that I could work to make the campus more bicycle-friendly (I usually ride my bike to campus four days per week). I make an effort to participate in student events such as the annual programming contest, picnics of the student ACM professional group, etc. I served last year on an ad hoc committee to set up the Turing Scholars, the CS undergraduate honors program. I taught an honors section of the freshman course CS 307 in fall 2001. Not many tenure-track faculty want to teach the lower-division undergraduate courses. I have volunteered to teach the freshman course for six years; I like the energy and enthusiasm of the freshmen who have come to UT for the first time, and I think that good instruction in their first semester can make a difference in their lives and their careers.