This is part 4 of an ongoing series detailing my journey from total noob to hobbyist coder. I share my thoughts as I learn the basics of programming. You can find the rest of the series here.
My StackCodes curriculum relies on FreeCodeCamp for lessons. I felt at least partly at home during the HTML and CSS lessons, having spent over a decade in the world of digital media. I’ve worked with TypePad, WordPress, Chorus, and several homebrew systems. When I was working at The Verge, we had regular discussions with the team making product tweaks to the software.
I was able to breeze through these array lessons without stumbling over any character errors, but I doubt I would retain the information very well, because I don’t have a clue what I’m building or why. When the course shifts to functions, there is no explanation of how that might be related to arrays.
As it turns out, this is a common experience. As noted in a 2017 academic paper on the topic, “In the field of computing, data structures is a fundamental course that lays a critical foundation for the rest of the curriculum and is a solid basis for industry projects. A sound understanding of data structures, hence is indispensable for any student aiming to pursue a career in this field.” Ok, it’s important, but, “Data structures course is perceived to be a difficult subject for students, particularly the ones in high school because it is difficult for them to visualize how the data structures are structured and analyze its properties; hence they do not get the required motivation to pursue it in the way it should be.”
My sentiments exactly. Luckily, a little research turned up some options for a more engaging approach to learning about arrays. When you start teaching about optimizing time complexity in order to defeat the Nazis, I’m sitting up and paying attention!
This Udemy course also helped. It uses the metaphor of a grocery store. You have an array of fruits. I can easily imagine how a computerized inventory system might go about tracking what produce was in stock based on bar codes entered by the cashier at the time of sale.
In the 2017 paper I linked above, the authors suggest that music might be a useful tool for teaching students about data structures.
“Muse can be considered as a practical application of this approach that teaches the operations on arrays and linked lists through music. There is a mapping between the musical notes and their corresponding tones (SouthCalMusic), (Do Re Mi Isn't Just Child's Play: How Solfege Training Can Improve Your Ear). This mapping is exploited for explaining the concepts of arrays and linked lists as shown in Table 1. The implication of this mapping is that different sequences of musical notes produce different tunes. Also, it is implicit that the various operations on arrays and linked lists of musical notes manipulate the sequence of notes differently. So, this difference in the sequences or the effect of the operations is brought out through different tunes. Hence, the similarity and the difference in the musical tunes is analogous to the difference in 803 arrays and linked lists.”
When I wrote my first column in this series, I said that I had an idealized vision of programming in my head, that it would change my brain In strange and unexpected ways. I’m still far from mastering even basic computers science, but I can feel my mind starting to discover new pathways, new frameworks and metaphors for thinking about life. From arranging musical notes to tracking fruit on a shelf, from allocating hours in my week to exercise versus family time, or organizing the editorial calendar here at Stack Overflow, arrays seem to be everywhere. Like the Fibonacci sequence, once you start to understand it, you start to see it everywhere in nature, a hidden layer of structure that was around you all the time.