[Bluej-discuss] bluej-discuss Digest, Vol 52, Issue 12

Stephen Bloch sbloch at adelphi.edu
Sun Oct 14 18:25:13 BST 2007


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 (see 
http://www.teach-scheme.org), and once students have grasped a bunch 
of basic concepts (variables, functions, requirements analysis, 
testing, function composition, re-use, helper functions, 
conditionals, classes with fields, polymorphism, recursion, 
higher-order functions, etc.) switch to Java and show how the same 
concepts are implemented in a more "mainstream" language.  Others use 
Python, Alice, or a tiny pseudo-subset of Java as a starting point.

>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.

>    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.

-- 
						Dr. Stephen Bloch
						Math/CS Department
						Adelphi University


More information about the bluej-discuss mailing list