From coding puzzles to interest-driven projects - CSforAZ
August 31 2017 · By Abby Funabiki
Coding environments and curricula with puzzles and challenges often utilize engaging platforms which guide young coders to learn fundamental coding concepts and practices. These environments and curricula often progress from simple through complex algorithmic sequences with clearly defined solutions. This approach not only provides useful resources for young coders new to coding, but for adults new to teaching, facilitating, or evaluating coding classes.
Although approaches with clearly defined solutions are useful, they may give the impression that coding involves finding the right solution rather than understanding there are many potential solutions for most problems. For example, think about how many different messaging apps each of our phones might have. Looking at the messaging apps currently installed on my phone, I can send direct or group messages via Hangouts, Messages, Messenger, PS Messages, RingCentral, or Twitter. Each messaging app solves the problem of sending text and media messages to other people, but each app does so with different features and limitations.
Unfortunately, most puzzle-based coding platforms lack creative applications of code to solve problems with many potential solutions. Instead, creative applications of understanding are confined to dedicated spaces at the end of a sequence of puzzles with one “correct” answer, or are omitted entirely. Further, these platforms often use popular characters or themes from movies and video games to entice kids into learning how to code. While this approach can work for a while, it relies on external motivation as a carrot on a stick rather than allowing a space for kids to use their own interests to drive learning. In addition, it tends to encourage surface level understanding without potential for application of understanding in meaningful coding projects.
While approaches with predetermined sequences and little opportunity for creative outlets can work well for learners who elect to attend a class (e.g., AP Computer Science electives), these approaches do not always work well in a mandated class for learners with no preexisting interest in the subject area. When a class is mandated, a teacher often uses grades as a motivating factor for active participation; however, this approach does not motivate everyone to participate and can often lead to merely completing the minimum criteria.
At Avondale Elementary School District, I designed and facilitated coding classes mandated for all grades K-8. Because the district requires everyone to participate in roughly 48 coding classes each year, I adopted an approach which centered on creating and remixing interest-driven coding projects to create a space for a variety of interests to drive deep learning. Young coders engaged with projects using a variety of programming languages to create music, art, animation, games, stories, or even iPad apps using professional software such as Xcode. Although I developed hundreds of coding projects and resources (which are freely shared on my website), young coders were encouraged to design and propose their own projects of interest. I would often say, “Pick something that’s interesting to you and we’ll find a way to explore that interest with code.”
Image 1: Using Sonic Pi, this young coder recreated her favorite songs from her band method book and was able to combine her passion for music with learning coding fundamentals. Photo used with permission by Jared O’Leary.
Through this approach, coders determine when a project is completed, or switch projects if they lose interest. Although some fear this encourages kids to give up when a challenge is presented, I found the opposite is true. Because coders do not have to worry about solving a problem or creating a product within a fixed timeframe, they can instead focus on taking their time and engaging in something they are interested in. This approach leads coders to work on projects for several classes, while others spend multiple years creating and refining projects of interest.
Facilitating a class with four different programming languages, with upwards of thirty different individual or group projects without fixed deadlines, was tricky; however, seeing the projects young coders created justified the approach. The potential for chaos within such a space can be managed through peer-to-peer coaching and by walking around to ask questions and encourage deeper learning. This approach to interest-driven, self-paced projects without fixed deadlines allowed a space for everyone to learn at their own pace, guided by their own interests.
<iframe width="560" height="315" src="https://www.youtube.com/embed/qQwFMsMxvpE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
Playlist 1: This playlist includes a wide range of videos from some of the K-8 classes I worked with. Videos by Jared O’Leary.
Because interest-driven projects have no fixed deadlines, coders who are absent can simply resume their work when they return without fear of missing vital information delivered through lectures on a topic. If a coder joined our district midway through a school year, or multiple years into our coding initiative, they can begin working on projects with complexity relative to their prior experiences. This approach encourages a mixed range of expertise with multiple points of entry at any time throughout a school year.
Facilitating interest-driven projects in K-8 coding classes is a lot of fun, and can lead to more creative expressions and depth of understanding than puzzle-based coding. However, creating and remixing hundreds of projects and resources to support these classes meant I worked seven days a week and through most holiday “breaks.” Fortunately, if you’re interested in project-based learning but don’t have the time to develop a lot of projects and resources, you’re in luck.
This summer I joined a nonprofit as the lead coding curriculum developer and consultant to support more educators and young coders through free projects, lessons, and resources that assist the facilitation of interest-driven, project-based coding classes. We currently have 10 projects for grades K-2 using Scratch Jr. and 10 projects for grades 3 and up using Scratch; however, we have an outline of hundreds of additional projects for future release. Each project includes several days of resources directly aligned with CSTA’s Computer Science Standards as well as the concepts and practices within the K-12 Computer Science Framework. If you’re interested in using the free, interest-driven projects and resources I have developed, or would like to sign up for in-person, customized professional development, click here to visit our website.
Puzzle-based coding environments and curricula often provide valuable resources for a variety of stakeholders new to coding. However, if you are interested in coding curricula which focuses on creative applications of understanding in a variety of interest-driven projects, consider experimenting with the resources mentioned in this post and elsewhere. By finding ways to learn fundamental concepts and practices through the interests of the kids we work with, we may achieve the goal of providing high quality computer science education for all kids in Arizona.
__Some resources to get started with interest-driven projects:
- BootUp’s interest-driven projects for Scratch Jr. and Scratch
- Media arts and technology makerspace projects and resources
- Music and sound projects and resources using Ruby in Sonic Pi
- Scratch Jr. and Scratch project and resources
- Swift and app development projects and resources
Published by CSforAZ on August 31, 2017:
From coding puzzles to interest-driven projects