OK, I'm sure this is going to cause a flamewar, but I would be
inclined not to even use one of the procedural paradigm languages as
an introduction to computer science. Here are three reasons why
(there are others):
1. Recursion is fundamental to the theoretical underpinnings of
computer science. You just can't follow most of CS theory without
grasping Recursion.
Recursion is hard.
Looping is easy.
Teach students recursion. They won't have any trouble figuring
out how to use while() later on. But trying to teach theory or
algorithms (particularly the analysis of algorithms) to someone
who never grokked recursion is unbelievably painful (I've done
it!).
I remember being forbidden to use any looping constructs in my
first semester of computer science. It was a very helpful
discipline.
2. You don't have to learn how to print. The first thing you always
have to learn with a procedural language is how to break the rules
to get words to appear on the screen (originall, on paper). So
first off you start teaching people how to print stuff, then you
finally get around to the data handling. This is a confusing
distraction.
Avoiding the printing morass is a specific exaple of a general
principle of avoiding language-lawyering. I'd specifically let
C++ out of intro courses for that reason. Java is marginally
better. C is simpler and cleaner, but violates my preferences ##1
and 3.
3. Too much fussing with compilers. Use a structurally simple
language with a read-eval-print loop (lisp, apl, ML), so people
can just type stuff at the console and see if it's working. Yeah,
it's not resource-efficient enough to write an OS, but hey, you've
got to leave SOMETHING for the second semester! ;-)
Cheers,
R
_______________________________________________
TCLUG Mailing List - Minneapolis/St. Paul, Minnesota
Help beta test TCLUG's potential new home: http://plone.mn-linux.org
Got pictures for TCLUG? Beta test http://plone.mn-linux.org/gallery
tclug-list at mn-linux.org
https://mailman.real-time.com/mailman/listinfo/tclug-list