Pascal J. Bourguignon wrote:
Miles Fidelman <mfidel...@meetinghouse.net> writes:
And seems to have turned into something about needing to recreate the
homebrew computing milieu, and everyone learning to program - and
perhaps "why don't more people know how to program?"

My response (to the original question) is that folks who want to
write, may want something more flexible (programmable) than Word, but
somehow turning everone into c coders doesn't seem to be the answer.
Of course not.  That's why there are languages like Python or Logo.


More flexible tools (e.g., HyperCard, spreadsheets) are more of an
answer -  and that's a challenge to those of us who develop tools.
Turning writers, or mathematicians, or artists into coders is simply a
recipe for bad content AND bad code.
But everyone learns mathematics, and even if they don't turn out
professionnal mathematicians, they at least know how to make a simple
demonstration (or at least we all did when I was in high school, so it's
possible).

Similarly, everyone should learn CS and programming, and even if they
won't be able to manage software complexity at the same level as
professionnal programmers (ought to be able to), they should be able to
write simple programs, at the level of emacs commands, for their own
needs, and foremost, they should understand enough of CS and programming
to be able to have meaningful expectations from the computer industry
and from programmers.

Ok... but that begs the real question: What are the core concepts that matter?

There's a serious distinction between computer science, computer engineering, and programming. CS is theory, CE is architecture and design, programming is carpentry.

In math, we start with arithmetic, geometry, algebra, maybe some set theory, and go on to trigonometry, statistics, calculus, ...... and pick up some techniques along the way (addition, multiplication, etc.)

In science, it's physics, chemistry, biology, .... and we learn some lab skills along the way.

What are the core concepts of CS/CE that everyone should learn in order to be considered "educated?" What lab skills? Note that there still long debates on this when it comes to college curricula.

Some of us greybeards (or fuddy duddies if you wish) argue for starting with fundamentals:
- boolean logic
- information theory
- theory of computing
- hardware design
- machine language programming (play with microcontrollers in the lab)
- operating systems
- language design
- analysis
- algorithms

On the other hand, an awful lot of classes, and college degree programs seem to think that coding in Java is all there is, and we're seeing degrees in game design (not that game design is simple, particularly if one goes into things like physics modeling, image processing, massive concurrency, and so forth).

And then there's the school of thought that all you need to know is how to use things - turn on a computer, use common programs, maybe write some Excel macros, and customize their operating environment. (After all, most of us learn to drive, but how many people take an auto shop class anymore.)

Now me... I kind of think that high school should focus more on "computational thinking" than on programming. Yes, kids should write a few programs along the way, but that's the lab component. A more interesting question becomes: is this a separate discipline, or is it something to be incorporated into math and science?


--
In theory, there is no difference between theory and practice.
In practice, there is.   .... Yogi Berra

_______________________________________________
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc

Reply via email to