Teaching Python

We're two middle school teachers learning and teaching Python

The Metacognitive Process part 3 of 3

Excerpt from Part 2, the Metacognitive Process

As you start to understand Python’s core concepts and syntax, your learning shifts more from content knowledge into more procedural knowledge. This transference happens when vocabulary, definitions, facts, and the interrelationships between them, start to connect, and conceptual understanding starts to develop. Your “What do I want to learn?” goal should begin to shift, and you should consider moving into the next phase of the metacognitive process before cycling through the process again. It is at this point where you should pause to reflect on the learning journey. Reflection!

A teacher knows that learning is a path full of collecting knowledge, transforming it with skills, and learning to apply both to solve a problem. As an independent learner, you need to be your guru of reflection. In Part 3 of the Metacognitive process, we will look at identifying what you learned. But before we do, list out what you want to learn, and then conquer your learning!

‘By three methods we may learn wisdom: First, by reflection, which is noblest; Second, by imitation, which is easiest; and third by experience, which is the bitterest.’ –Confucius

The KWL chart: It is just a Cycle

As you continue down your learning path, reflection becomes one of the critical areas for growth. Some educators have suggested modifying the KWL chart, presenting that more letters like H for “how”, A for “Actions,” and Q for “Questions” be added. This idea makes sense if a student needs reminding to complete these fundamental tasks. However, the process already happens in the column, “What did I learn” and this column is an integral part of reflection.

Look at the KWL cycle below, it is not a linear process when you are learning how to code. A good programmer knows that you need to be a life-long learner when coding.
KWL Cycle

As you recall, metacognition is thinking about your thinking. Regulating your thinking is a constant process. You need to keep in mind the tasks you need to achieve, your abilities, and how long it takes you to commit concepts into long-term memory. What are the strategies that worked for you as you were looking at what you wanted to learn?

You may think that you have gone through many resources and still the concepts aren’t sticking. Or you have some specific concepts where your comprehension is reliable, but other concepts take constant reading, researching and revision. Regardless, you need to ask the question why? Just reading over and taking information or memorizing isolated facts may make you a great communicator, but what about programming? Imposter syndrome may kick in when faced with a project where you need to code on your own.

What did you learn?

When you enter into a reflection phase for the first time, check the items you marked in the “Know” section. Can you make any other connections to what you knew and what you learned? Can you connect two concepts’ synapses in your brain to make a new permanent connection? Does a mental picture surface? Or is it oppoosite? Do previous codes or concepts manage to stay out of your reach in long term memory. What did you differently to make the connections? Go back, relearn and think about why it is not 'sticking".

“The brain’s capacity and desire to make or elicit patterns of meaning is one of the keys of brain-based learning. We never really understand something until we can create a model or metaphor derived from our unique personal world. Learning and memory are influenced by the sets, intentions and plans generated in the neocortex of the brain as well as by the information received from the immediate environment and from internal states, drives, and muscular responses. The reality we perceive, feel, see and hear is influenced by the constructive processes of the brain as well as by the cues that impinge upon it.”

– Merlin C. Wittrock

When I was learning functions, I understood the concept and I could easily define and call the function. However, as time progressed, I realized that I did not truly comprehend the concept entirely. After reflection, I looked at my examples. Most of the functions I wrote were futile, useless pieces of code that I wrote just to practice. The concepts and importance of functions was truly missed. I failed when I needed to rewrite some functions and reuse them in my code.

When you program, try to use the concepts in a way that matters or makes sense in the code. If a piece of code has a specific purpose, use it. For example, do not just use regex because it is an important concept to know. Could you write a lambda function? Better yet, is this something that could be combined. Is there an easier, faster way? Understand when and where code works best, and use it accurately.

Reflect on what you wanted to learn

Check off the questions listed in the second column first. DId you answer all that was asked? How did you answer them? Are the questions basic knowledge questions or are they analytical or practical questions. WHich ones do you still need practice with?

At this point, you are entering back into the “What do you Know” and “WHat do you Want to Learn” phases of the cycle. Can you clearly identify the concept that you know well enough to teach without notes? Can you code with confidence? Are you writing code that makes sense? What do you need to know to code with confidence? How can you improve your current code and make it more efficient? What other projects can you do to improve your understanding of a topic.

Reflection helps you to identify what still needs to be learned. Everytime you reflect, you gain a better understanding of yourself and your abilities to tie two concepts together in your brain.

For a quick summary of the all the stages, consider these steps:

  • Plan
    • Make and set a goal
  • Gather resources
    • Organize the resources so that you can come back to them when necesary
  • Recall and organize concept on paper helps you to remember
    • Keep track of how you are doing- Write it down!
  • Constantly monitor your learning- Avoid Imposter Syndrome
    • Keep track of how you accommodate your understanding
    • Did you need help?
    • Test yourself
  • Identify new knowledge and build knowledge from what you already know.
    • Don't be afraid to go back in the KWL cycle
  • Take action
    • Teach someone
    • Write some code
    • Blog about your experience