by Julia Steiny
Kathi Fisler has been teaching Computer Science at Worcester Polytechnical Institute for 13 years, a veritable aeon in this young field. "The world wide web came out when I started graduate school in 1991. There were no phones, and what laptops there were, especially in schools, were "paperweights." Who knew what to do with them?
All told, the field of Computer Science (C.S.) is only 60 years old. Math, Literacy, Science and History have been developing for millennia. And back in the 1990s, only people going into the field studied computing. But then the electronics market exploded as devices got smaller, faster, better, and ubiquitous.
She muses, "Now it's a totally different world. But while the C.S. community is trying to get a handle on what broad education might prepare students for the digital world, there's no single definition of what Computer Science even is. With so many interpretations, some colleges say no, we won't give you credit for taking the computer-science AP course. So how do you make a standard test so colleges know what to expect, without common expectations?"
Well, first and most importantly, understand the giant distinction between coding and programming. Media efforts are trying to attract kids, especially girls, to coding. But coding is to programming what spelling and grammar are to writing — structurally essential, but not the point. They're tools to make it work. A whole lot of thinking and designing needs to take place first.
Fisler and her colleagues call the design work "modeling."
In the 1990s Fisler's husband, also a computer scientist, was a grad student at Rice University, working with Matthias Felliesen's team just as they began to invent what became Program by Design (PxD, discussed in last week's column). PxD was an effort to undo the damage done by well-meaning high schools that taught students to code, in whatever computer language, as if learning grammar and spelling would somehow add up to real writing in the end. It was, if you will, bass ackwards.
Since Fisler was literally married to the work, the all-male team asked her to join them. They wanted a maximally diverse group of computer scientists, students, and K-12 teachers to develop an online, free high-school and early-college curriculum. PxD delays the specific issues of coding to the latter stages of learning. Instead, it starts with helping students think through solving problems with data, in computer-science terms.
For the record, the leaders of that original team have stayed with PxD, far flung though they all are; Felleisen is now at Northeastern University.
Let's say you're going to write a program.
Fisler says, "The first question is: What is this rich set of data I'm trying to process? What PxD does is expose students to increasingly rich kinds of data and let the programs proceed from there. Let's start with simple data, like a shopping list."
Okay, so what do you want to do with the data? Or as Fisler would say, "How do you want to organize the data narrative?" A super-simple program might sort the list alphabetically. A database might know where each item is, to the program uses the list to map an efficient route through the grocery store. Perhaps you're sophisticated and want to track your lists, so your program asks if you meant to pick up coffee, since it wasn't on your list.
The PxD curriculum keeps upping the complexity of the data sets, moving on, say, to family trees. Adding a person to a party list is easier than adding a person to a family tree, because family members come with other connections. What the data means to you and what you want to do with it informs the model you develop.
Implementation is next. How am I going to get this done? Once you figure that out, you have your model, a plan that includes the purpose, the data and the strategy for accomplishing the purpose.
With the model in hand, it's finally time to concentrate on the code — the grammar, syntax, spelling — that will make the program itself work.
Fisler makes an analogy to my writing. First, I outline extensively so I'm clear what point I'm trying to make, what evidence I'm using, and how I will structure the argument. This "modeling" is the hardest and most time-consuming part. When I'm ready to code, I do it in English, in a sloppy but concrete first draft. Lastly, I polish, call it "debug," so my little verbal machine works, which is to say, does what I want it to.
In ed-speak, this is critical thinking on steroids.
Because modeling has also been around for millennia. Computer science gives a name to the time-honored sequence of thinking, designing and writing, independent of any specific computer language. It's the "broad education (that) might prepare students for the digital world" — the ultimate transferrable skill. And the skills involved in modeling are much more useful, intriguing and fun, for all academic disciplines, than learning strict compliance with the rules. For that reason, along with so many others, students as young a 6th grade should be learning computer science, using Fisler and PxD's approach.
Julia Steiny is a freelance columnist who also blogs about Restorative Practices and Restorative Justice. After serving on the Providence School Board, she became the Providence Journal's education columnist for 16 years, and has written for many other outlets. As the founding director of the Youth Restoration Project, she's been building demonstration projects in Rhode Island since 2008. She analyses data and provides communications consulting on Information Works! and the RIDataHUB, through The Providence Plan. For more detail, seejuliasteiny.com or contact her at [email protected] or 24 Corliss Street #40022, Providence, RI 02904.