So, one must know how a car works in order to drive?
I'm really torn on this topic. I'm a programmer, and I can understand how understanding how a computer works can be useful. And if I were to be extreme, I would demand that every programmer should not only learn assembly, but write one non-trival program in it. I mean, it's not hard. Tedious, yes, but not hard. But I'm realistic enough to know that not everyone will agree with that sentiment. What worked for me won't work for everyone.
Back in high school (August 1983 to May 1987) I took two classes that taught programming---Advanced Computers (Pascal on Apple ][ computers, each with a single floppy drive, during the 85-86 school year) and Drama (84 through 87). The Advanced Computers is obvious, but Drama?
Yes. Drama.
I preferred working backstage, with a specialization in lights. And at my high school we had a programmable light control board. So, working with a numeric keypad, you would type in a typical "program:"
1@1
2@1
3@1
4@1
5@2
6@3
7@3
(and so on) The first number is the light number (technically, the outlet the light was plugged into) with the second being a dimmer switch (dimmer slide? I'm not sure what to call it). You slide dimmer number 1 up, and lights 1 through 4 would light up. That was the program (I think there were up to 50 or 60 outlets, and 32 dimmers---it's been quite a few years). And I wasn't the only one who knew how to program this (some might argue that this isn't "programming." I would counter---I am instructing the computer on what to do (you could also program a timed transition between multiple settings). Yes, it is not Turing complete, but than again, pure regular expressions aren't either).
And let me say, that computer was more relevant to the students using it, than the Apple ][s. Let's see ... 1985---the computer that year was the Amiga, a 32 bit multitasking computer, followed by the Atari 1040 (also a 32 bit computer, although I'm not sure if it had a multitasking operating system or not); The first 386s had just come out so most PCs where either 286s (mid range) or 8088 (mid to low range) and all 8-bit computers were fading by then. Technology was highly volatile then.
I don't know. The technology has changed too much to really settle one what needs to be taught. Heck, even the concept of a "file" is going away these days.
Would we require people to know the basics about car mechanics if 90% if out jobs were depending on driving a car and if people had about 50 of them on average? I think yes, Sir.
Unless the work from rate is vastly higher or mass transportation vastly better where you are than me, 90% of jobs requiring a car is a huge understatement. People own several cars over their lifetime and it's one of the largest purchases they will ever make. Mistakes in a car are far more dangerous and expensive than mistakes with a computer.
You know, maybe bringing back driver's ed wouldn't be a terrible idea after all.
I wasn't able to find exact numbers, but several sources hinted that the vast majority of the population, in the US at least, do depend on driving a car for work (notably for getting there).
People always bring up cars in these discussions like it's a counter argument, when they're actually a perfect example.
You don't necessarily need to know how a car works to drive one, but if you don't you're completely at the mercy of those who do when something goes wrong. Even when things are going okay, you can only do magic rituals to your car, with no understanding. That's how most people interact with computers. It's a bad thing.
What to teach? The very basics. Some idea of processors, machine code, compilers and interpreters. Skim over computability, Turing completeness, the halting problem. Designing an algorithm to catch edge cases. Conditionals, loops, variables. Strings. I think that's enough to start off with. If they're still interested, set them loose with some real coding classes, or just point them to the Python tutorial.
I'm really torn on this topic. I'm a programmer, and I can understand how understanding how a computer works can be useful. And if I were to be extreme, I would demand that every programmer should not only learn assembly, but write one non-trival program in it. I mean, it's not hard. Tedious, yes, but not hard. But I'm realistic enough to know that not everyone will agree with that sentiment. What worked for me won't work for everyone.
Back in high school (August 1983 to May 1987) I took two classes that taught programming---Advanced Computers (Pascal on Apple ][ computers, each with a single floppy drive, during the 85-86 school year) and Drama (84 through 87). The Advanced Computers is obvious, but Drama?
Yes. Drama.
I preferred working backstage, with a specialization in lights. And at my high school we had a programmable light control board. So, working with a numeric keypad, you would type in a typical "program:"
(and so on) The first number is the light number (technically, the outlet the light was plugged into) with the second being a dimmer switch (dimmer slide? I'm not sure what to call it). You slide dimmer number 1 up, and lights 1 through 4 would light up. That was the program (I think there were up to 50 or 60 outlets, and 32 dimmers---it's been quite a few years). And I wasn't the only one who knew how to program this (some might argue that this isn't "programming." I would counter---I am instructing the computer on what to do (you could also program a timed transition between multiple settings). Yes, it is not Turing complete, but than again, pure regular expressions aren't either).And let me say, that computer was more relevant to the students using it, than the Apple ][s. Let's see ... 1985---the computer that year was the Amiga, a 32 bit multitasking computer, followed by the Atari 1040 (also a 32 bit computer, although I'm not sure if it had a multitasking operating system or not); The first 386s had just come out so most PCs where either 286s (mid range) or 8088 (mid to low range) and all 8-bit computers were fading by then. Technology was highly volatile then.
I don't know. The technology has changed too much to really settle one what needs to be taught. Heck, even the concept of a "file" is going away these days.