Re: Call for advice, and possible case study?

2011-06-14 Thread Rebecca Yates
Many thanks for your suggestions! I've sent on a summary of the points 
so far.


Regards,
Rebecca
--
Rebecca Yates
http://staff.lero.ie/ryates/
Lero - The Irish Software Engineering Research Centre
University of Limerick


--
The Open University is incorporated by Royal Charter (RC 000391), an exempt charity 
in England  Wales and a charity registered in Scotland (SC 038302).



Re: Call for advice, and possible case study?

2011-06-13 Thread Russel Winder
On Mon, 2011-06-13 at 14:47 +1200, Peter Gutmann wrote:
 Richard O'Keefe o...@cs.otago.ac.nz writes:
 
 Well in that case, perhaps the language to start with should be Haskell...
 
 Teaching programming by starting people on Haskell is like teaching ESOL
 (English for non-English speakers) by starting them on Klingon [0].

We tried using Miranda (a precursor to Haskell) followed by C++ in the
late 1980s at UCL.  In many ways it was very successful but as will not
surprise anyone here, I think this was mainly due to the energy and
enthusiasm of the teaching.

In long distance hindsight, the main problems were the emphasis on
mathematically related problems, and the REPL.  I remain totally
unconvinced by the emphasis on using REPLs in even the most recent books
on teaching programming languages, cf. Haskell, Scala, and some Python
books.  File editor + execution systems, such as Python's IDLE or
Groovy's GroovyConsole seem to me to be far better tools for teaching --
Emacs doesn't count as lightweight, and IDEs such as Eclipse and
IntelliJ IDEA certainly do not.  I am not sure what has happened to
BlueJ recently.  

If I were still involved in introductory programming teaching (as
opposed to training/education of programming professionals which I do
quite a lot of now), I would be thinking of replacing Java with either
Scala or Groovy depending on whether static typing or dynamic typing was
the approach the rest of the people involved in the teaching preferred.

The Java Platform is a multi language platform, Java, Scala, and Groovy
being the main languages with Clojure in a group on its own following,
with Jython, JRuby, BeanShell, etc. in a third group following that.
The libraries that come as standard, and that which can be obtained from
the Maven repository are the true powerhouse of the Java Platform, not
Java per se.  Using Groovy or Scala to teach how to use the Java
Platform seems entirely natural to me since both remove all the ceremony
that the Java programming language continues to suffer.  And Java 7 will
not fix that.  Nor will Java 8.

And in the modern era concurrency and parallelism should not be a
specialist final year option, it should simply crop up naturally as
integral part of introducing people to programming.  Groovy+GPars and
Scala allow for this, Java does not.

 Peter.
 
 [0] For those unfamiliar with it, it's been specifically designed to be unlike
 any other language spoken on earth.
 

-- 
Russel.
=
Dr Russel Winder  t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@russel.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


signature.asc
Description: This is a digitally signed message part

-- 
The Open University is incorporated by Royal Charter (RC 000391), an exempt 
charity in England  Wales and a charity registered in Scotland (SC 038302).


Re: Call for advice, and possible case study?

2011-06-13 Thread Alberto Sampaio
I appreciate that comparison and I agree in general. But it would also depends 
on the informatics program goals. That is, if it is more computing science, 
more engineering, more IS, and so on.

Possibly, it is because of such a lack of agreement about an alternative first 
language that Java is still being used as a first language in so many 
informatics programs. So, we will continue to be ruled by a minority (if it is 
a minority). :-)

regards
alberto

On Jun 13, 2011, at 3:47 AM, Peter Gutmann wrote:

 Richard O'Keefe o...@cs.otago.ac.nz writes:
 
 Well in that case, perhaps the language to start with should be Haskell...
 
 Teaching programming by starting people on Haskell is like teaching ESOL
 (English for non-English speakers) by starting them on Klingon [0].
 
 Peter.
 
 [0] For those unfamiliar with it, it's been specifically designed to be unlike
   any other language spoken on earth.
 
 -- 
 The Open University is incorporated by Royal Charter (RC 000391), an exempt 
 charity in England  Wales and a charity registered in Scotland (SC 038302).
 
 




Re: Call for advice, and possible case study?

2011-06-13 Thread Allen Higgins
Hi Rebecca

With due respect to the discussion on relative merits of Java, Haskell, 
Miranda, Python etc. of which consensus is undesirable anyway (imho).

Many students disengage at the first mention of language basics.
But they desperately want to make something themselves, generally a game. 

Could I suggest you consider the goal (and thus the design) of the introductory 
course to be more important than types, loops, conditionals syntax etc.

