Teaching Python

We're two middle school teachers learning and teaching Python

The Metacognitive Process part 2 of 3

Excerpt from Part 1, the Metacognitive Process

While promoting a more in-depth understanding, a teacher will encourage students to use many skills. Students reflect on what helps build content knowledge, and teachers direct students to employ methods independently and build on what they already know.

Using the same skills that an adept teacher applies in the classroom, such as metacognition, can help one become a better learner. Metacognition helps guide you to change basic facts and vocabulary understanding into a deeper conceptual understanding of any topic.

In Part one of this three part series, we identified the need to list what concepts we may already know or what connections you can make to a new study topic. This
video by Django Girls does a great job of showing how to connect everyday understandings to new learning topics. Moreover, it helps solidify the importance of being able to explain complex topics with everyday concepts. Explaining the Command line with metaphors that connect to topics we already understand is a product of truly understanding a topic.

How can more metacognitive strategies improve the transfer of declarative knowledge into conceptual knowledge and make things stick!

Part Two: Getting “meta” with your learning: What do you want to Learn?

During the learning process, it is critical to identify the information you wish to learn. In a classroom/mentor situation, the teacher helps the student identify the gaps in what is known and what needs to be learned. A student who is aware of what they know or doesn’t know can better break down their learning process independently.

Like a student who is aware of their learning gaps, an independent learner, using the skimmed information in the “What I want to know” stage,
K-W-L chart, can apply critical learning strategies to identify the next moves.

Let us explore how:

I was in a unique situation where I was learning a topic simultaneously as I was teaching it. I was a “learner, doer, and teacher.” In learning how to teach python, I had to learn how to code it.

I was in a unique situation where I was learning a topic simultaneously as I was teaching it. I was a “learner, doer, and teacher.” In learning how to teach python, I had to learn how to code it.

I identified a learning path quickly, not only because of the tools I had as a teacher but also because of a specific need. I had to teach it.

However, that did not mean I was initially very successful.

My learning and teaching adapted as I learned more complex topics in Python. At the beginning of the learning process, most of the learning was declarative. “This is an integer, string, and float. These are functions. Here is an IDE.” Declarative

Being able to identify, define, and explain important concepts is crucial. Although declaring gained knowledge is a good start, making connections and explaining the concepts is a little trickier. Even more importantly, What about writing code? Furthermore, this is typically the asserted learning goal. “I want to learn how to code.”

Let us look at why this statement is too broad to be metacognitive.

What is it that you want to learn?

Identifying the ‘what I want to learn’ portion can sometimes be difficult when you are on your own. Most books on the market contain the same basics of coding Python. Learn the basics here. Learn to code in 30 days. The vocabulary is the same, the concepts roughly in the same order. The basics of python become the basics of turtle, and voila! You are a coder. Well, not really.

Getting Meta about learning can help, but it takes time, practice, effort, and awareness of the need. Without a teacher or mentor around to guide you, you are the person responsible for asking the questions to yourself? Learning is a process. It is not a static or closed-ended goal. Metacognition reminds us to be fluid, and that we must be in a constant state of progression in our learning.

It is time for another list. In this critical stage of learning, you not only identifying the path of learning, but you also set a goal. The goal must always adapt and progress. As an independent learner, it is up to you to keep tabs on the learning path and identify the gaps between what you thought you knew and what you need to learn. You need to advance at a rate that keeps you at a comfortable level of struggle. You are responsible for monitoring your comprehension, and you must remember to self-evaluate regularly.

“Learning is a process. It is not a static or closed ended goal. Metacognition reminds us to be fluid, and that we must be in a constant state of progression in our learning."

Do not waste your time writing out concepts and vocab words in this stage. Make learning goals. For example, as I started, my first goal was small, code Rock, Paper, Scissors without a tutorial, and explaining every line in the program. I needed to know this program forwards and backwards because I needed to debug my students’ errors without research or time wasted in class. At the time, I had only been learning Python for three months. Coding Rock, Paper, Scissors was an enormous feat.

When you are learning in a silo, learning to debug on a grand scale does not happen. I needed to invent ways to be prepared for my students. Practicing writing the code without a book or trying to solve code challenges can be an alternative. Look at issues on Stack Overflow and see if you can help replicate some fundamental questions asked. Alternatively, look at the Stack Overflow questions and code the solutions. Choose or identify the concepts suggested that make the most sense to you.

As I worked towards achieving my goal, I watched tutorials on how to code other activities; however I did not watch videos on RPS. I learned how to “Flip a Coin”, coded Michael Kennedy’s Birthday App, and practiced writing basic concepts such as for loops and conditionals over and over.

“One learns from books and example only that certain things can be done. Actual learning requires that you do those things.”

– Frank Herbert

Frank Herbert took six years to research and write his novel Dune. An equally long process is learning to code. Coding requires one to put in the effort, do the code and research the concepts.

Taking notes or writing things down is another way to “do” things during learning. Use inline comments, multiline comments, or a Colab document as places to write notes about code. I define every major code snippet to ensure that I can recall the concepts I have learned. You do not need to use these “notes” to study from; in fact, you will outgrow them quickly. However, writing down things helps your brain to make more connections to previous concepts and code.

To keep tabs on your learning, learn to ask yourself questions, draw flowcharts or write code snippets by hand, find a person to practice reciprocal teaching to, or if it is just you, write blog posts explaining your code. Learning requires cognitive and social activities that can help your brain move from procedural knowledge into conceptual knowledge. Find ways to discuss, do, and interact.

As you start to understand Python’s core concepts and syntax, your learning shifts more into procedural knowledge. This is when vocabulary, definitions, facts and the interrelationships between them, start to connect and conceptual knowledge starts to develop. Your “What do I want to learn?” goal should begin to shift and you should consider shifting into the next phase of the metacognitive process prior to cycling through the process again. This is the 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. However, before we do, list out what you want to learn and then go 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.’