Going Beyond the Code: Getting Kids to Think Like a Developer
“Never again is someone going to pay you to give them answers they can look up online. They will only pay you to solve problems that don’t yet have answers.” Let this powerful reflection, courtesy of Seth Godin, sink in for a moment. The purpose of education is shifting. Rote memorization of facts and figures is a bygone necessity. In order to survive in the real world, fulfilling the requirements of jobs that may not even exist yet, we need problem solvers and problem finders… students who can recognize a problem and design a possible solution. Giving students this kind of opportunity is not always an easy feat, but during this past school year at our school, we took this shift in pedagogy to heart. Our goal was to provide opportunities for ALL our students to connect to their learning in a meaningful and passionate way. To do this, we sought to leverage coding and computational thinking skills to empower our students to own and deepen their learning, giving them yet another avenue to become lifelong learners, critical thinkers, and productive contributors to our global society.
This past school year, three teachers at Costello Elementary School turned our classrooms into deep-learning laboratories around coding and app design, creating what we dubbed the “Costello Developer Academy”. This program was established to give students the chance to experience the design-thinking process and get to know some basic coding principles.
In these academy classes, we used “Challenge Based Learning” (CBL), an innovative approach to teaching and learning. This process was collaborative and hands-on, where students worked with other students, their teachers, and experts in their community and around the world to develop a deeper knowledge of the concepts they were studying to leverage the technology they use in their daily lives to solve real-world problems. Their task was to solve challenging puzzles, in real life, as well as on their tablets, to recognize problems, take action, share their experiences with others, and even enter into a global discussion about important issues affecting the world through the production of a student-run podcast.
DEFINING A DEVELOPER’S MINDSET
Student learning at our “Academy” was aimed at more than just acquiring basic computer coding skills. We wanted to empower our students to think like developers who might one day develop apps to solve real problems in the world. After all, writing code is only a tiny part of what developers do .
Most of the work of a developer involves solving complex problems so our definition of a “developer” is someone who can solve problems using their own skills and knowledge. As such, our program put an emphasis on critical thinking, creativity, and collaboration, with the ultimate goal of empowering and equipping students to develop the skills needed not only to succeed in coding or computer science but in areas such as design thinking and entrepreneurism as well.
IN THE BEGINNING
This driving question was posted in our classrooms and referred back to often throughout the academy: “How can thinking like an app developer lead to solving problems and making a positive impact on the world?” By framing the question like this, and early on in the process, it gave context to all of the coding activities that our students would undertake. We challenged them to be content creators – not just consumers – who could add something of value to the world around them through their unique app development ideas.
Besides encouraging all students to grow into these so-called “soft skills” (emotional intelligence, adaptability, ability to collaborate and negotiate, situational awareness, ability to communicate, etc…), the Costello Developer Academy leveraged Apple’s “Everyone Can Code” curriculum, starting with the free ebook, Get Started with Code 1*, to teach coding concepts such as basic programming and eventual development with the Swift language. We liked Apple’s approach to coding because each of its courses contained an “Optional App Design” extension activity after the main skill practice. While this portion of each lesson was technically optional, and not really related to the specific coding skill or concept of the day, to us it was the most important. This activity was the gateway through which we were able to make the most curricular connections to reinforce our students’ understanding of coding concepts while they learn new math, science, English, art, and music concepts.
Over the course of four months, the students extensively used two apps, Tynker and CodeSpark Academy, to learn the basic concepts of code. Via bouncy music, colorful scenes, and interactive gameplay they learned concepts such as sequencing, flexible sequencing, loops, if statements, and algorithms. While CodeSpark Academy is a free app for teachers to set up classroom accounts, Tynker uses a “freemium” model, charging users to go further than the introductory courses. For our purposes, however, and following Apple’s lesson plans, both of these apps got the job done at no cost to us.
One skill that both apps highlighted was sequential thinking. Sequencing is basically ordering the lines of code in certain sequences in order that each task is carried out at the right time so the ultimate goal is achieved. We loved the connection that kids made to what we were learning in math, specifically the algorithm for long division, and how if you got the divide, multiply, subtract, and “bring down” steps out of sequence, you’d end up with a big, fat syntax error!
This is a picture of an activity one of our classes participated in, in which the ultimate goal was to bring the “robot” to the other side of the seating area. They had to use sequencing, because if they didn’t, who knows where the “robot” would’ve gone?
It was simple “analog” activities like these that made Apple’s coding curriculum so approachable for kids. They practiced the concept in groups, without technology, before moving on to see how this might play out in the coding language on their iPads. Another concept of code they learned was flexible sequencing, which is a concept that simply shows that there may be multiple ways to sequence a program.
Another concept of code was using loops. Loops allow the programmer to repeat the same block of code multiple times without adding too much more code. Below is a picture of one group teaching their looping sequence to the class in order to get all of the kids to learn their body percussion song… an original composition!
Another concept we taught was “If Statements”, by which blocks of code run only if certain criteria are met. Below is an image of a project that students completed in real life before moving onto the digital version. It was a maze, complete with student-created protagonists and villains! Students used if statements to avoid the villains and unleash their hero’s superpowers.
Another essential concept students in the Academy learned about was debugging. In coding, bugs are mistakes in the code. Students learned that every programmer has to debug after running the code at least once…. Kind of like how writers have to edit and revise before publishing! Students would “code” the program for their robot and ask themselves “are there any bugs in the code?” After that, the code debugger on each team would debug the “code” so the program would run correctly.
Finally, another coding concept introduced to students was the use of algorithms, where certain blocks of code controlling each aspect of a program. An algorithm is composed of all the different concepts of code mentioned earlier. As you see on the screen down below, one of our most enthusiastic programmers, Ekaansh, made an algorithm that printed the word “why”. Why? Because he can!
LEARNING FROM EXPERTS
One of the challenges of this project was that we, as teachers, did not have a background in coding. One of the common myths in education is that teachers must be an expert on every subject. Instead of only taking the kids as far as we could with our limited know-how, we decided to reach out to create local partnerships in the community so they (our community partners) could be the experts our students relied on to help them through their acquisition of coding knowledge and through the app development process. We took our 4th-grade students to a local mall to the Apple and Microsoft stores. Working with a team of these experts in the Microsoft store, students learned how to code their own basic video game. In the Apple store, students learned how to use the program Keynote to develop a working app prototype. An invaluable learning opportunity, this process was incredible, and over the next few weeks took on a life of its own in our classroom.
Field Trip to Somerset Mall
At Apple, students learned from the resident “geniuses” the 4 stages of the App Design Cycle, and below we will break down each stage of the process.
In the Brainstorming phase, students were encouraged to develop their sense of empathy and step inside the shoes of a person or group of people in the world who may be experiencing a problem. By answering three simple questions, “Who is your app for?” “What will your app help people do?” and “How will your app help them?”, our learners were able to develop their app definition statement. Having a clear goal for helping a discrete group of people helped to narrow the focus of their design efforts. Below is one example of a group’s definition statement:
With a mission statement in mind, they began to plan how their app would solve their defined problem. One of the biggest values and selling points of this academy format for us as regular classroom teachers was the planning phase. It was in this part of our project that we were able to get students to really connect the computer science side of things to what they were already learning curriculum-wise. In their planning, we asked students to think about what information or content their app would need to be pre-loaded with. Were they designing an app to end world hunger? Then they would need to have intimate knowledge about this global issue in order to be able to solve it. Developing an app to help predict severe weather and other natural disasters? Then the student knowledge of meteorology was an essential part of the app! It is through this type of project-based learning that students begin to realize what they don’t know already and what they need to find out.
When we talk to other teachers about what we’re having our students do during class time, the biggest question we get is, “That’s great for you, but how do I fit that into our schedule? We don’t have time for that kind of thing.” Back in the old days, teachers would teach a unit and then, after all of the learning was done, have students complete a fun, “desert” project… or even worse… as extra credit! This is where the secret of project-based learning becomes so important! Projects can’t be an afterthought and happen as extra work after the “learning” (memorization, really) has taken place. For us, projects are the “main course” and the WHY for the learning. In our classrooms, we don’t say, “you’ve learned all about X so now you’re going to do a project to show what you know about X.” Instead, we say, you’re all about to create Y in order to do Z, so you’re probably going to need to find out all you can about X!” It may seem like a slight shift in semantics, but it makes a world of difference in terms of student motivation and execution. We tell everyone who will listen that this shift in how you frame the learning leads to the four Rs: increased RIGOR of learning, better RELATIONSHIPS among your students and the wider community, instant RELEVANCE of what you’re trying to teach them, and simply awesome RESULTS in what the kids will produce. What made our academy such a special experience was the chance for us to set high expectations for learning while being supported by a rigorous and innovative instructional framework. We found, once again, that when you give students the chance to amaze you, they consistently will.
Students used Keynote on the iPad to create a prototype that looked and functioned like an actual app. By creating on-screen buttons and using the built-in hyperlinking features of Keynote, students could design their prototype so that different buttons would lead to different places. Creating linear slideshows is one thing, a relatively low-level task on the SAMR spectrum, but by asking students to plan the flow of their app with multiple pathways of links to follow created a significant opportunity for students to think multi-dimensionally, with links acting like a Choose Your Own Adventure Book, sending their user to various screens or external sites. Part of the students’ enthusiasm for this project was derived from the increased level of complexity that their app prototypes could demonstrate. We created a group of non-linear thinkers, helping them to develop a capacity for problem-solving which extends into multiple directions. Rather than thinking in step by step and moving in one direction, our students were given the opportunity to see that there are multiple starting points from which one can apply the solution to a problem. The students loved this and it definitely made their creation feel real.
One of my favorite ways to judge projects is on students’ willingness to work on it outside of school even when it’s not assigned. For these two weeks, students were coming in each morning excited to show the new feature they added at home. It soon became a competition to see how many separate slides and links and pseudo-animations they had come up with, and students would design and redesign their app logos until they were perfect and presentable. When students care about what they’re creating, they become unstoppable. It’s best to get out of their way, offering guidance and support as needed.
In the evaluation phase, students passed their prototype creation to other peers and let them work their way through the app. Many times, students found broken links or “bugs” to report back. Students provided authentic feedback to their peers to improve their prototypes.
As another aspect of the evaluation phase, we reached out to the High School AP Computer Science teacher who had been working with his own high schoolers all year to create and code actual apps. He brought 15 of his students to walk around our classrooms and provide feedback to our young developers on what they created. This was another way to make it real for our students and provide more opportunity for connection and collaboration. Below, you can see a few pictures from this feedback process.
After many cycles of evaluation and iteration, students created a “final prototype” (probably an oxymoron) but one they felt comfortable showcasing to the world.
SHOWCASING TO AN AUTHENTIC AUDIENCE
Finally, the big day had arrived! Part of our classroom philosophy that certainly carried over to our Developers Academy is that we firmly believe in giving our students as many opportunities as possible to present their learning to authentic audiences. We’ve found that by creating an event for students and inviting in outside people boosts the engagement and excitement, and therefore the learning for students. As such, we invited our Superintendent, Board of Education members, district technology leaders, as well as our district’s media department to take pictures and document the big day.
We started out with a bang by inviting a select number of students from our 4th- and 5th-grade classes to give an opening keynote address. We coached them to prepare for this moment by showing them TED talks and examples of students giving keynote speeches, including my favorite of all time, Dalton Sherman’s “Do You Believe in Me?” Keynote Speech. We asked them to share the process we had gone through to get to that point so that our outside guests would have some background knowledge of all the learning that had taken place up until that point. I wish we had recorded it because the students did an amazing job (you can see a picture of the opening speech as the featured image for this post). The rest of the students sat patiently, listening to their peers recount their experience while the guests got caught up on the undertaking. They shared the process, owned the learning, and started the expo off on a high note.
Next, developers headed off to their stations, where they had their iPads displayed for passersby to try out their apps, while they explained the thoughts behind their creation. They also had created a poster version of an App Store “review”, in which they had classmates review their app, give a description of the purpose, and recommend an age for the user, based on the social media “features”, such as texting, that they included. You can see this in the pictures below.
While this project was quite a large undertaking, it was completely worth it in the end and we would do it again next year. While not every student will grow up to be a computer programmer, the principles that were elevated through our developers’ academy such as knowledge, skills, and agency, will help our students to become empowered and adaptive workers or entrepreneurs or poets or mathematicians or teachers. We want them to be able to shape the world around them, and not just be shaped by it. You need to know how computers work and how to shape them. Through our Developer Academy, we helped kids learn coding concepts, learn how to create prototypes through the design thinking process, and then discover that they can use all that to make a difference in the world. It doesn’t get much better than that!
AUTHORS’ NOTE: This post first appeared in a slightly different form on the Defined Learning Educators’ Blog as a commissioned piece.