Dean F. Hougen Statement of Teaching Philosophy, Interests, Experience, and Goals


My teaching philosophy has one central theme -- professionalism. Students need to be taught, throughout their academic careers, how to be computer science professionals. For this reason, I believe in teaching students how to learn within the field of computer science, in teaching general concepts rather than particular facts, in promoting group activities with individual responsibilities, in making computer science an inclusive field, and in ensuring that students have a proper ethical grounding to be computer science professionals.

Because a person's formal education is only a starting point for learning in any given subject, it is important, particularly in the rapidly changing field of computer science, that students be given the tools for learning independently. These include the basic skills of logical reasoning, abstraction, and analogical thinking. Further, a firm grounding in the fundamentals of structure and analysis of programming, data structures and algorithms, discrete mathematics, and basic computing theory is needed. Specific tools, such as relational diagrams or methods of problem decomposition, should be explicitly taught and students should be encouraged to develop their own.

Specific facts, on the other hand, should not become the focus of a course. Such facts may be found quickly in reference works when they are needed and will be learned through repetition if they are used frequently. Instructors should seek to convey a broader understanding of the material. The use of open-book and open-note examinations helps insure that a course stays focused on concepts and methods. Nonetheless, students must demonstrate their ability to apply these concepts to particular situations, which is accomplished through homework, programming, and other assignments.

In both academia and industry, computer scientists must work with others to succeed, so it is important that students learn how to do this as a part of their regular computer science instruction. Team projects can play an important part in many courses from the most basic to the most advanced. Ideally, teamwork should be taught in a coordinated manner throughout the computer science curriculum -- a steady progression should be made from highly-structured team projects in beginning courses to independent associations in advanced classes.

Part of being a team member means being able to work with people who are different from oneself -- people of a different race, religion, culture, sex, and so on. Students need to learn this, through both example and instruction. However, making computer science an inclusive field means more than teaching students how to work together. It means taking active steps to seek out and bring in people who might not otherwise choose the field. It means building a support network of mentors and peers. It means teaching all students about the shared professionalism of the field. All of this is important for the success of individual students and for the growth and health of computer science.

Ethics are also important to individual success and the health of the field. The ethics of computer scientists is of growing importance to society as well, as computers and electronic communication become more prevalent, as machine intelligence increases, and as robots begin to move beyond factories and into the world at large. We cannot assume that students are provided with a sufficient ethical background to become computer science professionals by virtue of whatever liberal arts courses they happen to take. We need to ensure that they take ethics courses that are relevant and technically sound and we need to bring ethics into computer science classrooms.


Because of my convictions regarding the importance of teaching students how to learn in the area of computer science, I am interested in teaching core computer science courses. My education and teaching experience in core areas include discrete mathematics, programming languages, computing theory, operating systems, programming, and data structures.

Naturally, I am also interested in teaching courses related to my research and studies in artificial intelligence. These include courses in robotics, connectionism, machine learning, and knowledge-based systems. This interest extends to general courses in artificial intelligence, programming for artificial intelligence, and programming in languages traditionally used in artificial intelligence such as LISP and Prolog. I am also interested in teaching about the relationships between artificial intelligence, the other branches of computer science, and disciplines such as cognitive science, cognitive psychology, and linguistics. Further, I am interested in teaching about philosophy of mind and philosophy of science, particularly as they relate to artificial intelligence.

In teaching artificial intelligence, one aspect that is often neglected is the empirical nature of the field as a science. Instead, many courses focus on techniques for building intelligent machines. While this engineering aspect of artificial intelligence is important and should certainly be taught, it needs to be balanced with an education in how to engage in empirical scientific discovery as well.


In one way or another I have been teaching all of my life. From helping other students understand their homework assignments (often in courses I had never taken) to presenting material to groups of many kinds, instruction has come easily to me. I have participated extensively in youth and community groups, progressing from membership to leadership. My first non-trivial job as an undergraduate was to develop and teach a course in computer use for disadvantaged youth.

In my first experience teaching at the college level (while still a graduate student), I found great satisfaction putting elements of my teaching philosophy into practice as the instructor for the course "Structure of computer programming II" using the classic text Structure and Interpretation of Computer Programs (Abelson and Sussman with Sussman, MIT Press, 1985). The use of Scheme as an instructional language for computer science allowed the students to move past the details of syntax quickly and concentrate on the concepts of programming. I also found the types of diagrams used in the text to be useful tools for understanding the course material. Nonetheless, while serving as a teaching assistant in the quarter before I had the opportunity to teach the class myself, I observed that most students were drawing and interpreting these diagrams correctly when told to do so but were not making use of them when they actually engaged in programming. As the instructor, then, I spent additional time explaining the construction, interpretation, and uses of these diagrams. I was well rewarded when my students proved more able to write complex programs on their own by using these diagrams and one student even suggested a useful addition to one of the diagram types -- clear evidence that he had come to regard it as a tool of his own.

Since then I have been passionate teaching at the college level and have had many chances to do so. I have taught a dozen distinct courses and have had the chance to teach a few of these courses multiple times, allowing me to refine and improve my teaching of them. I have also developed new courses and have had the opportunity to introduce one of them (Software Fundamentals of Computer Science) into the curriculum -- a particularly rewarding and successful experience.


My short-term goals are to continue to refine and improve my teaching of core computer science courses and artificial intelligence courses and to contribute to the course selection available within the department. This includes introducing new courses in my research areas as well as a course on conducting research in computer science. This latter course is intended for undergraduates who are considering a graduate degree or an industry research position or graduate students beginning their programs. I will incorporate all aspects of my teaching philosophy as the instructor for each of these courses.

My long-term goals are to contribute to the overall computer science curriculum. I will work toward a coordinated approach to group learning throughout the curriculum. I will develop courses that stress the interdisciplinary nature of artificial intelligence. I have worked to bring discussion of ethics into my own classrooms and I will work with others in computer science and the humanities to ensure that ethics are part of the curriculum for all computer science students. I am working to build on the success of my graduate advisors in bringing more women and non-traditional students into computer science and artificial intelligence and will continue to do so. Finally, I will continue to acquire and disseminate knowledge about effective and responsible computer science instruction---reading, writing, and attending conferences are not just for artificial intelligence research.

The views and opinions expressed in this page are strictly those of the page author. The contents of this page have not been reviewed or approved by the University of Oklahoma.

Last update: 21 August 2001

© 2000-2001. All rights reserved.