Teaching Python

We're two middle school teachers learning and teaching Python

Enhancing Python Learning with Bloom's Taxonomy: A Teacher's Perspective.

What in Bloom's name?

In the world of education, Bloom's Taxonomy is a household name, a foundational tool that helps teachers shape their lessons and assessments. But have you ever wondered how it truly applies to the dynamic journey of learning and teaching Python?

If you are an educator and haven’t encountered Bloom’s taxonomy at least once, it is a rare occurrence. While studying for an Educational Undergraduate Degree, most teachers complete assignments on Bloom’s taxonomy. The projects and activities help undergrads quickly recognize, identify, and develop lessons from one of many pyramid-shaped charts’ with colorful levels. I remember writing multiple essays and ensuring that my educational pedagogy showed that Bloom’s was at the heart of my lessons.

For those of you not in education, Bloom's taxonomy was a framework developed by Benjamin Bloom and his collaborators. It is simplistic in design and identifies six major categories: knowledge, comprehension, application, analysis, synthesis, and evaluation. These categories have been modified over time, but the principle remains the same. Bloom’s taxonomy is one of the most widely used systems that presents learning in a clearly defined set of learning processes. It ‘helps guide’ teachers in developing higher-order thinking skills in the curriculum and the classroom.

Bloom's Taxonomy Pyramid

Bloom’s taxonomy was designed as such so that teachers could identify these objectives on the continuum and move lessons and assessments from a straightforward process to a very complex concrete or abstract one.

When I first learned about Bloom’s taxonomy, Bloom layered the categories in a pyramid shape with the categories listed above one another, designating a hierarchy in learning throughout the pyramid. Its design implied that a student must first have a strong foundation of knowledge to comprehend a topic and comprehend before synthesizing. While this is true in some situations, many institutions have realized that application and creating can be a part of the learning or the knowledge gathering phase. These learning steps are not as separated or hierarchical as once drawn.

Over the years, Bloom's taxonomy has been revised, edited, turned into objectives, and redesigned to show suggestions from multi-layered activities, apps to use to meet Bloom’s taxonomy objectives, and some revisions show the goals as “grouped objectives.” Regardless of the modification, Bloom’s taxonomy is a useful tool to help a teacher and learner identify a learning trajectory.

Making Connections

During a recent course on the “Science of Learning,” I encountered a cognitive science misconception known as the “GI Joe fallacy.” At the end of every cartoon episode of GI Joe, a child would always end the episode with “Now I know!” and GI Joe would say, “And knowing is half the battle!” This statement, by GI Joe, is the heart of the fallacy phenomenon. Cognitive scientists explain that although knowledge of topics is desired or recommended during the learning process, there is always a varying degree of rational thought, comprehension, and emotional knowledge that can affect decision making. Scientists propose that regardless of whether we know something, we can sometimes skew decision-making and analytical thought.

Upon further study by psychologists, sometimes what we think we know isn't always perceived or seen as accurate, and that “knowing is half the battle” does not necessarily mean that you understand or that you know the truth.

That got me thinking, how do Bloom’s taxonomy and the GI Joe Fallacy apply to my learning Python or how I teach Python. It boils down to “Knowing isn’t half the battle, nor is gathering knowledge an indicator that we understand.”

Newer Versions of Bloom's

Thinking about and using Bloom’s taxonomy in Computer science and coding is a helpful tool for both the teacher and the learner. I found this rearranged version of Bloom’s taxonomy that shows the top three levels as equally important.

I have been teaching Python for 2.5 years. I feel reasonably confident that I know the Basics of Python. I can evaluate student code for errors and efficiency. For example, I can teach functions, explain the concepts to my students, teach them how to code simple functions, put functions into more complex code, and explain to kids how to put functions into their code. I can even follow along with complex code. But one time, after coding and teaching functions for two years, I happened upon a simple but necessary explanation of functions, and something happened, a lightbulb came on, and an “OMG! Ah-ha!” followed!