Design the learning environment around achieving a concrete goal (game), give 
plenty of starting points, working prototypes, even finished product that could 
be re-tasked. 
Structure perhaps as tutorials bookending self-directed learning stages, with 
sufficient support from more experienced programmers.
Consider adopting some of the methods and practices of Problem Based Learning 
(PBL) which emphasises group aspects of learning in teams and as a consequence 
also develops the students' social and organisational maturity.

Thinking in terms of best Language, programming environment, IDEs etc really 
gets in the way and shouldn't be the subject matter of or in itself for 
beginners or anyone else.

Regards
Allen



-- 
The Open University is incorporated by Royal Charter (RC 000391), an exempt 
charity in England  Wales and a charity registered in Scotland (SC 038302).



Re: Call for advice, and possible case study?

2011-06-13 Thread Raoul Duke
On Mon, Jun 13, 2011 at 1:28 AM, Allen Higgins allen.higg...@ucd.ie wrote:
 Many students disengage at the first mention of language basics.
 But they desperately want to make something themselves, generally a game.
 Could I suggest you consider the goal (and thus the design) of the 
 introductory course to be more important than types, loops, conditionals 
 syntax etc.

yeah, i'd believe that a strong goal (with quick incremental happy
feeling checkpoint demo milestones along the way) will be a good way
for people to use their personal motivation to overcome whatever
hurdles there might be. there will /always/ be hurdles, no matter what
the development system.

sincerely.

-- 
The Open University is incorporated by Royal Charter (RC 000391), an exempt 
charity in England  Wales and a charity registered in Scotland (SC 038302).



Re: Call for advice, and possible case study?

2011-06-13 Thread Richard O'Keefe
One other alternative that might be worth a mention is the
Processing environment.  It's based on Java, but you don't
_start_ with the full horror thereof, and it has the clunky
edit-run approach that Russel Winder advocates, but it
does get you drawing fancy pictures fairly quickly.


-- 
The Open University is incorporated by Royal Charter (RC 000391), an exempt 
charity in England  Wales and a charity registered in Scotland (SC 038302).



Re: Call for advice, and possible case study?

2011-06-12 Thread Peter Gutmann
Richard O'Keefe o...@cs.otago.ac.nz writes:

Well in that case, perhaps the language to start with should be Haskell...

Teaching programming by starting people on Haskell is like teaching ESOL
(English for non-English speakers) by starting them on Klingon [0].

Peter.

[0] For those unfamiliar with it, it's been specifically designed to be unlike
any other language spoken on earth.

-- 
The Open University is incorporated by Royal Charter (RC 000391), an exempt 
charity in England  Wales and a charity registered in Scotland (SC 038302).



RE: Call for advice, and possible case study?

2011-06-10 Thread Stasha Lauria
I fully agree on both:

1-  Don't teach Java.

2-  before learning _Java_, it pays to learn something about _programming_, and 
that's definitely easier using Python than using Java.

This is based on my personal experience of teaching programming to First year 
undergraduate students. 

Regards,
Stasha

From: Richard O'Keefe [o...@cs.otago.ac.nz]
Sent: 10 June 2011 01:38
To: Rebecca Yates
Cc: PPIG Listserve
Subject: Re: Call for advice, and possible case study?

On 9/06/2011, at 11:53 PM, Rebecca Yates wrote:

 The aim of the program is to give the participants a strong grounding in how 
 computers work, how networks and the Internet works, and how to write 
 software using the Java programming language and a variety of other software 
 tools.

 The participants will understand how quality software is developed, how to 
 find information to help them solve problems, and hopefully they will learn 
 that programming is a fun and rewarding activity.

 This is because they're having trouble hiring good graduates, so they are 
 hoping to nurture a few of their own. Does PPIG have any advice for them?

Yes.  Don't teach Java.

Java has some seriously strange syntax which can only be justified historically.
Suppose you want to start with printing the sum of 3 and 4.
Compare

public class SumOfThreeAndFour {
public static void main(String[] args) {
System.out.println(3+4);
}
}

with

print 3+4;


We have an introductory paper (COMP 160 : www.cs.otago.ac.nz/comp160) that
uses Java.  That page has a link to http://norvig.com/21-days.html, which
the Annadale Technology people would benefit from reading.
We have an introductory paper (COMP 150 : the web material is locked up in
Blackboard, sorry) that uses Python.  I'm not involved with either paper,
but the HOD, who runs COMP 150, has been very happy with the results, and
it is now recommended as suitable ... as preparation for .. COMP 160.
That is, before learning _Java_, it pays to learn something about
_programming_, and that's definitely easier using Python than using Java.

