David Wright @ NC State

My Teaching Goals

To say "My goal is to be the best teacher I can" is trite and nearly meaningless without acknowledging what I need to learn and apply in order to reach that goal. In this section, I identify five goals that relate directly to weaknesses I know exist in my teaching toolkit. They are presented in no particular order, although all of them are interrelated, and progress towards any one of these goals will result in progress towards the others. I also discuss my strategies for achieving these goals.

Teaching Goal 1. To improve my ability to adapt my teaching style(s) to suit particular groups of students.

During my professional experience as a service technician (before returning to college), I developed the ability to relate to people in a variety of different situations. As a teaching assistant, I have been able to use that ability to relate to individual students to help them with their problems, and to small groups of students in study sessions. As the size of the group grows, I can continue to focus on a handful of students and relate my teaching to them, but this often leaves many of the other students at a disadvantage if they do not learn in the same way(s) as the students I focus on.

Part of this problem is simply my lack of experience. I know I am a much better teacher now than when I first taught a class on my own. What I have not been doing until recently is keeping a record of what teaching methods I have tried and the results of those attempts. I believe this is a critical part of teaching that I did not fully understand until becoming involved in the PtP and CoAT programs, and taking the "Teaching in College" course. Thinking back to the classes I have taken in the past, I wonder how many of my teachers and professors have also learned this lesson. Unfortunately, I think many of them just keep doing what they always have, whether it works or not.

Teaching Goal 2. To improve my understanding and ability to use problem-based teaching and learning as an alternative to traditional lecture-based instruction.

I was introduced to the idea of problem-based teaching and learning in the "Teaching in College" class I took, and I have tried to begin applying this method in my teaching of CSC495D. As we were told in class and in readings, this method of teaching is much more difficult than simply lecturing, particularly when teaching conceptual and/or theoretical material. The times that I have tried this method have been very successful in terms of students grasping the material I wanted them to learn, but constructing meaningful problems that specifically address a particular topic can be difficult.

In my experience as a student, this teaching style is somewhat foreign to computer science. While we (as a discipline) strive to teach practical skills and techniques, these are most frequently communicated via traditional lectures and reading assignments. Students are expected to apply what they "learn" from these lectures and readings in programming assignments that generally happen outside the classroom. The computer science education literature is remarkably lacking in examples of problem-based teaching in the college classroom. I can only assume that this is the result of the difficulty of developing lesson plans based on this method, along with the many other demands placed on college faculty in this discipline.

I have been actively studying the literature of higher education, looking for examples of problem-based teaching of topics similar or related to concepts that computer science students must learn and master. I have also begun keeping an informal journal of ideas for using this style of teaching with different topics as they occur to me. As my teaching opportunities and experience grow, I will at least have a collection of ideas that may be useful. In my limited experience so far, coming up with these ideas is often the most difficult part of building a lesson.

Teaching Goal 3. To build a "toolkit" of methods for developing critical thinking skills in my students, regardless of the course material.

Critical thinking is a necessary skill for computer scientists and software engineers. Many of the students I have worked with in advanced undergraduate and graduate courses lack this ability (or at least use it only as a last resort), depending instead on forcing rote solutions onto new problems. Based solely upon my own experiences as a student, I believe that many teachers do not recognize that their students are only learning how to apply textbook solutions to their problems rather than critically analyzing those problems and all of the possible solutions, then choosing the best solution for the particular problem.

My father, a professional engineer, taught me how to think critically from a young age. Whether I was building a tree house, solving a difficult homework problem, or working on my car, he pushed me to look at the situation from as many different perspectives as possible and to consider the implications of each possible solution. Most importantly, he made sure I could justify that what I was doing to solve a problem was indeed the best possible solution. This mindset has served me well, both in my prior career and as a student.

My challenge, as a teacher, is to find ways to inspire my students to develop the same skills, while also meeting curricular guidelines and objectives. Many of the problems that are best suited for developing these skills in students are also open-ended or have many possible solutions. Furthermore, the intellectual work that the student does in developing the solution is more important than the actual solution, because (as a teacher) I want to know \textit{how} the student arrived at that solution as evidence of their critical thinking ability. In CSC495D, students were required to document their decisions in a structured format. The resulting sequence of decisions would then be a mental trace of their thought processes as they solved the problem, including how they justified each decision they made. My goals for this structure were twofold: first, to "force" them to use a set of design principles as rationales for their decisions; and second, to help them understand for themselves how they were reasoning out the solutions to the problems. This structure also carried additional overhead that many of the students found excessive, and they resisted using it by only documenting trivial or very general decisions.

Two years ago I was introduced to the idea of "formally" (or perhaps better stated as "intentionally") teaching critical thinking skills in whatever discipline one is teaching. Constructing these kinds of problems is difficult, and grading them seems to be even harder, based on my personal experience. However, I feel the value to the students is much greater than more common approaches. I plan to explore the literature of higher education for new insights on teaching critical thinking skills, as well as engaging other teachers to share experiences and learn from them.

Teaching Goal 4. To identify, refine, and document new and innovative methods for teaching Computer Science topics, in particular those covered in introductory courses.

Computer Science programs often suffer significant attrition during the freshman and sophomore years, often because students do not get to work with any of the "fun" programs they are accustomed to using on their own computers. On the other hand, first-year students do not generally have the skills necessary to cope with the complexities of commercial software systems. To retain students at a higher rate, they must be kept interested while still learning the fundamental skills they will need for future course work. The challenge is to find some way of mitigating the complexity of games and other visual, animated software programs so that beginning students can "have fun" with their programs as they learn.

This is an active area of research in the Computer Science community, and one that I would like to contribute to in the future. I believe that my experience teaching and TAing introductory programming classes will help me in this respect, but I also need to build my familiarity with visual and animated software systems in order to identify elements of those systems that may be adapted for teaching basic concepts and skills.

I also believe that the first and second years of a college education are important to the development of critical thinking skills. These years are a time of change for students in many ways, and an opportune time to motivate them to develop new ways of thinking and problem solving. Problems and activities that require critical thinking skills and are also engaging and fun would meet the goal of teaching critical thinking while capturing and nurturing the imagination and creativity of young students. This should help retain more students through the difficult introductory courses and prepare them better for the challenges of more advanced material as they progress through the curriculum.

Teaching Goal 5. To become a scholar of teaching and learning, integrating my research with my teaching, and communicating the results to my peers and colleagues.

In many respects, this is my overarching goal. As I continue learning how to teach better, I must share my new knowledge with my peers though scholarly research publications, and other activities. I also realize that this kind of research does not always fit within the realm of Computer Science research as defined by many university Computer Science departments. This can present many difficulties in the promotion process, particularly at research-intensive institutions. This does not diminish the importance of this kind of research in this discipline. As computers and computer software become more important and ubiquitous in our world, it is imperative that Computer Science students be competently educated at the college level. Developing new and better ways to teach the subjects in this discipline will also help attract and retain new students.

I believe that it is my responsibility, as someone who is earning an advanced degree in this (or any other) discipline, to advance that discipline in any and every way I can. In short, I must be a leader. Furthermore, since I intend to pursue an academic career, I have a responsibility to be the best educator I can be, and to share my experiences and innovations in teaching with my colleagues just as I would share any other research results. Finally, because of how pervasive computing has become (a trend that has no end in sight), I have a moral and ethical responsibility to society to do my part to prepare future generations of computing professionals and educators to be leaders in the field.