I recently read Stephen Wolfram’s blog post about the need to teach computational thinking in schools. While I don’t agree that the Wolfram Language is superior to every other modern programming language, from C and Java to Python and Scratch, I think he makes some very compelling points. Some of his writing stretched my thinking in new directions.
Any disciple of the computer science education and “learn to code” movement would agree that students should learn a mix of coding, computational thinking, and computer science. These concepts are so similar that the difference between them is obscure to all but experts in the field.
Should we teach computational thinking without coding? No. Wolfram’s own recommendation requires coding in a language.
Should we teach computational thinking without computer science? No. A complete 21st century education should also teach other computer science concepts such as how to design an algorithm, or how the internet works.
Should we teaching coding without computational thinking or computer science? No. Nobody in the “learn to code” movement argues for this, and every educator would agree with Wolfram's analogy that teaching raw coding syntax alone would be like teaching English handwriting without teaching how to write an essay.
A well-rounded computer science education requires a balance of all three skills: coding, computational thinking and computer science.
The top benefits of the Wolfram Language are that it has a low floor for getting started, its syntax is easy to learn, and it has a wide range of use cases applicable to mathematics, language arts, history, science, art and many other subjects. It’s a particularly great platform for integrating computer science into other subjects of study.
Meanwhile, the Wolfram Language has serious shortcomings for broad educational use: It requires login for all but the simplest use cases, but doesn’t provide any privacy safeguards for young children (required in the U.S. through legislation such as COPPA). Also, a serious user would need to pay for usage, making implementation inaccessible in most schools. Lastly, it’s a bit difficult to use by students who struggle with English reading or writing, such as English language learners or early elementary school students.
More importantly, there is no “best” platform for teaching computer science. As a functional programming language, the Wolfram Language is fantastic for data analysis and exploration, but it can't be used to create a traditional “app.” Most professional software engineers use procedural programming, using exactly the same concepts that Wolfram criticizes: loops, conditionals, event-handlers, and such. Without these concepts, none of today’s software would function. The debate about which is better—functional vs procedural programming—has raged for decades without an answer.
My view is that any student who wants a well-rounded computer science education would benefit from exposure to a mix of both functional and procedural programming. (This is why Code.org’s own K-12 curriculum pathway features both.)
I thoroughly enjoyed reading Wolfram’s blog post. It was both entertaining and educational. I learned some exciting new things about the power of the Wolfram programming environment that I didn't know before, and I enjoyed experimenting with it after I got past some initial hiccups.
While I don’t imagine too many schools will create a pure CS class in this language, I’m particularly excited by the opportunity to use the Wolfram Language as a tool to integrate computer science in other subject areas like math, English, history, chemistry or physics. In fact, as we gear up for the 2016 Hour of Code campaign, with our focus on curating activities for non-computer science classrooms, I’d love to see Wolfram submit one-hour lesson plans for teaching computational thinking with the Wolfram Language exactly as he suggests—with a focus on specific subject areas like English, history, or science.