Python is certainly good enough to do serious Internet programming and
graphics.

There seems to be something about Java that rots the mind; students seem
to have real trouble producing quality software in it.  There are some
amazing power tools (like JML checkers) that you can plug into Eclipse,
-but- you have to be a pretty good programmer to get any benefit from them.
Eclipse seems to be mainly useful for helping people write vast amounts of
code that would not be necessary in a higher level language.

If Annadale insist on sticking with Java, they should look at the BlueJ
environment and then look at DrJava, environments designed for beginners.
I must say that I find the plain old interactive text interface of Python
more supportive than BlueJ...

Disclaimer:  I am not a Python programmer, but I have colleagues and
have supervised students who are.  I've found their code easy to read,
even though I couldn't (yet) have written it.







--
The Open University is incorporated by Royal Charter (RC 000391), an exempt 
charity in England  Wales and a charity registered in Scotland (SC 038302).




RE: Call for advice, and possible case study?

2011-06-10 Thread Russel Winder
On Fri, 2011-06-10 at 19:47 +0100, Stasha Lauria wrote:
 I fully agree on both:
 
 1-  Don't teach Java.
 
 2-  before learning _Java_, it pays to learn something about _programming_, 
 and that's definitely easier using Python than using Java.
 
 This is based on my personal experience of teaching programming to First year 
 undergraduate students. 

Graham Roberts at UCL is using Groovy and Sarah Mount at Wolverhampton
and James Shuttleworth at Coventry are using Python to great effect.
The folk at Leeds are using Python also I believe.

The big problem though is the the issue of type.   Believers in static
strong typing will object to the use of languages that work with dynamic
typing even though learners seem to find it easier to do things without
having to worry about types in the first instance.  I guess someone
somewhere needs to do some experimentation rather than there just be
anecdotal evidence and advocacy research?

-- 
Russel.
=
Dr Russel Winder  t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@russel.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


signature.asc
Description: This is a digitally signed message part

-- 
The Open University is incorporated by Royal Charter (RC 000391), an exempt 
charity in England  Wales and a charity registered in Scotland (SC 038302).


RE: Call for advice, and possible case study?

