Teaching Statement



“The story of computing is the story of humanity: this is a story of ambition, invention, creativity, vision, avarice, power, and serendipity, powered by a refusal to accept the limits of our bodies and our minds.”

— Grady Booch11 1 Grady Booch. “My Autobiography”. In: IEEE Software 32.5 (2015), pp. 13–15. doi: 10.1109/MS.2015.109.

As an educator, I strive to teach more than just the theoretical and technical skills of computing. My goal is to guide students toward a deep and enduring understanding beyond the classroom that enriches their lives, informs their view of humanity, and reveals the inherent beauty of computing as a discipline. I have developed my teaching skills through teaching and mentoring students from diverse backgrounds at three universities across two countries. I am capable of teaching introductory computing content as well as software engineering and more advanced programming courses. Through my teaching, I aim to provide an environment where students develop both the practical expertise and the broader insights necessary to excel as innovators and thought leaders in the field.

Teaching Philosophy

My teaching philosophy is informed by the knowledge and professional skills the students are expected to gain from learning, the history and trend of the area of the subject, the relevant principles of the subject. When preparing my class, I ask myself the following questions:
  • What is the core takeaway message that I want students to learn and appreciate?
  • How can I connect the theoretical knowledge, practical components, and industry applications to empower students effectively?
  • What kind of learning environment and resources can I provide to ensure a smooth learning experience for my students?

Curriculum design that provides students with a holistic understanding.

I firmly believe that the knowledge taught at the university should not be isolated from professional skills or industry applications, particularly in software engineering education. Instead, it should create a seamless integration where theoretical knowledge serves as guiding principles for practice, enabling students to develop technical skills while gaining a clear understanding of their relevance in real-world contexts.
To achieve this, I design curricula that emphasize the interplay between theory, implementation and application. This is relatively straightforward for courses closely tied to industry practices, such as design patterns, which are essentially the distilled best practices of the software industry. For example, in a game development course, where I taught game design patterns, I revisited software engineering and object-oriented design principles, demonstrating how each pattern reinforces these principles. This was followed by concrete examples from several popular games, showing how these patterns were utilized to solve specific design challenges.
For more theoretical and abstract content, bridging the gap between theory, implementation, and real-world applications can be more challenging. I approach this by situating abstract concepts within relatable scenarios or domains. For example, when teaching the concept of closure in discrete mathematics, I link it to functional dependencies in databases, illustrating how closure is critical for determining key attributes. Similarly, the concept of closure can also be situated in more realistic context of social networks or transportation systems. These examples not only make abstract concepts more intuitive and meaningful but also enhance the practicality of programming exercises by anchoring them in real-world contexts. Moreover, this approach helps students develop the understanding of how concrete scenarios are abstracted into theoretical models as well as how abstract concepts are applied back into practical cases.

Encouraging active learning through inspiration and engagement.

I consistently incorporate active learning strategies into my classes as they encourage students to take an active role in their education, moving beyond being passive recipients of an educator’s narrative. This approach enables a deeper comprehension of knowledge through critical thinking. To inspire this engagement, I design my classes around thought-provoking concepts and real-world scenarios for discussion and exploration.
For instance, when introducing the blockchain suitability evaluation framework during the blockchain architecture course, I began by prompting students to reflect on recent decisions they had made, such as purchasing an item, choosing a service, or how they decided to apply for their current university. I asked them to consider in a fine-grained manner how they determined that their choices met their needs, and then guided them to translate their decision-making process into an abstract model. Based on this activity, I encouraged students to evaluate the suitability of a potential use case of blockchain and collaboratively develop a suitability evaluation framework. Finally, I presented a sample framework for comparison, leading to a discussion about the differences between these frameworks and the insights they gained from the exercise.
Similarly, in a seminar about metamorphic testing, I encouraged students to think about how they identify something as being wrong in their daily lives, such as noticing higher expenses for their routine weekly shopping, or appliances in wrong conditions. By reflecting on these real-world examples, I guided them to understand the relevant concepts in software testing, such as test oracle and metamorphic relations, and how such patterns can be used to uncover errors.

Catering students of different backgrounds, levels of prior knowledge, and preferences.

As an educator in a primary international education destination, I recognize that students bring diverse backgrounds, varying levels of prior knowledge, and unique learning preferences. To address these differences, I design my teaching strategies and materials to be inclusive and adaptable, ensuring that every student has the opportunity to succeed.
Before class, I provide supplementary resources and exercises for students with limited prior knowledge to help them build a solid foundation and prevent them from feeling lost during lectures. For example, when teaching blockchain architecture, I was aware that some students lacked the understanding of distributed systems. To address this, I compiled a concise list of essential resources on key concepts and provided sample code for hands-on practice before class. Simultaneously, I offered advanced materials for students seeking to deepen their understanding, including detailed explanations of how industry implements generic protocols. For projects, I supplied starter code and walkthroughs for students with less programming experience, while providing optional advanced features for more experienced students to explore.
I also recognize the variety of learning styles among students. To accommodate these differences, I include video and interactive demonstrations for visual learners, as well as comprehensive textual notes for those who prefer to read. Additionally, I encourage students to share their own insights during tutorials and through online forums, promoting peer learning and collaboration.
Creating an inclusive and supportive learning environment is central to my teaching. I understand that students may have different life arrangements or personal circumstances, and I am always open to discussing alternative arrangements to ensure they can fully engage with the course and reach their potential.

Teaching Interests

I am passionate about teaching software engineering courses and guiding students to adopt best practices. My goal is to help students develop a software engineering mindset, enabling them to adapt to the evolving nature of engineering practices and form their own understanding and perspectives about computing.
Moreover, I am prepared to teach foundational computing courses, such as data structures and algorithms, and operating systems. I am also enthusiastic about teaching specialized programming courses, including blockchain development, web and mobile development, and game development. Through these courses, I aim to help students gain a deeper understanding of computing principles and equip them with transferable engineering practices that will support their future careers.

Living in the Age of AI as Educator

As an educator, I am well-aware of the development of AI technology and its implications on education. I believe it is essential for students to develop their understanding of AI, not only to know its capabilities but also to reflect on what makes us uniquely human. I encourage students to compare their own work with AI-generated outputs or debug their code with AI in certain circumstances, enabling them to learn from AI and identify the limitations of AI. I also guide students on when and why they should work independently without using AI for better learning outcome and avoiding over-reliance.
To adapt assessments to the age of AI, I design tasks that incorporate contextual requirements and encourage active exploration and problem-solving. These may better engage students and promote the fairness of assessment.

Recognition of the Owners of the Land

In Australia, I begin my classes by acknowledging the Traditional Owners of the land. I understand and respect that individuals may have their own perspectives and approaches toward reconciliation. I believe the Acknowledgement of Country is a meaningful way to honor the eduring presence of First Nations peoples, and raise awareness of Australia’s rich Indigenous heritage. For international students, it also offers a valuable opportunity to gain a deeper understanding of Australia’s history and culture.