My Philosophy of Teaching

Every moment that I am standing in a classroom and pointing at the whiteboard, writing new lecture notes and exams, or sitting with an individual in my office, I try to keep four questions in mind:

·         “Am I being clear and concise?”

·         “Are we being critical?”

·         “Am I engaging the students in problem solving?”

·         “Is my approach working?”


These questions help me focus on simultaneously increasing a student’s knowledge of a subject and his skills as a learner. I will explain each in turn.

“Am I being clear and concise?”

I find that students spend considerable effort establishing a mental picture, or mental model, of how the parts of a system (such as a computer program) interact. These mental models serve as simplified causal models that help the student design new systems and predict the behavior of those systems. My role as a teacher is to monitor how students are building mental models, by asking them questions about a computer program’s behavior in class and on exams, and to help them repair misunderstandings. Speaking and writing clearly and concisely is essential. I often use diagrams and demonstrations to expose an artifact’s essential causal mechanisms. For example, I typically explain an algorithm by showing a flowchart representing its behavior and executing several demonstrations of the algorithm with small datasets. Often students adopt my diagrams and demonstrations, or create their own; this serves as feedback that the students are benefiting from this approach. When I sense that students do not sufficiently understand a certain causal process, I may reteach that material from a new “angle.” There is not one true mental model for any concept; I believe teachers should remain flexible about how to explain those concepts.

“Are we being critical?”

Teachers are not only responsible for conveying information; they are also responsible for conveying a critical disposition to that information. In both cases, students need to understand how the material I present to them may be just one appropriate solution to a problem, and evaluate whether other approaches are also appropriate. They also need to be able to apply this critical analysis in situations outside the classroom. I engage in critical analysis and encourage my students to do the same with several techniques. First, I ask them to evaluate two or three possible solutions. Some of these solutions may be less efficient, more complex, less popular in the computer science community, or a combination of these factors. Eventually we arrive at a best solution, which may differ from the one I had in mind at the beginning of the exercise. Second, I ask students with exam questions to take a critical stance to some of the “big ideas” of the class. For example, one of the “big ideas” of modern computer programming is a methodology called “object-oriented programming.” We learn about and practice object-oriented programming, but I feel that students should be able to evaluate in a critical fashion the claims made about this methodology and properly evaluate its alternatives. To this end, in the middle of the quarter I ask them to provide three reasons why object-oriented programming is beneficial. Later, in the final exam, I ask them to provide three drawbacks to object-oriented programming. The students are aware I will ask these two questions, and thus are able to prepare by thinking critically. Third, I try to position the material in a historical context. During lectures and throughout the written lecture notes, I inject context such as descriptions of who developed the technique that is under consideration, why it was developed, and what are its alternatives. The fact that technology takes the form it does is sometimes believed to be the result of a series of best decisions, and that there is no good alternative. Computer scientists should not adopt this attitude; instead, they should understand that if we made different decisions in the past then we might have technology that is more appropriate available to us today. With this historical context in mind, I believe a teacher can help students apply critical analysis in the future. In this way, they may become the driving forces behind new, appropriate technology.

“Am I engaging the students in problem solving?”

Computer science, like many other disciplines, was founded on and continues to grow by finding solutions to real problems. Due to the complex nature of computer hardware and programming techniques, solving problems with computers is rarely a simple process. Software developers must design and code solutions with a certain precision. Typically, we must teach students how to engage in this kind of problem solving. I help students learn how to program a computer by engaging them in live problem solving. Although I have a particular solution in mind, I often let the students drive the progression of a lecture. Rather than tell the students the solution I have in mind, I ask them, “What should we try first?” We try some approach, see how it fares, and proceed based on that feedback. If the task is too difficult to test all at once, we first work on a reduced problem. Often, we also develop a few test cases and write them on the blackboard. Each time we think about how to solve the problem, we consult these documented test cases. Solving problems engages students more than simply listening to a lecture. There is a certain joy experienced by solving a challenging problem. This interactive approach to teaching allows students feel that reward. I often see from their non-verbal expressions that they experience relief and pride when they have contributed to the solution.

“Is my approach working?”

Finally, I find that different students, and different groups of students, learn in different ways. Some students or groups seem to prefer high-level overviews, while others want to know exactly how every component contributes to the greater design. Some prefer many small practice problems while others enjoy working on larger projects. In addition, some students prefer working in pairs while others perform best on their own. I facilitate these differences among students and groups by remaining observant and flexible. During every individual consultation, I listen to the student’s concerns and devise the best way to address that student’s needs. This may involve drawing on a whiteboard (for diagrams and other visualizations), describing a concept with an analogy from their prior experiences, or writing code with them and testing real programs. Additionally, I allow students to resubmit homework assignments, work in groups on the more difficult tasks, and even allow students to expand the homework requirements to engage their individual abilities. I remain observant and flexible with groups of students by allowing them to vote on deadlines and teaching approaches (such as more or fewer demonstrations). For example, I learned from students that I presented a certain difficult topic too late in the semester, and have since moved it to the second week. Even when I teach the same course, each quarter is a new experience, a new opportunity for my own learning and growth. No two classes see entirely the same lecture notes, assignments, or exam questions; there is always room for improvement and new ideas. More often than not, students bring these new ideas and suggest improvements, and I believe it is important for any teacher to welcome and seek such feedback. Other educators are also great sources for feedback and new ideas. Workshops provided by the Professional and Academic Center for Excellence at Sam Houston State University (“Art of Teaching” and “Teaching and Learning Conference”) taught me how to recognize student misunderstanding and how to communicate clear objectives for a course or class session. For example, I specifically design exam questions to test students’ mental models and not just memorization, and I have adopted the practice of providing the complete course schedule, lecture notes, homework assignments, and quiz samples to students from the first day of class, which students have found to be very valuable as they plan their efforts throughout the quarter. It is my philosophy that teaching is about both helping students grow as learners and increasing their knowledge about a subject. Continually asking these four questions keeps my focus on both of these aspects of teaching.