Teaching Statement for Fred Bower
What I Teach
I categorize my teaching into four general categories: basics, advanced topics, professional skills, and practical application. I structure each course as a standalone entity but do provide a consistent experience to students taking multiple courses from me. I achieve this through the use of foreshadowing and back-reference between the different courses.
Basics include the foundational topics that may be found in any accredited computer science curriculum. Examples include object-oriented design, data structures, computer architecture, operating systems, algorithms, theory of computation, compilers, and languages. While my background in computer architecture predisposes me to teaching courses on architecture and systems, I enjoy revisiting the other areas of computer science via their instruction to undergraduates.
Advanced topics are courses that I consider for advanced undergraduate electives or graduate students on a research track in computer architecture or systems. These generally rely heavily upon the research literature to construct a current survey of what is happening at the frontier of the field. I like to weave seminal works into the course to provide reference points for students to evaluate present work against. I see this sort of teaching as an excellent way to invigorate the research community as well as a sanity test to check the vitality of the research that the community is working on. To illustrate how I approach an advanced course, attached is both a sample syllabus as well as a sample lesson I use to teach research I presented at MICRO '05.
One of the unique perspectives that I bring to a curriculum is my background in industry. Having spent over a decade working in the development of computer hardware, I have an appreciation for the intersection of research and development in a commercial setting. The teaching of this experience is part of every course I offer (as evidenced by the heavy project component of the sample courses above), but I also like to offer a focused set of coursework around development. I have found this useful, in different ways, to both graduate and undergraduate populations. A sample project showing students early stages of development of a shippable software product is attached to demonstrate how my industry experience informs my teaching.
Finally, in complement to the industry exprerience I teach, I like to include a strong thread of practicality, where appropriate, in my coursework. This provides the necessary grounding and context to allow students to construct the connections they need to become sufficient engineers and researchers after they complete my courses.
How I Teach, How My Students Learn
My teaching philosophy is informed by my own experiences as a student and by my observation of others whose teaching I deem effective. This centers on the tenet that students and teacher must collaborate in the learning process in order for true learning to happen. The best learning is achieved when students are enfranchised in the process and are active in class session. Interactivity is spurred by use of specific techniques. Techniques must be tied to the content, but to give a general idea of how I achieve student interaction in class, I'll enumerate two specific techniques here.
The first technique I use in conjunction with an assigned reading (generally the reading of a recent research paper from the literature). In this technique, I arbitrarily group students in groups of two to four. I then give two interpretations of a point of the paper and have the students discuss the merits of each for a short period of time. At the end of that period, the class comes together and each small group reports their general consensus findings. This often leads to very constructive discussion. This sort of activity enages students in the higher order thinking set of activities in Bloom's Cognitive Taxonomy (evaluation, synthesis, and analysis). The use of small groups provides a seed ground for ideas to form and be validated on a peer basis. This then feeds the larger discussion, allowing me to evaluate comprehension and ability to apply knowledge learned.
The second technique I use in introductory courses to gauge student comprehension. In essence, I perform short polls throughout the presentation of a topic to evaluate whether I have effectively conveyed the concept to the students. The method of polling varies, dependent upon classroom infrastrucure. I prefer use of a personal response system (PRS) because of the anonymity and rapid aggregation of results into a live presentation. In situations where PRS is not available, I will use simpler methods, such as a show of hands or one-minute writing exercises in which I ask students to provide a summary of a topic or an analogy to demonstrate that comprehension has been achieved and that the student can further apply the knowledge to another domain.
Relating to Students, My Role as Teacher
As I have previously mentioned, I see my role as a facilitator, not as a central authority figure. It is incumbent upon me to ensure that the classroom is a conducive environment to learning. After that, my role is as mentor and coach to the learning experience. I think of myself as the personal trainer for each of my students. Class is our group training time and office hours serve as one-on-one or small-group training sessions.
My longer-than-average tenure as a student has endowed me with a unique perspective on the student experience. I draw upon this extended student experience in developing the right approach to a given group of students.
Facilitating Learning
I rely heavily upon technology to enhance the learning process. I eschew technology for technology's sake, but do see great value in a computer science curriculum that is taught with technology as an active component.