This moment happened to me the other day! I was watching my colleague teach functions, the same thing I have taught before. It was a simple lower-level thinking lesson on Bloom's taxonomy scale, but it caused me to have this surprise “a-ha” moment. It was then when I realized a critical analysis of my learning path. I had cycled back into a knowledge/comprehension phase and made a significant connection to the current topic. What I knew before wasn’t half the battle of my real understanding of functions. I had missed something supercritical to understanding how to use functions.

I felt a “spark,” and I realized that I reached a point where a reliable neural connection had finally happened. I have been teaching the concept of functions for a few years, but what was it, and how did this linking of neurons finally solidify? How could a simple knowledge exercise spark my brain into a “synthesis “reaction? Was I suddenly able to understand and visualize a more involved piece of code and solve it?

Last summer, I took a course called “Learning How to Learn” with Barbara Oakley, and during this course, Barbara discusses these moments called “meta moments”. I have witnessed them with students many times and have become accustomed to designing situations for students. However, I do not recall remembering a moment like this happening to me in adulthood. I felt the neuron connecting two pieces and the knowledge solidifying. I identified that ‘click’ or ‘ah-ha’ moment and have been trying to explain the incident to other adult learners, so that we can replicate it.

Bloom's taxonomy started as a pyramid and has had so many mutations over the centuries. Teachers have listed out verbs, apps, and diagrams side-by-side in a circle; however, many educational theorists believe that the concept is durable and timeless regardless of the modification.

However, I agree with the University of Michigan, that Bloom's taxonomy is like the design cycle where ideation, research, prototyping, creation, and evaluation, cycle back and forth. This version of Bloom’s taxonomy shows the thought process that is needed when teaching and learning Computer Science.

Knowledge is gained at different entry levels depending on the concept, the skill, the topic, or the learner. And the depth of the knowledge does not need to be vast, nor does it need to be all-inclusive before creating, evaluating, and analyzing. However, it does need to cycle through in a quick Scrum or Agile learning approach.

Using this version, let’s investigate my “ah-ha” moment. I can recall facts and basic concepts. I can define, call functions, and add parameters and arguments to create useful functions in code. I can evaluate student code and analyze other codes to identify errors. I remember, understand, apply, create, evaluate, and analyze. I have completed my level of higher-order thinking skills. However, I gained more knowledge during this process and cycled back to the remembering and understanding stage. By completing these “higher-order thinking skills,” I was better able to understand functions deeper. But it is only after these stages where I can go back to understanding and remembering the concept better. I have evaluated and analyzed so that I can finally understand.

It is by following this pattern that my skills are growing. And it is this pattern that simulates in my teaching. When we teach a new subject, it is not essential to divulge every concept or insist on every idea is understood. It is only necessary to ensure that the learner is consistently cycling with information that he/she manipulates, transforms, and ingrains it on neural connections.

When a learner can now make explicit pictures in their mind, or design a metaphor, they develop an understanding that cannot be replicated by merely reading or copying code. For example, I like to think of functions like getting a phone number from someone. A phone number is a way to repeatedly getting in touch with someone; however, if you do not use the phone number or “call” the number, you cannot talk to that person. Functions are transactional.

Indeed, one can put together a more involved piece of code by copying it from a book. We can learn everything about the code and state what each line does, and build up a repository of information. But computer programming is more analytical than memorizing. SO start small, learn bites, not chunks, and truly understand it from a simple knowledge base.

Grow upward through the pyramid and get to know a topic. Do not be afraid to learn in small chunks. Do not challenge yourself to know everything at once but challenge yourself to play and apply those higher-level thinking skills to smaller bites of information. As we adapt Bloom's Taxonomy to the dynamic landscape of coding, we discover that the journey of learning and teaching Python is an ever-evolving adventure, where 'aha' moments are waiting to spark our understanding.

"The eye sees only what the mind is prepared to comprehend."

- HENRI BERGSON, French Philosopher and Educator