Mathematics users - elementary mathematics, technicians have more mathematics. So the mathematics teachers could say all we have to teach our students is how to look up a formula and apply it. But from high school on, all of you learned some form of proof, even though not all of you will go on to be a mathematician. Some concept of what a proof is. We don't trust anyone to apply mathematics if he doesn't have the concept of a proof. What it means for a mathematical statement to be something meaningful. We are all physics users when we turn on switches and schools have taught the second law of thermodynamics, even though few of us will actually use it. Basic ideas. Tremendous disparity between traditional foundations of technological society - principles of science to everyone - and computing, which is just hitting the right keys at the right moment. Example of the overreaction to the Y2K problem.
Once a society depends as much on the technology as we do today on the computer and information technology, it's not enough to have a bunch of specialists. principles should be a matter of general education.
When computers first popped up in universities some 40 or 50 years ago, everyone who wanted to use a computer had to learn how to program and the only question was what language to use. Justification was very simple. If someone wanted to use a computer for anything, he had to write his own program. In the 70s and 80s, something very drastic came up. Visicalc was the first spreadsheet. Fantastic innovation. That was simply the first of these fantastic app packages that we all use nowadays. Computer users today simply work with prepackaged applications done by specialists. If they use tools that other people make, then there's no need to teach programming.
If you want to understand the basic ideas that support this technology... How can I tell a politician or someone about what computers can or cannot do?
What would be the simplest possible setting where we can teach programming to high school students - not so that they will all be programmers, but so that they understand what it means to specify concretely what they want to do?
Traditional to take the language of the day. Understandable. But if you take a professional programming language, then you spend the first months or two studying the manual and the libraries. Too much information. What is the simplest setting in which I can try these?
Multikara is so cute! synchronization and stuff...
Main idea: finite state machines are easiest way to learn how to program