I think the most useful thing I ever learned in a CS class was from Michael Rabin: that the best way to solve a problem is often to redefine it as something that's easier to solve. This turns out to be applicable to practically every kind of work.
I think the most useful thing I ever learned in a CS class was from Michael Rabin: that the best way to solve a problem is often to redefine it as something that's easier to solve. This turns out to be applicable to practically every kind of work.
Tapes are actually bad. They teach too much; they’re too painless. A man who learns that way doesn’t know how to learn any other way. He’s frozen into whatever position he’s been taped. Now if a person weren't given tapes but were forced to learn by hand, so to speak, from the start; why, then he’d get the habit of learning, and continue to learn.
I've never questioned the goal of schools to develop learning and thinking skills, rather than just convey content. However, the question is with what content should those skills be developed? It is that choice that requires a delicate balance between fundamental and practical content.
In this case the difference isn't so much that I chose a different problem to solve as that I chose any problem at all. I get the impression most language design is driven not so much by explicit goals as by a collection of half-formulated principles.