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