[Bluej-discuss] bluej-discuss Digest, Vol 52, Issue 12
Aryeh M. Friedman
aryeh.friedman at gmail.com
Sun Oct 14 14:44:40 BST 2007
Stephen Bloch wrote:
> Aryeh M. Friedman" <aryeh.friedman at gmail.com> writes:
>
>
>> 1. Java is likely already too complex for a true beginners language but
>> since qbasic is not around any more it is the best we have
>>
>
> A number of the people on this list agree: Java is too complex to
> teach as a first programming language, no matter how good the IDE.
> Many of us use Scheme as a first language
>
What is worse too much semantic overhead or the syntax from hell??!?!?!?
the best compermise I have found between the two from a teaching stand
point is Mozart (www.mozart.org)... at one level it is a very
semantically/syntactical clean lang but at a deeper level incorporates
some features *I WISH* java did like real data flow variables vs. this
hard to visualize mutex stuff.... an other advantage is if taught right
(see Peter VonRoy's book [don't have an URL]) it introduces each concept
at exactly the right time... the only problem is the conceptual
metaphore the VonRoy (and Mozart to some extent) is not well geared for
undergrads (just a matter of clearer writing I think)
>> 2. Control flow is the single most confusing part of learning
>> programming for most students.... 3. Almost all beginners have a
>> very hard time mentally visualizing how there program is executed.
>> What I mean by this is they often get then and else clauses mixed up
>> and such or complex statements completely baffle them.
>>
>
> Some would respond to these problems by using the jGrasp IDE, with
> its automatic code annotations for control flow. However, those
> annotations don't say anything about the content of a Boolean
> expression, only which code will be executed when. Another approach
> is to use a functional, rather than an imperative/sequential,
> approach in which the control flow and the execution model are
> typically much simpler and more transparent.
>
Mozart is functional and it is clearer ***BUT*** almost all functional
langs are too dynamic for easy debugging and it is almost not to
introduce some very non-mainstream concepts like monad's.
>
>> Specifically how to construct
>> logically correct conditions (I was amazed when I found not a single one
>> of my class mates or tutoring students [about 150 total] had ever heard
>> of DeMorgan's Law).
>>
>
> That should be remedied in a Discrete Math course that all
> programming students take in the first year; a programming course
> shouldn't need to teach this, only to give concrete examples of it.
> Coordinate with your Discrete Math instructor.
>
I guess if my CC wasn't so dysfunctional and I wasn't the lowest person
on the food chain I would look into this.... politically it would be
impossible to do so
More information about the bluej-discuss
mailing list