RE: Choice of introductory programming language to a freshman class
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
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
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
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
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
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
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
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/