Do you have a student who says they don't like computer science? That it is boring? It could be the way it is taught at their school.
Over the past year, I have had the opportunity to closely observe students from across the country from a wide range of backgrounds and notice what excites them about learning computer science and what doesn't. Here's a simple example.
One of the first complex data types students learn early on, is the concept of an Array (or a List). It is an essential building block to learning how to handle large amounts of data in a computer program. Most textbook problems dealing with this concept ask students to solve problems that produce an output like this:
[1, 2, 3, 4, 5]
It is a simple way to represent a list that is both visual and concrete, right?
The student reaction I see is often “duh, so what?”
When I learned computer science in the 1980's and early 1990's, many of us had upgraded from punched cards to text-based terminals, so the printed text output above was quite magical. I can see why curriculum developers still write such curriculum.
After all, we tend to teach how we learned ourselves.
Except, computer science has evolved a lot since then. Toddlers, even before they can speak, learn to swipe on a high-definition screen of a pocket sized computer that is over 120 million times faster than the Apollo 11 computer that put us on the moon. Then, “duh, so what?” is a pretty intuitive response to textbook problems that ask young students to just print text on a screen.
Where is the magic and the creativity in printing an array ... every student's program output is nearly identical. For beginners learning computer science, this is an example of a crucial moment. We either engage them, or risk losing them forever.
At 2Sigma School, our students in AP Computer Science A produced the following output as they were learning the concept of arrays.
Instead of printing a small list of numbers, they were painting an array of circles with varying radii and colors, flexing the power of what they had just learned.
Students were provided with the scaffolding so they could focus on learning usage of arrays, but had the creative freedom to explore beyond the basics.
With such creative freedom, students produced a wildly varying range of art — no two student's work was identical. Some had a static image and others added motion, including one that follows your mouse. They learned how simple data structures like lists can enable visually stunning art.
It fueled their creativity and imagination, and engagement and learning was a happy outcome. The scaffold they were given provided them a clear roadmap of what it takes to build such projects from scratch. It opens the black box and offered a playground for the curious ones.
I can't wait to share what our students did with 2-dimensional arrays next. Stay tuned.