My Teaching Philosophy
Introduction
My teaching philosophy is centered on empowering the students to learn actively and independently. I believe that engaging with the material through flipped learning, active learning, and guided self-assessment can transform your educational experience.
Flipped Learning
In a flipped classroom, traditional lectures are moved outside of class time, typically as videos or readings, so that class time can be dedicated to interactive activities. This approach allows you to:
- Preview and familiarize yourself with the material at your own pace.
- Engage in discussions, problem-solving, and hands-on activities during our class.
- Build a deeper understanding through collaboration and active participation.
Active Learning
Active learning emphasizes your engagement in the learning process rather than passively receiving information. The typical activities that we are going to do are:
- Group work and peer discussions.
- Pair programming.
- Problem-based learning.
- Interactive exercises and case studies.
By participating actively, you can reinforce your understanding, challenge your ideas, and apply concepts in meaningful ways.
Bloom’s Taxonomy
In education, Bloom’s taxonomy is widely recognized as a framework for classifying learning objectives based on cognitive complexity. It categorizes learning processes from basic recall of facts to higher-level skills like evaluation and creation. The traditional levels include:
Figure: Revised Bloom’s Taxonomy levels.
Bloom’s taxonomy has proven to be a robust framework for assessing learning in courses like Business Process Management (BPM), where cognitive processes and theoretical understanding are key. However, when it comes to programming courses—such as computer language, web programming, and the practical aspects of open-source software development—Bloom’s taxonomy sometimes falls short (Gomes and Mendes 2009). Its traditional levels don’t fully capture the practical, hands-on skills required for coding, debugging, and real-world application, necessitating a more nuanced, two-dimensional approach for these subjects.
The Matrix Taxonomy
Building on the ideas from Bloom’s taxonomy, the adapted Matrix Taxonomy is designed specifically for computer science (Fuller et al. 2007). This framework helps in evaluating both your conceptual understanding and practical programming skills. It does so by classifying tasks along two dimensions:
1. Interpreting (Cognitive Processes)
This dimension, inspired by Bloom’s taxonomy, assesses your understanding of programming concepts through different cognitive levels:
- Remember (R): Recognizing and recalling knowledge, such as syntax or basic programming concepts.
- Understand (U): Demonstrating comprehension by explaining program behavior or predicting output.
- Analyze (An): Breaking down and examining code, such as tracing execution or debugging.
- Evaluate (E): Judging the effectiveness of solutions, for instance by assessing time complexity or comparing different implementations.
2. Producing (Programming Activities)
This dimension evaluates the practical application of your programming skills. It describes the depth of engagement required to solve programming tasks:
- None (-): Conceptual understanding without direct code application (e.g., recognizing syntax or recalling definitions).
- Apply (Ap): Using programming constructs to solve subproblems, such as implementing, debugging, adapting, or translating code.
- Create (C): Designing, modeling, or optimizing full solutions (e.g., creating abstractions, refactoring code, or structuring comprehensive solutions).
Figure: A graphical presentation of the two dimensional adaptation of Bloom’s taxonomy.
How to use The Matrix Taxonomy
The matrix taxonomy is designed as a marking grid to help both me as instructor and you as a student understand the various learning paths in computer programming.
Different students take different “learning paths” in the matrix taxonomy as identified by a cluster analysis study (Lahtinen 2007).
The Tutorial Hell
The student attempts to apply the newly learned concept by imitating a ready-made example, often through trial and error, without deep understanding. This is also know as The tutorial hell, a state of perpetual learning, often marked by the consumption of one tutorial after another without putting acquired knowledge into practice.
Figure: A student trapped in trial and error approach (the tutorial hell).
The Theoretical Students
The theoretical students identified in may be placed in the cell “none/Evaluate” which means that they are able to read program code, analyze, and even evaluate it, but cannot yet design a solution or produce program code.
Figure: The pathway of the students who attain only theoretical competencies.
The Practical Students
These students are placed in the cell “Create/Understand” of the matrix. Being in that cell would indicate the ability to apply and synthesize without the ability to analyse or evaluate even their own program code.
Figure: The pathway of the students who attain only practical competencies.
The Professional Practitioners
A professional practitioner of a concept would be placed in the cell “Create/Evaluate”, which means that this student is able to perform at all the competency levels in the matrix. This can be reached through different paths as shown in the figure below.
Figure: The goal, “Create/Evaluate” or Higher Application, can be reached through different pathways.
Additionally, the taxonomy further breaks down programming-specific activities, such as:
- Recognize: Identify syntax, concepts, or terminology.
- Trace: Follow program execution step by step.
- Implement: Write code that meets given specifications.
- Debug: Detect and correct errors in code.
- Apply: Integrate a solution into a broader problem context.
- Analyze: Examine performance or correctness.
- Design: Create the overall structure of a solution.
- Model: Develop abstractions of a problem.
- Present: Explain a solution clearly.
- Refactor: Improve or optimize existing code.
- Relate: Connect a solution to broader concepts or contexts.
Figure: Mapping programming activities to the Matrix..
Using this two-dimensional taxonomy, programming assessments can be designed to address both theoretical understanding (Interpreting) and practical application (Producing). This approach not only guides my assessment of your work but also serves as a framework for your self-assessment, helping you identify areas of strength and those that may need improvement.
Conclusion
My teaching approach is designed to make learning an active, engaging, and self-directed process. By leveraging flipped learning, active learning, the revised Bloom’s taxonomy, and The Matrix Taxonomy, I aim to create an environment where you are not only well-prepared for exams but also equipped with the critical thinking and practical skills needed for your future careers.
I look forward to embarking on this educational journey with you. Let’s learn, engage, and produce great work together!