Teaching Computer Science

"The hardest part of building a software system is deciding precisely what to build." Fredrick Brooks



My Teaching Philosophy

In my M.Sc. and Ph.D. in computer science graduate studies, I have benefited from the academic environment of the Concordia University, which has given me a comprehensive exposure to the core areas of computer science and a strong conceptual understanding of the same. As a result of taking courses with several excellent teachers and due to my collaboration with science-devoted researchers from both Concordia University and University College Dublin, I came to see that computer science is profoundly interesting and valuable for the mankind in its own right.

During the years of my studies at Concordia University, I have been assigned as a teaching assistant and a teaching fellow to a variety of courses from computer science. During the years of my teaching, I have strived to be focused on improving my teaching skills by learning from both my professors and my students. All of this helped me to develop my philosophy of teaching as inspired by my understanding of the nature of computer science. Besides being a body of knowledge, computer science is a set of skills and a way of thinking that students best learn by solving problems and asking questions. As a result, I feel that lectures should be able to explain high-level concepts to help students grasp the needed foundation and low-level details should be explained and illuminated through assignments. Because assigned problems are crucial to education, instructors should take care to create and select problems that achieve the goals of the lesson. Furthermore, instructors should provide students with the opportunity to discuss assignments with them. Since students rely heavily on problem sets for learning, an instructor has the responsibility of providing quality feedback on graded assignments.

I believe that teaching style and presentation have a great influence upon student motivation and ability to absorb the content of course material. I have found that students become more actively engaged when course material is presented interactively – this is particularly true in graduate-level courses and seminars. Here, a relative aspect of my teaching style is that I recognize that on many occasions there is no single correct answer to a particular problem. There have been numerous times in my classroom, when my response to a student question is “It depends!”. We then discuss, of course, what criteria should be used to select the best solution from the alternatives. I believe that it’s important to convey to students that the logical evaluation process is critical to developing good problem-solving skills.

To summarize, teaching computer science is challenging, because this is an area where underlying theory and applications are not always tightly coupled and both are rapidly advancing. Hence, my goal is to teach students how to discover answers and learn on their own, thus giving them capabilities to become professionals in computer science.


Last modified on November 24, 2009