RE: Choice of introductory programming language to a freshman class

2009-04-07 Thread Enda Dunican
I was under the impression that the idea behind a discussion list
was to allow people to express their opinions. I simply expressed an opinion. 
One could accuse your email of attempting to stifle freedom of expression, but 
I'd never agree with such an accusation!

Enda

Or it could have been an excellent exchange of people's experiences with
an interesting pool of ideas created.

It is a pity this email stifled that.

 Enda
 
 
 Can I perhaps pre-empt a pile of responses in this soon-to-be-long
 thread with 
 my following meta-response:
 
 I think you should use insert favourite language here because insert
  standard reasons here.  In particular I've run into problems with
 insert
  non-favourite language here because insert anecdote here.  You may
 also
  want to take into account insert checklist of features of favourite
 language
  here which isn't handled too well by insert non-favourite language
 here.
  Disclaimer: This worked for me but may not work for you, so shop
 around.
 
 If everyone could just fill out the template it'd save a lot of time.
 
 Peter :-).
 
-- 
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: http://www.russel.org.uk/



RE: Choice of introductory programming language to a freshman class

2009-04-07 Thread Russel Winder
Enda,

On Tue, 2009-04-07 at 09:15 +0100, Enda Dunican wrote:
 I was under the impression that the idea behind a discussion list
 was to allow people to express their opinions. I simply expressed an
 opinion. One could accuse your email of attempting to stifle freedom
 of expression, but I'd never agree with such an accusation!

I am clearly feeling grumpy this morning, and the pain killers are not
working which just makes things worse.  Sorry.

-- 
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: http://www.russel.org.uk/


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


Re: Choice of introductory programming language to a freshman class

2009-04-07 Thread Kari Laitinen


   It indeed seems that there is no consensus over
   what is a good language to start studying computer
   programming.

   I think that almost any language will do when only
   the basic things are taught. On the page
 http://www.naturalprogramming.com/all_example_programs.html
   I provide about 100 simple programs written with four
   different languages. If a student studies, say,
   the Java programs, he or she should be able to easily
   move to other languages by using different program
   versions.

   Another important question is that what a student
   should know before he or she starts studying
   computer programming. I think it is important to
   understand how a COMPUTER works before one starts
   studying COMPUTER programming. To study the basics
   of computing, I provide a very simple computer at
 http://www.naturalprogramming.com/IC8/index_for_ic8.html

   With this simple computer it is possible, in less than
   10 hours, to explain
  - how the main memory works
  - how machine instructions are executed
  - what compilation means
  - why high-level languages should be favored

   We have been teaching this computer at our school
   for three years before the actual programming courses.
   Most students think that it is a useful tool.
   Later on I hope to be able to provide more accurate
   data concerning how the ability to understand this
   imaginary computer corresponds with the ability to
   become a good programmer.

   Kari Laitinen
   School of Engineering
   Oulu University of Applied Sciences, Finland


Bennett Kankuzi wrote:

Dear All,

Many thanks to everyone for taking your time to air out your views on
the question I had posted on the forum. For now I will use C since the
students will need to learn the art of problem solving but most
importantly they also need to learn the basics of programming like
data types, looping constructs, pointers etc. My hope is that  later
on they shall be able to transfer this basic programming knowledge in
learning other languages like Java and C++.

I must also say that from what I get across this thread of discussion,
Scheme and Python seem also to be good alternatives. I will definitely
try them in the forthcoming semesters. I have done a bit of
programming in Python and PERL on a Unix system but not yet tried
Scheme although it seems to be a very good alternative.

Once again many thanks for the insights!

Bennett




2009/4/6 Walter Milner w.w.mil...@bham.ac.uk:

A question to the OP: is it true that the choice must be between C, C++
and Java? Or might other languages be considered?

-Original Message-
From: Jay McCarthy [mailto:jay.mccar...@gmail.com]
Sent: 06 April 2009 13:21
To: Bennett Kankuzi
Cc: Ppig-Discuss-List
Subject: Re: Choice of introductory programming language to a freshman
class

