How to teach computational thinking
backchannel.com
backchannel.com
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.
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.
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.
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.
This will never happen I fear. And IMO it's not even a matter of interface issues -- environment, language, etc. -- although matching those would take a lot of effort as well.
But more importantly, I think a lot of people massively under-estimate the sheer number of best-in-class implementations of important algorithms that are locked up in Mathematica's source code. I try to avoid Mathematica whenever an alternative exists, but in a lot of cases there just isn't an alternative. Especially as you get closer to "real" mathematical capabilities.
Others have tried to catch up, but they can't match the output of the engine he built to power Mathematica's development.
Frankly, it seems strange to me that he's not considered a folk hero on HN.
This is what separates successful from struggling.
Many relentlessly focused and driven people have failed miserably, and many vague and sluggish people have succeeded beyond all expectation.
Take me, for instance. I waffled along one step ahead of destitution for thirty years and then got an amazing job without trying even slightly. Now, I'm on track to retire before I'm fifty. Everyone who knows me calls me lazy! What have I done? Why me? I just give generously to charity and keep my head down.
I've found a crucial skill for a happy life is to carefully avoid pointless effort.
It's always a matter of taste when it comes to language design, but I'd have to disagree with this assessment ;-)
> which is necessary to build an artifact of this size without self-immolating
Well, that's certainly not the case. Plenty of huge software artifacts of very impressive quality have been built by non-language-designers.
> Another is that it is a commercial company following a plan
This is certainly true. Or rather, several plans, all of which intersect at common mathematical sub-questions. So then the entire company can leverage effort that's been poured into those components.
> A third is that few people have learned the lessons of Mathematica enough to apply them
Nah. I think the third reason is that Wolfram hires excellent hackers who are also excellent mathematicians. He hires a lot of them. And he puts them to work on the intersectional capabilities I mentioned above.
(Disclaimer: pure conjecture. I've never worked at Wolfram)
If what you're thinking about is Entity and EntityValue, you can't be more wrong: the built-in data is so slow it's impossible to use, even Wolfram employee steer away from it when giving presentations. You clearly can't give a demo where returning a bunch of missing data takes several seconds.
If by 'data' you mean a certain library of algorithmic content, then you might be onto something.
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.
https://www.google.com/search?q="computational+zoology"
Why make this precise claim without checking if it's true? Just an odd way to write an essay.
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.
Do you think we get Sun'n'Run if we order now?
It's a bit of a weird thing to say that 'computational zoology' will be a field since zoology itself (and botany FWIW) has become 'computational zoology'. Instead of comparing the way an arm looks or counting the number of stamen to delineate species, you now use molecular markers (SNPs, SSRs, gene presence/absence) to distinguish species, and you do that using computers instead of your magnifying glass. A recent example would be that 'giraffes are 4 species' paper - traditional zoologists had them down as one species based no the way they look, but the computer (DNA analysis) says they're four different ones.
Biology is really shifting away from the lab to the computer - people who used to do 100% lab-based work now do 50% computer-based, 50% lab-based work (mileage may vary).
"Computational archaeology" is a thing, but it doesn't seem like it's the future of archaeology. IANAA of course ;-) I'm just going off of https://en.wikipedia.org/wiki/Computational_archaeology
>> There's nothing really there ...
Not anymore :) :)
Right now the 1st result in https://www.google.com/search?q=%22computational+zoology%22 is some guys on HN talking about how "Computational Zoology" is certainly NOT viewed as the future of zoology!
and many others: http://bit.ly/ortonacode
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.
> 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.
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.
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.
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.
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.
Computers have permeated almost every aspect of our lives. It makes great sense and empowerment to actually know how they work.
As the saying goes, "knowledge is power".
As the paraphrase from a TV series goes, "power is power". Knowledge is only a leverage. You can't do sh&t about modern cars' overcomplicated design, at best you can complain and grumble.
As a singular consumer you don't have that much power over manufacturers, even if you know the product inside out.
The pharma co is taking advantage of me because I don't know enough chemistry to mix that stuff up at home? Their profits are through the roof!
At some point you have to concede that one man with one life can't know everything, and focus on learning what you care about.
You can be a jack of all trades and master of none, in other words.
So your point is quite valid, one person can't hope to know everything. This is why it's great to find a tool that allows you to dive deeper into the things you do care about.
Teaching people only one part of this chain is just useless.
This is a completely lopsided statement. Computation(via some automaton) is a small subset of what mathematics deals with.
It is possible to deal with concepts and objects mathematically a lot more often than computationally.
https://news.ycombinator.com/item?id=12468479
If we're willing to accept broken software some of the time we can do far more, and in practice this is how the vast majority of software is developed. In this context I think "mathematical" vs "computational" has the colloquial meaning of "proven" vs "empirically tested".
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.)
Teach personal finance if you want to help people avoid financial mistakes. Complement it with decent financial regulation. (Our current system does a pretty good job of protecting consumers overall. They constantly nip away at practices deemed unfair.) No calculus courses needed.