There’s a great story told by Electronic Arts co-founder Bing Gordon about his effort to gain John Madden’s endorsement of the company’s latest video game – football, of course – for the Apple II. In Video Game Invasion, Gordon describes how limited RAM of the era allowed for only seven players on each digital team. “Madden looked at it and said, where’s the other guys? That’s not football!” Gordon reports that Madden didn’t put his stamp of approval on the game until the technology had evolved sufficiently to program all eleven guys onscreen.
Analyzing the parameters of a game and translating it from the real-world, people-playing version to the mobile app realm, invokes a computer science concept called abstraction. Abstraction is, “establishing a level of complexity on which a person interacts with the system, suppressing the more complex details below the current level.” Inherent in the abstraction process of translating a sport to its digital analog is making concrete the complex action of the game. In addition to the gameplay itself, hardware and software constraints must be planned for, including memory allocation – something you really had to take into account when working with those early personal computers.
While coding is currently the big buzzword in education (and it has been posited that Every Child Should Learn to Code), the broader principles of computer science are equally important as writing lines of code using proper commands and syntax. Abstraction is one of those principles and it’s been the focus of my AP Computer Science Principles classes this week. For many students getting started with computer programming, though, the inevitable, “Why do I need to know this?” question pops up when venturing into non-coding turf. They just want to get on with making stuff. But for one of my students, Leanne, learning abstraction made perfect sense.
An athlete, scholar, and all-around amazing high school junior, Leanne had just presented her abstraction project on a theme of personal value to her, soccer. Working in Coggle to create a top-down analysis of “playing soccer” – including low-level specifics defining exactly how many bits are required to store each player name, field position, kick type, score, and more – Leanne transcribed her physical sport into its virtual form. “I love soccer, and I want to pursue robotics and programming, so it seems obvious to me how abstracting the game can lead to me building a soccer app, or even writing control code for a soccer-playing robot. This is not one of those times when I wonder when I’ll use this. I get it!”
Learning the broader, lateral reaches of the discipline (including concepts such as abstraction) ensures that Leanne and others enrolled in our Code.org course develop habits of the computer scientist, not just skills of a coder. And isn’t that who we want developing the next wave of apps for our world… practitioner programmers who are also big conceptual thinkers? Fortunately, with technology progressing fast and far beyond the era when John Madden put the kibosh on EA Games’ seven-man football, Leanne won’t have to modify her soccer abstraction to limit the number of players of the field. But if she gets those robots up and running, there may be a few players out of jobs. I just hope she saves some seats for us human spectators in the stands!