Re: Call for advice, and possible case study?
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?
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?
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?
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?
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?
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?
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?
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?
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?
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?
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?
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).