This is my new favorite thinking routine: Parts-Purposes-Complexities. It's a thinking routine that allows students to investigate an object or concept, analyze its parts and the relationships between parts, and inquire into the essence of the object or concept. I've been using it for awhile with analyzing products and objects, but this was a first go with coding.
One of my classes has been exploring Python coding language. In class we have been doing a number of activities around computational thinking; however, most of the learning about Python has been done through Code Academy.
As part of an in-class activity we made a simple rock-paper-scissors program together as a class. As an extension, students were asked to develop a new aspect of the program--make it more difficult to play, have the computer keep score, etc. Before doing that, I wanted to make sure students understood the elements of the program and could articulate their understanding of how loops, variables, random generators, etc.,. worked.
Using this form, students pasted their code in the middle and the printed out their sheet on A3 paper. Using a pen, they then followed through the Parts-Purposes-Complexities thinking routine:
- Parts: label all the parts; give everything a name
- Purposes: describe the purpose of the part; What does it do? How does it function?
- Complexities: Identify the relationship between the parts. How do they work together? What is essential in order for the relationship to "work"? What questions or wonders do you have about the parts, purposes, or relationships.
In ten minutes, students were able to articulate the structure of the computer program, and identify relationships between these parts, as well as list questions they have about the program. In particular, its a fast thinking routine that can be use to quickly and comprehensively gain insight into a student's understanding of the concept. We were able to uncover and address some great questions about programming, coding, and computational thinking.