Teaching Philosophy
Read my full Teaching Experience
My objective in the classroom is to encourage each student’s unique passions and goals to drive their learning process. To facilitate this, I use experiential learning, when applicable, and promote active learning by engaging students and involving them in a dialogue with me and their peers. Computer Science, having been shaped by change, is particularly well suited. Advancements in our field and various approaches to technology commercialization and impact on society and the environment are reshaping the current technological landscape.
In my experience as a software developer, I was exposed to many technologies and software engineering techniques. As a researcher, I have embraced interdisciplinary collaboration, where I learn from colleagues in different disciplines. I often use this knowledge in class as it gives me a unique opportunity to provide students with practical, relatable, and motivating examples of the course’s material. The rate of development and the availability of engineering tools is so high that today’s students come to the classroom with information from secondary sources. My job as an educator is to encourage self-guided learning and propel students forward in their interests and while providing the foundational knowledge for a successful career in computer science. A growing number of computer science graduates are interested in entrepreneurship or continue their studies in graduate school. It has long been recognized that executives with a technical background provide a perspective in the boardroom that is invaluable to their company’s growth. My experience over the last decade as the sole computer scientist at social service workshops (application of my research) gives me a unique perspective on continued learning. Whether students choose industry, research, public service, or entrepreneurship, I aim to encourage their love of learning.
Finding a teaching style that benefits everyone is difficult, so I rely on two key strategies. First, I begin each class by providing an agenda outlining what will be covered that day, letting students know they need to pay special attention if they feel uncomfortable with a particular topic. It also allows students to gauge how far along in the class we are, creating a mental marker which keeps the students oriented between topics. Second, I engage students to promote active learning through interaction, relevant examples, and open discussions that encourage participation from all students, especially those who do not participate or are struggling. Using the Socratic method, I often deconstruct a complex concept into multiple, more straightforward questions and ask students for solutions. I then continue asking the class until they reached the final answer together. This approach also encourages discussions when the wrong answer is given. I provide examples when their responses are incorrect so as not to discourage them. I then solicit answers from others. Students will try to help each other by joining in the conversation when they feel they can.
Adapting the content of a lecture to the student’s individual strengths is not simply a matter of adjusting the curriculum. A deep understanding of the content is required to know which parts can be modified and which cannot. Students sometimes focus less on sections of the curriculum they view as out of date or not relevant to their “planned” career path. To keep students engaged, I strive to make course material and content relevant while still teaching foundational knowledge. For example, I taught two semesters of CPS125 “Digital Computation and Programming” in the Computer Science department at Toronto Metropolitan University (TMU, formerly Ryerson University), a fundamentals course covering the basics of computer architecture and programming using the C programming language. Many students assumed that in their careers, they would only work with higher-level languages and mathematical software like MATLAB and avoid low-level calculations, such as binary-to-decimal conversion. To motivate students, I explained that C is used to write many of the compilers and libraries they use, and its performance benefits are utilized by many of the computer games they enjoy. When introducing the C “struct” keyword, I briefly discussed object-oriented design to help them understand why we might want to group variables. I was careful to avoid more in-depth object-oriented topics not required by the course, focusing instead on content that helped them better grasp the necessary material.
During one semester teaching MIE1513 “Decision Support Systems” in the Mechanical and Industrial Engineering (MIE) Department at the University of Toronto, symbolic logic was part of the curriculum. Prolog, a declarative language, was used to introduce symbolic logic, but students did not commonly use or recognize it. However, declarative query languages like SQL and the data portal Wikipedia are very widely used. In one assignment, I introduced students to DBpedia, a data portal for Wikipedia that uses the RDF query language SPARQL. I demonstrated how query languages like SQL are also declarative and introduced them to the SPARQL query language, which has similar reasoning capabilities to Prolog. This comparison helped students understand Prolog more easily by relating it to the more familiar SQL.
As an educator, I am determined that each student leaves each class with the tools and the motivation to dive deeper into topics they find especially interesting. I rate my successes on how well students perform in my courses, the types of questions they ask, and their reviews. My reviews often mention that I have adjusted my teaching style and content for the students. This was especially true when I was the teaching assistant for three semesters for MIE350 “Design and Analysis of Information Systems” in the MIE department. I assured the students I was there to help them with whatever they needed and answered. My reviews were also positive during three semesters of teaching CXCP685 “PHP/MySQL Web Design Fundamentals” at TMU. I successfully adjusted my teaching style to a heterogeneous group of students ranging in age, career background, and abilities.
To engage students, I will use the most appropriate teaching aids and methodologies available to me. For specific programming topics in CPS125 lectures and MIE350 tutorials, instead of slides, it was often beneficial to write code live in front of the students and discuss the appropriate choices, such as when to use different loop constructs. This was not appropriate for CXCP685 due to the heterogeneous makeup of the class. In MIE350, I used the flipped classroom approach when teaching students about the model-view-controller (MVC) paradigm for web applications. I asked them to review one or more videos online from several preselected tutorials on the topic, focusing on those that used the programming language and database management system they were most familiar with. In the lab, we reviewed the main concepts in language-independent ways, focusing on the MVC methodology and information flow. In MIE350, during group projects, students would assign tasks to themselves that utilized their current abilities. Those with software experience would write code; others would write requirement documents and present slides. Relying on experiential learning, I encouraged students to take on the roles they are comfortable with initially and to meet them where they are in their education. I would then switch their roles to transition to topics they were less comfortable with but were taught the week before. This allows the students to apply what they learn immediately.
When covering binary conversion and algebra on real numbers in CPS125, I found an online source that explained the required calculation better than the standard slides I was provided by the course coordinator. This allowed the students to review the calculations after class and practice using the provided examples and online tools. I found that the students reacted better to the external content and were more engaged when verifying my calculations on the board during class.
The opportunity to share knowledge, exchange ideas, and provide direction with students has been incredibly rewarding. These experiences taught me how to keep my class’s attention and curiosity at the level required for active learning.