Statement of Teaching Philosophy

Bill Manaris, Ph.D.
May 22, 2002



This is an overview of my teaching philosophy.  It identifies my beliefs on what makes an effective educator in Computer Science (CS).  Of course, this set of beliefs reflects my personal path through learning and teaching.  Obviously there are other valid possibilities. 


I taught my first class in Computer Science (CS) in 1984.  Since then I have had a variety of teaching experiences and responsibilities.  These experiences have helped shape my views on makes an effective CS educator.  These views are obviously dynamic—they grow and adapt as I learn more about teaching and learning.  The following is a snapshot of these views as of May 22, 2002:


1.     I believe that computer scientists should be prepared for change.  Our field evolves very fast compared to other disciplines—it practically “redefines” itself every 5-10 years, in terms of development paradigms, programming languages, hardware, and software.  This has significant implications for both teachers and students. 


  1. Teachers should prepare their students for life-long learning.  This is difficult to do if teachers do not practice life-long learning themselves.  Therefore, CS educators should stay current, perhaps by attending conferences, reading professional journals, or contributing to the field’s evolution—through research, scholarship, and service.  A teacher is a scholar.

  2. Students should learn how to learn.  This cannot be taught directly.  It has to be acquired experientially, hopefully through exposure to a well-designed curriculum.  Students have to be self-motivated and hard-working.  Moreover, they must understand that when a teacher challenges, it is not for challenge’s sake, but to help them reach their potential.  A student is an apprentice scholar.

2.     CS educators have an ethical obligation to produce competent professionals—professionals with a strong technical foundation who can deal with the complexity of today’s software development.  Graduates need to know how to pay attention to detail and be able to deal with all aspects of software development—specification, design, implementation, testing, documentation, and maintenance.

3.     CS educators should aim to teach concepts as opposed to certain languages or tools.  Although students should be exposed to state-of-the-art tools, this should be done in the context of theoretical concepts.  Tools become obsolete within a few years, but concepts last a lifetime.  Over time, I have used this principle to expose students to various tools, including Java, C++, Tcl/tk, Visual Basic, LISP, Lex, Yacc, Polka/Samba, HTML, and CGI-programming. 

4.     Teachers need to be sensitive to the background and preparation of their students.  This can be especially challenging in introductory courses where students have varying degrees of academic preparation.  Retention of underrepresented students—ethnic minorities and women—is important, as our society is diverse and multicultural.  In many cases, such students need to be supported and challenged differently from the average student.  It is very rewarding to see such students flourish and in many cases outperform mainstream students.

5.     CS educators need to invest in the power of collaborative learning.  This should be done carefully and progressively, as students must develop their own skills and be protected from the “leader-follower” syndrome.  Otherwise, weaker students tend to follow the ideas of one or two stronger students without really thinking (and learning) for themselves.  I assign in-class collaborative exercises in all my courses.  I ask students to work in groups of two or three towards a common goal, such as tracing a challenging algorithm, or commenting on a reading assignment.  I find that this helps students master new concepts better than if they worked on their own.  Collaborative learning improves retention of underrepresented students since such experiences break down communication barriers and introduce mutual respect and camaraderie.  Starting in the third programming course (Data Structures and Algorithms), I like to introduce team projects to expose students to group dynamics and help improve communication and people skills.

6.     Educators need to invest in positive reinforcement whenever possible.  One example is the policy I use for late assignments.  Students are awarded four "late" days for the whole semester for their programming assignments. Once they use up these days, no late assignments are accepted. However, incomplete solutions that compile and are submitted on time receive partial credit.  At the end of the semester, students that have not used any of their late days earn 2.5 bonus points towards their course grade. 

7.     Finally, CS educators should aim to incorporate research results into the classroom through lecture, assignments, special project courses, and curriculum development.  My research interests lie in the intersection between Artificial Intelligence and Human-Computer Interaction.  In the three-course intro sequence, I have exposed students to assignments on trigram statistics for authorship attribution, spelling checkers, and text formatters.  In the Artificial Intelligence course, I have exposed students to the development of natural language user interfaces.  My interest in user interface design contributed to the development of a senior/graduate-level course in Human-Computer Interaction.  In this course, I have exposed students to research in speech user interfaces.  Better students tend to continue their work through special project courses.  Such projects usually result in research publications, which may provide new content to incorporate into the classroom—thus forming a feedback loop. 


In closing, I maintain high standards for my students.  I try to challenge them in ways that benefit and provide a sense of accomplishment.  It takes very little time to develop trivial or impossible assignments—good assignments require creativity, sensitivity to student capabilities, and observance of learning objectives as identified in the course syllabus. 


I make myself available on campus during office hours and beyond, as well as via email communication.  I provide needed support to all students, especially the ones that demonstrate an honest effort towards an objective.  Sometimes I use the Socratic approach—I ask questions to help students navigate through the knowledge they already have accumulated.  This helps them make needed connections—the “Aha!” experience.  Students eventually realize how to do this themselves, thus becoming more empowered learners.


I would like to hope that my teaching efforts have helped and continue to help produce competent computer scientists—individuals who are valuable contributors to the profession and society.