2011-06-10 Thread Stasha Lauria
In this paper 
(http://www.ics.heacademy.ac.uk/italics/download.php?file=italics/vol10iss1/pdfs/paper10.pdf)
 we have presented a quantitative evaluation. These initial results suggest 
that the python approach leads to some improvements for learning introductory 
programming concepts (such as loops, conditional, etc) by students.

stasha





From: Russel Winder [rus...@russel.org.uk]
Sent: 10 June 2011 20:07
To: Stasha Lauria
Cc: Richard O'Keefe; Rebecca Yates; PPIG Listserve
Subject: RE: Call for advice, and possible case study?

On Fri, 2011-06-10 at 19:47 +0100, Stasha Lauria wrote:
 I fully agree on both:

 1-  Don't teach Java.

 2-  before learning _Java_, it pays to learn something about _programming_, 
 and that's definitely easier using Python than using Java.

 This is based on my personal experience of teaching programming to First year 
 undergraduate students.

Graham Roberts at UCL is using Groovy and Sarah Mount at Wolverhampton
and James Shuttleworth at Coventry are using Python to great effect.
The folk at Leeds are using Python also I believe.

The big problem though is the the issue of type.   Believers in static
strong typing will object to the use of languages that work with dynamic
typing even though learners seem to find it easier to do things without
having to worry about types in the first instance.  I guess someone
somewhere needs to do some experimentation rather than there just be
anecdotal evidence and advocacy research?

--
Russel.
=
Dr Russel Winder  t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@russel.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


-- 
The Open University is incorporated by Royal Charter (RC 000391), an exempt 
charity in England  Wales and a charity registered in Scotland (SC 038302).



Re: Call for advice, and possible case study?

2011-06-10 Thread John Daughtry
My two cents...

Use whatever route to Java proficiency the instructor happens to feel most
passionately about. If they really believe the argument that
INSERT_LANGUAGE_HERE first works well, then let them do it that way. If
they feel strongly that they can teach Java first, let them do it that way.

The primary component of a curriculum is the instructor and their belief and
excitement for what they are doing. Someone who believes in teaching Java
first and is excited about doing it that way (and slightly skeptical of
Python) will have much greater success teaching Java first as opposed to
Python then Java.

If the instructor is apathetic about the approach, then fire the instructor
and hire another who cares enough about the topic to have opinions (even if
those opinions are tenuous).

No matter the route to learning Java, the final learning objectives are the
same for this company. They know what they think they want employees to
know. The various routes to getting there each have positive and negative
trade-offs. But, they are a moot point without a decent instructor who
believes in the students, the learning objectives, and the route to which
the learning objectives are accomplished within the context of the
curriculum.

There are countless papers over decades on why one approach is better than
another. Their utility isn't in actually finding the right method, but
instead as a mechanism for instructors to find the method that works for
them given their interests, strengths, abilities, and experience.

As a simple example, one instructor may be fantastic at the Socratic method
while another cannot do it at all. Likewise, one may be really good at
explaining the relevance and utility and history of the Java syntax as a
teaching instrument in itself, while another hates it so much that they
cannot make themselves be excited about it.

John Daughtry




On Fri, Jun 10, 2011 at 3:07 PM, Russel Winder rus...@russel.org.uk wrote:

 On Fri, 2011-06-10 at 19:47 +0100, Stasha Lauria wrote:
  I fully agree on both:
 
  1-  Don't teach Java.
 
  2-  before learning _Java_, it pays to learn something about
 _programming_, and that's definitely easier using Python than using Java.
 
  This is based on my personal experience of teaching programming to First
 year undergraduate students.

 Graham Roberts at UCL is using Groovy and Sarah Mount at Wolverhampton
 and James Shuttleworth at Coventry are using Python to great effect.
 The folk at Leeds are using Python also I believe.

 The big problem though is the the issue of type.   Believers in static
 strong typing will object to the use of languages that work with dynamic
 typing even though learners seem to find it easier to do things without
 having to worry about types in the first instance.  I guess someone
 somewhere needs to do some experimentation rather than there just be
 anecdotal evidence and advocacy research?

 --
 Russel.

 =
 Dr Russel Winder  t: +44 20 7585 2200   voip:
 sip:russel.win...@ekiga.net
 41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@russel.org.uk
 London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


 --
 The Open University is incorporated by Royal Charter (RC 000391), an exempt
 charity in England  Wales and a charity registered in Scotland (SC 038302).




Re: Call for advice, and possible case study?

2011-06-09 Thread Richard O'Keefe

On 9/06/2011, at 11:53 PM, Rebecca Yates wrote:
 
 The aim of the program is to give the participants a strong grounding in how 
 computers work, how networks and the Internet works, and how to write 
 software using the Java programming language and a variety of other software 
 tools.
 
 The participants will understand how quality software is developed, how to 
 find information to help them solve problems, and hopefully they will learn 
 that programming is a fun and rewarding activity.
 
 This is because they're having trouble hiring good graduates, so they are 
 hoping to nurture a few of their own. Does PPIG have any advice for them?

Yes.  Don't teach Java.

Java has some seriously strange syntax which can only be justified historically.
Suppose you want to start with printing the sum of 3 and 4.
Compare

public class SumOfThreeAndFour {
public static void main(String[] args) {
System.out.println(3+4);
}
}

with

print 3+4;


We have an introductory paper (COMP 160 : www.cs.otago.ac.nz/comp160) that
uses Java.  That page has a link to http://norvig.com/21-days.html, which
the Annadale Technology people would benefit from reading.
We have an introductory paper (COMP 150 : the web material is locked up in
Blackboard, sorry) that uses Python.  I'm not involved with either paper,
but the HOD, who runs COMP 150, has been very happy with the results, and
it is now recommended as suitable ... as preparation for .. COMP 160.
That is, before learning _Java_, it pays to learn something about
_programming_, and that's definitely easier using Python than using Java.

Python is certainly good enough to do serious Internet programming and
graphics.

There seems to be something about Java that rots the mind; students seem
to have real trouble producing quality software in it.  There are some
amazing power tools (like JML checkers) that you can plug into Eclipse,
-but- you have to be a pretty good programmer to get any benefit from them.
Eclipse seems to be mainly useful for helping people write vast amounts of
code that would not be necessary in a higher level language.

If Annadale insist on sticking with Java, they should look at the BlueJ
environment and then look at DrJava, environments designed for beginners.
I must say that I find the plain old interactive text interface of Python
more supportive than BlueJ...

Disclaimer:  I am not a Python programmer, but I have colleagues and
have supervised students who are.  I've found their code easy to read,
even though I couldn't (yet) have written it.







-- 
The Open University is incorporated by Royal Charter (RC 000391), an exempt 
charity in England  Wales and a charity registered in Scotland (SC 038302).