The months of September and October are known for their succession of fashion weeks around the world. Every year, I browse through the multitude of pictures of models sporting extravagant looks that I will most likely never buy or wear. Part of it is that I enjoy staying up-to-date with the fashion world, but really, I just like to daydream about designs that I wish I could create. This year, what caught my eye on the screen wasn’t a wild hairdo, or a unique accessory, but a sparkling message below my Google search bar that was inviting me to start creating my own designs.
The message redirected me to the Made with Code website, a Google initiative that showcases projects connecting fashion, music, art, films, and other students’ interests with concepts of computer science. The featured project on the website laid out the relevance of programming in the fashion world and described how this year, some students collaborated to create code-animated LED dresses that fashion designer Zac Posen included in his show during fashion week. I was aware that “coding” was a buzzword lately, but how did it make it to the fashion world?
And more importantly, why?
It is expected that the technology sector will keep growing in the near future. Computer Science (CS) jobs may become the highest paying sector over the next decade1, and with CS playing a role in everything from research to fashion, reports suggest that technical competencies will be in increasingly higher demand2.
If a primary goal of education is to prepare students to be successful adults, then this changing professional landscape should be reflected in the ways (and what) we teach. Coding is a practice that is linked to “computational thinking” – a skill that has been advocated as a way to promote 21st century problem solving across disciplines3. This type of thinking is already beginning to transcend from the fashion world to a variety of compelling educational projects (e.g. National Science Foundation, Next Generation Science Standards, International Society for Technology in Education, Computer Science Teachers Association, College Board).
So what is computational thinking? And why is it catching on?
Problem solving has always been an integral part of our personal and professional lives, and the rise of computers has given us new ways to reflect on, structure, and optimize the ways we solve problems. Computational thinking is the set of cognitive skills that lend themselves to breaking a problem down and expressing its solution in a way that computers can understand. It is a way of translating how we think into how computers think–a challenge that both stretches our own perspective and provides great collaborative power between humans and machines. It involves the application of skills that we already use in our daily lives without knowing it, like algorithmic thinking (e.g., following steps in a recipe), pattern recognition (e.g., adapting to traffic on your daily commute), abstraction (e.g. zooming from an outlined map of the world to specific details of a city), and problem decomposition (tackling a complicated problem piece by piece)4.
Computational thinking is therefore a collection of mental tools from the field of computer science that can help students solve problems and design systems that are responsive to human needs, regardless of subject area.
What is computational thinking’s full potential for learning?
Any time computers are used in problem solving situations, computational thinking is needed. However, research suggests that mastering this type of thinking may also be related to more general capacities. Researchers have looked at the link between computational thinking, coding, and cognitive skills like problem solving to help us understand that interaction. For instance, Ambrosio et al. (2014) administered a set of four tests to 12 introductory programming students to understand which skills needed to be developed for students to employ computational thinking.5 Their tests were based on four central cognitive processes involved in programming, namely spatial reasoning, academic success, arithmetic reasoning, and attention to detail. The authors crossed students’ cognitive abilities (based on their scores from these four tests) with their performance in an introductory programming course. While the two latter did not correlate with programming capacities, the study shows that general abilities, like academic success, were crucial dimensions for introductory programming.
In other words, the students’ computational skills seemed to link with their overall deductive reasoning skills and their spatial organization of information.
This underlines the argument that computational thinking, regardless of specific skills, can be thought of as a mental process that students can act upon. More importantly, what computers bring to that equation is what Pea & Kurland (1984) have described as self-consciousness about the process of solving problems. In other words, when students discuss the process of solving problems in programming, they can learn to recognize connections between different problems that are structured in the same way. This heightened awareness of their personal problem-solving processes helps students to go beyond learning the language of computers: to promote metacognitive practices (or thinking about thinking), which can transfer across domains or subject areas6.
Finally, Voskoglou & Buckley (2012) argued that because students will pursue a career that will most likely be influenced by computing in the future, computational thinking should be practiced early in schools to expose students to solving problems using computers7. They also suggested that coding is a great way to learn computational thinking explicitly through active and creative experiences with computers.
How do we actually apply it to the classroom?
While the research makes a case for integrating computational thinking and coding skills into our educational curricula, how would it actually look like in the classroom?
To make the jump from research to practice possible, various initiatives and resources are available to teachers. For me, Google CS First provided step-by-step lessons about fashion design that I could follow. And here are a few other examples to introduce coding and computational thinking in class:
● Introduce computational thinking with this Code.org lesson to solving real-world problems through digital representations.
● Look at “Made with Code,” to see what projects students could get involved with, especially in the fashion world.
● Try the “Hour of Code,” a Code.org initiative to promote computer science and computational thinking during Computer Science Week (December 7-13).
● Explore Scratch, a coding platform aiming to introduce students to the basics of computational thinking and coding.
These resources can be used as tools to practice computational thinking in digital or physical environments (check out CSunplugged for computational thinking activities without computers).
Let’s look closer at one of these examples: Scratch. It is a programming language for beginner programmers that promotes digital fluency through the creation of videos, stories, music, simulations, interactive art, or games8. The program is made of blocks that snap together like a puzzle while emphasizing programming concepts and computational thinking. Users can also share their creations online through the Scratch community9.
Current Scratch Online Community Manager, Eric Schilling, has watched Scratch users (i.e. “Scratchers”) master much more than coding. He recently described his experiences to the Learning & the Brain Blog, specifically related to the skill he calls “debugging”:
“[It’s about] identifying and breaking down problems into smaller pieces. It’s easy to become discouraged when faced with a big, thorny problem. ‘Why the heck isn’t this working!?’ Scratchers embrace problems as learning opportunities. ‘Failing forward’ as many of them like to call it. Let’s find the root of the issue, come up with a solution, and make this cat superhero save the world (see image above)”.
It turns out there may be benefits to having students explore their imagine and learn real skills at the same time. In a study on digital storytelling, Shelby-Caffey et al. (2014) demonstrated that tools like Scratch could improve students’ analytical as well as technological skills by providing an engaging platform where students could express themselves creatively10. Armoni et al. (2015) also suggested that participating in computing activities early on (like using Scratch) could help increase students’ levels of motivation and self-efficacy to pursue coding, sometimes even facilitating the transition to more professional text-based programming languages like C# or Java, or to computer science studies at the secondary level11. To make it easier to implement, Scratch provides instructional support for educators through their ScratchEd online community.
As an educator, I recognize that the world is changing, and these qualities are becoming increasingly necessary for students to become college, career and citizenship-ready in the 21st century. Additionally, though they may seem very focused at first, research continues to suggest that these skills have the potential to transfer to other domains. By incorporating coding into fields like fashion or projects with “cat superheroes”, we can rebrand this type of thinking to appeal to a wider range of students who can all reap the potential professional and cognitive benefits. Girls who Code, along with Made with Code and other aforementioned sites, are part of a growing list of useful resources. Teachers can use them to connect what their students are truly passionate about with skills that will enrich their future.
These initiatives promote the set of cognitive skills needed for coding and computational thinking, and deliver them by engaging students in activities related to their interests. Whether said interest is fashion, music, video games, or problem solving, prioritizing computational thinking in the classroom promises benefits well beyond the computer screen.
References & Further Reading
- National Association of Colleges and Employers (2013). Salary Survey. [Survey]
- (2015). 2015 technology industry outlook. [Report]
- Barr, V., & Stephenson, C. (2011). Bringing computational thinking to K-12: What is involved and what is the role of the computer science education community?. ACM Inroads, 2(1), 48-54. [Article]
- Wing, J. M. (2006). Computational thinking. Communications of the ACM, 49(3), 33–5. [Article]
- Ambrosio, A. P., Almeida, L. S., Macedo, J., & Franco, A. H. R. (2014). Exploring core cognitive skills of Computational Thinking. In Psychology of Programming Interest Group Annual Conference 2014 (PPIG 2014) (pp. 25-34). [Paper]
- Pea, R. D., & Kurland, D. M. (1984). On the cognitive effects of learning computer programming. New ideas in psychology, 2(2), 137-168. [Paper]
- Voskoglou, M. G., & Buckley, S. (2012). Problem solving and computational thinking in a learning environment. arXiv preprint arXiv:1212.0750. [Paper]
- Resnick, M., Maloney, J., Monroy-Hernández, A., Rusk, N., Eastmond, E., Brennan, K., & Kafai, Y. (2009). Scratch: programming for all. Communications of the ACM, 52(11), 60-67. [Web Article]
- Lee Jr, J. (2009). Scratch Programming for Teens. Boston: Cengage. [Book]
- Shelby-Caffey, C., Úbéda, E., & Jenkins, B. (2014). Digital Storytelling Revisited. The Reading Teacher, 68(3), 191-199. [Paper]
- Armoni, M., Meerbaum-Salant, O., & Ben-Ari, M. (2015). From scratch to “real” programming. ACM Transactions on Computing Education (TOCE), 14(4), 25. [Paper]