Mastering basic Sorting Algorithms through Computational Thinking Activities for Everyone - Silapachote, Piyanuch; Srisuphab, Ananta; Hoonlor, Apirak; Sunetnanta, Thanwadee (IEEE Global Engineering Education Conference, 2024)
Sorting is an algorithmic concept that is covered in every fundamental computer science and engineering course and included in most if not all programming competitions. It is an everyday task, self-taught and done naturally even by a small child. In spite of its ingenuousness, mastering sorting algorithms turns out to be not so simple for many first-time programmers. This happens because how humans perform sorting is far from being straightforwardly aligned with machine instructions. We have developed an unplugged game-based learning activity that aims not only to tackle this difficult dilemma but also to promote computational thinking practice. Our game robustly challenges audiences to complete a fun sorting task algorithmically and the building blocks of the exercise are methodologically grounded in the four cornerstones of computational thinking. Participants are gently guided through solving a problem by decomposing it, recognizing patterns, applying abstraction, writing step-by-step instructions, and finally arriving at a programmable solution. Our design is largely flexible. The game can be played in small groups or larger ones. It uses only common, readily accessible materials, and is easily adaptable to different levels of audiences, from the interested general public to secondary school students and teachers, to non-computer science undergraduates and those majoring in engineering or information technology related subjects. We have implemented this activity in our classrooms and conducted several workshops. Responses were markedly positive. Engaged from the beginning to the end, participants enjoyed the activity, having fun sorting. Appreciated the ideas, audiences were captivated by many surprising challenges. Most notably, they were able to comprehend the concepts of sorting algorithms and the computational steps behind them, and gain a better understanding of computational thinking.