@benjamin-hall said in Should everyone learn to code?:
@topspin said in Should everyone learn to code?:
@benjamin-hall I have little teaching experience (aside from some 101 tutoring and helping friends with their math exams, but me being bad at teaching is the price they had to pay for passing their exams), but I also think we should teach applying logical thinking and problem solving, to some degree. We teach stuff like algebra and calculus, but everything related to computers seems to be a magic black box to people. I'm thinking of the old Babbage quote of
On two occasions I have been asked, 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.
My whole point was that you can't just teach "applying logical thinking and problem solving" as some generic thing. You can teach algorithms for specific problems and meta-algorithms for slightly more generic problems, but the steps to breaking down the problems are incredibly fact specific. The hands-down best thing we can teach is to love to read. And to be good at reading. That requires a large fact base and non-retarded teaching methods. Basic math facts (to provide number sense) are also critical--I see kids pulling out calculators to divide 64 by 2. Or divide 10000 by 10.
Basically, I see the important things (by rough age level) as:
Early--read to them lots. Lots of words. Talk to them in adult words.
Elementary: Facts. Lots and lots and lots of facts. They're optimized for learning these at this point. So stuff them full in ways that interest them. Basic arithmetic should be hammered here, along with a wide variety of reading.
Middle: Keep them from killing each other. Start algorithms. Basic algebra starts here. Introducing code here can work well--I have colleagues who do just that. It's robot-focused--make it move, make it turn, etc.
High school: Meta-algorithms. Algebra & Stats, Calculus for those who plan to go on to science fields. Code here can happen well. I've had students blow past me in record time--one who makes VR programs, one who I taught Python to who later was doing all sorts of machine learning and other fancy stuff.
Honestly though, the basic steps of problem solving are
- Figure out what the fuck the problem is
- Figure out how the fuck to solve the problem
- Do stuff
- Verify that it actually solved the problem
This is recursive. If you cannot figure out what the problem is, your problem at hand is that you do not have enough knowledge of the area in which the problem occurred. The solution to that problem is to either get the knowledge yourself or hire someone with the knowledge.
I've come across a scary amount of people that fail in the first step, so it may well be taught. Especially the recursive manner of problem solving.