I've had a lot of success using the How to Design Programs textbook
(http://www.htdp.org/), which uses a series of Scheme-based languages
explicitly designed for beginners. The TeachScheme, ReachJava!
(http://www.teach-scheme.org/) curriculum uses this book in a
two-semester sequence where students learn programming in the first
semester with HtDP and these Scheme-derived languages, then transition
to Java and objects in the second semester.

I'm happy to provide additional help getting you running in this
curriculum if you'd like.

Jay McCarthy

--
Jay McCarthy j...@cs.byu.edu
Assistant Professor / Brigham Young University
http://teammccarthy.org/jay

The glory of God is Intelligence - DC 93







RE: Choice of introductory programming language to a freshman class

2009-04-07 Thread Walter Milner
So Kari raises a corollary - to what extent does it matter what mental
model of a computer the student has?

But this is also on the dimension of abstraction. For example, 'how main
memory works'. This might be at the level of addresses, binary contents
and read/write operations. Or at the more concrete level of logic gates,
or below that, semi-conductor fabrication. Or above all of it, variables
which persist values during execution. Which is best?
   

-Original Message-
From: Kari Laitinen [mailto:kari.laiti...@oamk.fi] 
Sent: 07 April 2009 10:50
To: Bennett Kankuzi
Cc: Ppig-Discuss-List
Subject: Re: Choice of introductory programming language to a freshman
class


It indeed seems that there is no consensus over
what is a good language to start studying computer
programming.

I think that almost any language will do when only
the basic things are taught. On the page
  http://www.naturalprogramming.com/all_example_programs.html
I provide about 100 simple programs written with four
different languages. If a student studies, say,
the Java programs, he or she should be able to easily
move to other languages by using different program
versions.

Another important question is that what a student
should know before he or she starts studying
computer programming. I think it is important to
understand how a COMPUTER works before one starts
studying COMPUTER programming. To study the basics
of computing, I provide a very simple computer at
  http://www.naturalprogramming.com/IC8/index_for_ic8.html

With this simple computer it is possible, in less than
10 hours, to explain
   - how the main memory works
   - how machine instructions are executed
   - what compilation means
   - why high-level languages should be favored

We have been teaching this computer at our school
for three years before the actual programming courses.
Most students think that it is a useful tool.
Later on I hope to be able to provide more accurate
data concerning how the ability to understand this
imaginary computer corresponds with the ability to
become a good programmer.

Kari Laitinen
School of Engineering
Oulu University of Applied Sciences, Finland


Bennett Kankuzi wrote:
 Dear All,
 
 Many thanks to everyone for taking your time to air out your views on 
 the question I had posted on the forum. For now I will use C since the

 students will need to learn the art of problem solving but most 
 importantly they also need to learn the basics of programming like 
 data types, looping constructs, pointers etc. My hope is that  later 
 on they shall be able to transfer this basic programming knowledge in 
 learning other languages like Java and C++.
 
 I must also say that from what I get across this thread of discussion,

 Scheme and Python seem also to be good alternatives. I will definitely

 try them in the forthcoming semesters. I have done a bit of 
 programming in Python and PERL on a Unix system but not yet tried 
 Scheme although it seems to be a very good alternative.
 
 Once again many thanks for the insights!
 
 Bennett
 
 
 
 
 2009/4/6 Walter Milner w.w.mil...@bham.ac.uk:
 A question to the OP: is it true that the choice must be between C, 
 C++ and Java? Or might other languages be considered?

 -Original Message-
 From: Jay McCarthy [mailto:jay.mccar...@gmail.com]
 Sent: 06 April 2009 13:21
 To: Bennett Kankuzi
 Cc: Ppig-Discuss-List
 Subject: Re: Choice of introductory programming language to a 
 freshman class

 I've had a lot of success using the How to Design Programs textbook 
 (http://www.htdp.org/), which uses a series of Scheme-based languages

 explicitly designed for beginners. The TeachScheme, ReachJava!
 (http://www.teach-scheme.org/) curriculum uses this book in a 
 two-semester sequence where students learn programming in the first 
 semester with HtDP and these Scheme-derived languages, then 
 transition to Java and objects in the second semester.

 I'm happy to provide additional help getting you running in this 
 curriculum if you'd like.

 Jay McCarthy

 --
 Jay McCarthy j...@cs.byu.edu
 Assistant Professor / Brigham Young University 
 http://teammccarthy.org/jay

 The glory of God is Intelligence - DC 93

 
 
 



Re: Choice of introductory programming language to a freshman class

2009-04-07 Thread Kari Laitinen


   Thanks for the comment, Walter.

   My words in the previous message were, as usual,
   inaccurate. I should have said that it is important
   that a student knows how a computer works in a
   LOGICAL sense. This means, for example, that everything is stored
   as binary numbers in the registers and in the main
   memory, and that the contents of a memory location
   are lost when something new is written into the
   memory location. It is not absolutely necessary
   to understand the electronic details of a
   computer.


Walter Milner wrote:

So Kari raises a corollary - to what extent does it matter what mental
model of a computer the student has?

But this is also on the dimension of abstraction. For example, 'how main
memory works'. This might be at the level of addresses, binary contents
and read/write operations. Or at the more concrete level of logic gates,
or below that, semi-conductor fabrication. Or above all of it, variables
which persist values during execution. Which is best?
   


-Original Message-
From: Kari Laitinen [mailto:kari.laiti...@oamk.fi] 
Sent: 07 April 2009 10:50

To: Bennett Kankuzi
Cc: Ppig-Discuss-List
Subject: Re: Choice of introductory programming language to a freshman
class


It indeed seems that there is no consensus over
what is a good language to start studying computer
programming.

I think that almost any language will do when only
the basic things are taught. On the page
  http://www.naturalprogramming.com/all_example_programs.html
I provide about 100 simple programs written with four
different languages. If a student studies, say,
the Java programs, he or she should be able to easily
move to other languages by using different program
versions.

Another important question is that what a student
should know before he or she starts studying
computer programming. I think it is important to
understand how a COMPUTER works before one starts
studying COMPUTER programming. To study the basics
of computing, I provide a very simple computer at
  http://www.naturalprogramming.com/IC8/index_for_ic8.html

With this simple computer it is possible, in less than
10 hours, to explain
   - how the main memory works
   - how machine instructions are executed
   - what compilation means
   - why high-level languages should be favored

We have been teaching this computer at our school
for three years before the actual programming courses.
Most students think that it is a useful tool.
Later on I hope to be able to provide more accurate
data concerning how the ability to understand this
imaginary computer corresponds with the ability to
become a good programmer.

Kari Laitinen
School of Engineering
Oulu University of Applied Sciences, Finland


Bennett Kankuzi wrote:

Dear All,

Many thanks to everyone for taking your time to air out your views on 
the question I had posted on the forum. For now I will use C since the


students will need to learn the art of problem solving but most 
importantly they also need to learn the basics of programming like 
data types, looping constructs, pointers etc. My hope is that  later 
on they shall be able to transfer this basic programming knowledge in 
learning other languages like Java and C++.


I must also say that from what I get across this thread of discussion,



Scheme and Python seem also to be good alternatives. I will definitely


try them in the forthcoming semesters. I have done a bit of 
programming in Python and PERL on a Unix system but not yet tried 
Scheme although it seems to be a very good alternative.


Once again many thanks for the insights!

Bennett




2009/4/6 Walter Milner w.w.mil...@bham.ac.uk:
A question to the OP: is it true that the choice must be between C, 
C++ and Java? Or might other languages be considered?


-Original Message-
From: Jay McCarthy [mailto:jay.mccar...@gmail.com]
Sent: 06 April 2009 13:21
To: Bennett Kankuzi
Cc: Ppig-Discuss-List
Subject: Re: Choice of introductory programming language to a 
freshman class


I've had a lot of success using the How to Design Programs textbook 
(http://www.htdp.org/), which uses a series of Scheme-based languages



explicitly designed for beginners. The TeachScheme, ReachJava!
(http://www.teach-scheme.org/) curriculum uses this book in a 
two-semester sequence where students learn programming in the first 
semester with HtDP and these Scheme-derived languages, then 
transition to Java and objects in the second semester.


I'm happy to provide additional help getting you running in this 
curriculum if you'd like.


Jay McCarthy

--
Jay McCarthy j...@cs.byu.edu
Assistant Professor / Brigham Young University 
http://teammccarthy.org/jay


The glory of God is Intelligence - DC 93








introduction to programming - required skills

2009-04-07 Thread Gergely Buday
Dear PPIGers,

the recent thread is about which language to choose for an
introductory programming course. I have another question which is
closer to the original intention of this mailing list: what skills
from high school are needed to be able to pass such an introductory
programming class?

One is obviously mathematics, especially since lecturers do like
mathematical examples for programming.

But such a class usually involves writing a homework program of
reasonable size. I have a vague feeling that composition skills, yes,
from your English/insert-your-mother-tongue-here/history class are as
much important. A program is just a text, isn't it? When your teacher
checks your writing she looks for logical errors, flow of thought and
yes, elegance, which are important for programs as well. If you have a
good teacher she values your creativity, an important personality
trait for programming. Last but not least to write a program one has
to consult several texts - again a philologist's skill.

I guess this line of thought is not new, is there any writing/study on it?

Best Wishes

- Gergely


Re: Choice of introductory programming language to a freshman class

2009-04-07 Thread Steve Freeman
That's an interesting point. As practitioners we spend almost all of  
our time looking at stuff that doesn't work because we haven't  
finished or it's broken.


That said, I disagree that the language doesn't matter. C++ is just  
too complicated, most professionals I know choose to ignore half the  
language -- until it bites them back. It's important to have at least  
one experience where the quirks of the language aren't the biggest  
problem...


S.

On 7 Apr 2009, at 10:03, C.Douce wrote:

(forwarded on behalf of Andy Ko)

I'm amazed to see so many recommendations based on power, consistency,
expressiveness, and performance. These qualities are great properties
for people using languages on a daily basis to build shippable, robust
code. But in most cases, trying to teach what someone ought to know
ideologically (objects first, elegantly designed languages, etc)
overlooks the fact that the complexity of these languages quickly
exhaust any motivation such students had to start with. Unless one has
an amazing teacher to help every student overcome the upfront
complexity with sheer charisma, the only students still paying
attention at the end will be the ones with a high tolerance for  
failure.


My advice: tell the students upfront to expect constant failure,
intense debugging, and give them guidance on how to respond tp such
failures. Do that and it doesn't really matter what language you use
first. Teaching these courses is a matter of managing expectations and
providing concrete, reusable disgnostic strategies. Save the
principles for once they have these strategies, and they'll have a
much better experienced-based insight into how and why the principles
help.

Andy Ko
Information School
University of Washington

(Andy: I have added your mail to both announce and discuss lists.
Cheers, Chris)



Chris Douce, Institute of Educational Technology, The Open University,
Walton Hall, Milton Keynes, MK7 6AA
http://iet.open.ac.uk/people/c.douce
http://iet.open.ac.uk/people/c.douce
+44 (0) 1908 653 414




Steve Freeman
Winner of the Agile Alliance Gordon Pask award 2006

http://www.m3p.co.uk

M3P Limited.
Registered office. 2 Church Street, Burnham, Bucks, SL1 7HZ.
Company registered in England  Wales. Number 03689627




RE: Choice of introductory programming language to a freshman class

2009-04-07 Thread Errol (IEEE Computer)
 
Hi. I have been casually watching this discussion but feel that my recently
completed thesis might be of interest to some particularly those thinking of
mental models and conceptions of a program.

As I am not in an academic position at present, I am not able to take my
work to what I see as the next stage. However, a key premise is that how a
person perceives the task or the outcome of the task influences the way that
they approach that task and the resulting outcome. This is view is based on
Ramsden's work (2003).

What my thesis does is explore the practitioner perceptions of an
object-oriented program. I believe that it has valuable information that
should be considered in debates about teaching programming.

Thesis is:

Thompson, E. (2008). How do they understand? Practitioner perceptions of an
object-oriented program. Dissertation, Massey University, Palmerston North.
URL: http://www.teach.thompsonz.net/img/Thompson2008PhDThesis.pdf

Errol Thompson
KiwiET Computing Consultancy and Computing Education Research
2 Haven Grove
Naenae
Lower Hutt.

E-mail: kiwiet (at) acm.org
kiwiet (at) computer.org
Windows Live: kiwiet (at) computer.org
Skype: kiwielt
Phone +64 21 2101662

Blog: http://kiwi-et.blogspot.com/
Website: http://www.teach.thompsonz.net/