I see there are lots of skeptics here. Well, as a developer with kids of 11 and 15 (who are not particularly attracted to the idea of programming, in general), I can say that the Mathematica environment/Wolfram Language is both fantastic and effective. So great that I'm willing to plug it despite not being on Wolfram's payroll.<p>After several years of trying to use this or that other language with the kids in an attempt to stir up some sort of longer term interest and to get them to begin thinking in a problem-solving way, the Wolfram Language is the only one that's managed to produce results and hold their interest.<p>Two of the most key features of the Wolfram Language, IMO, are the very high level of abstraction available through the many built-in functions and, as a result, the quick feedback given to the user. When I compare the reams of code that must be written in any other language to achieve only a fraction of what a Wolfram Language one-liner does, I cringe at the thought of trying to convince someone (who's point isn't to become a developer, but to simply find a solution to a problem) that they need to man-up and type a book before they can expect any appreciable results.<p>The book, An Elementary Introduction to the Wolfram Language, mentioned in the article, is also an amazing resource. It begins with no expectations of prior programming experience and progresses at a decent pace with captivating examples throughout.<p>So, yeah, I'd like an non-commercial (remember that there are free tiers and products) environment+language that's equal (in terms of being very suitable for kids up to domain experts) to what's available from Wolfram, but from what I've seen, there is nothing that comes close. Sure, people will point to the various notebook type environments out there, but these have got quite a ways to go before they reach the breadth and slickness of Wolfram's offerings.
I can't help but feel that the Wolfram Language is less of a programming language and more of a DSL for querying a very precisely defined set of data. I think that the whole thing falls apart once you step outside the boundaries of the data they offer. In that sense, it doesn't seem very well suited for teaching computational thinking at all -- there's no logic involved in letting another person solve a problem for you. The examples show how computers can enrich the work of people in the future, but to me that's entirely different from computational thinking. What's going on here is little more than teaching kids how to use Google efficiently.
<i>I’ve noticed an interesting trend. Pick any field X, from archeology to zoology. There either is now a “computational X” or there soon will be. And it’s widely viewed as the future of the field.</i><p>I was dubious about this particular example and searched for [computational zoology]. There's nothing really there, except for a Craig Thompson making a similar "X could be Zoology in Computational X" claim. Computational Zoology is certainly not viewed as the future of zoology.<p><a href="https://www.google.com/search?q="computational+zoology"" rel="nofollow">https://www.google.com/search?q="computational+zoology"</a><p>Why make this precise claim without checking if it's true? Just an odd way to write an essay.<p>Overall this essay reads like a long, long, long laundry list of features of the Wolfram Language and the Many Wolfram-Branded Products With Many Features, rather than an explanation of "how to teach computational thinking". It's like I wrote an essay "How to use Google for Education", found a thousand educational pages on the internet, and wrote a story in which I googled each one.
If you want to teach computational thinking to kids, here are some much better (and researched) resources:<p><a href="http://csunplugged.org/" rel="nofollow">http://csunplugged.org/</a><p><a href="https://code.org/" rel="nofollow">https://code.org/</a><p><a href="https://scratch.mit.edu/" rel="nofollow">https://scratch.mit.edu/</a><p>and many others: <a href="http://bit.ly/ortonacode" rel="nofollow">http://bit.ly/ortonacode</a><p>I would avoid proprietary tools (like Wolfram or Microsoft/Apple code) and avoid tools designed for professionals, not beginners (like java, python, and the like), until they are ready for them and choose them on their own.
I dunno. This seems a little like the "putting a GUI over the CLI" discussion.<p>> its intellectual core is about formulating things with enough clarity, and in a systematic enough way, that one can tell a computer how to do them.<p>I think the thing to teach is logic. (Make that Logic with a capital "L.") It covers all the basics: clarity of thought, language and its hidden dangers, definitions, systematic thinking, order, etc. Studying Plato and Aristotle is a great place to start.
And we all need to learn radio because its 1897 and radio is the future, or its 1940 and electronics are the future or whatever.<p>You don't need to know how a combustion engine or an electric motor work in order to operate a chainsaw, the tree falls down either way.<p>We have a society, an economy, and a civilization, other people do some of the work, and you do some. We don't need to, and can not know how it all works. Pay someone to do the stuff you don't know. That's how we got to the moon.<p>Why does everyone keep saying we all have to learn how to code and think like computers? We all have to live in human bodies, and I would wager the vast, vast majority of HN knows a lot more about their computer than their anatomy. No one goes around saying we all need to learn internal medicine and human anatomy, because the future is living in a human body.
Real world problem -> Mathematical problem -> algorithm(computation) -> Mathematical solution -> Real world solution.<p>Teaching people only one part of this chain is just useless.
> Mathematical thinking is about formulating things so that one can handle them mathematically, when that’s possible. Computational thinking is a much bigger and broader story, because there are just a lot more things that can be handled computationally.<p>This is a completely lopsided statement. Computation(via some automaton) is a small subset of what mathematics deals with.<p>It is possible to deal with concepts and objects mathematically a lot more often than computationally.
I think the author glosses over the issue of <i>keywords</i>. In order to be productive in the Wolfram Language (or any language), you need to build up an understanding of what operations it supports. There are thousands of such operations, neccesitating a method of looking up the correct operation for each task. And it's not always clear how to glue them together. What kid would think to type "GeoPlot" or "{n,20}" unprompted? In other words, people still need to build a mapping between their internal desires and valid syntax. We are still a long way from being able to compute in the language of thought.
I've said it before: In two thousand years Wolfram will be remembered for being first to computerize thought, as we remember Democritus for being first to describe atomic theory.<p>I truly wish he weren't insufferable (I say this as one who has read his tome) because he deserves greater fame than he has. (But not as much as he thinks he does.)
I might be in the minority here, but I don't think that 'thinking like a programmer' is something that everyone is capable of doing. I think there might be some kind of tyranny in trying to force it on everyone.