I agree - not C++. I think it depends whether or not you take the 'objects first' route. If you do, and you reject C++, you are only left with Java.
However I think objects-first is not a good idea, and there is a small amount of evidence to support that, relating to understanding main() and the dynamics of execution. My concern is that a student cannot write a method unless they know about primitive types, loops, conditionals and arrays. And there is an enormous amount of evidence to show that many students find those ideas very challenging. Therefore start with C, using a debugger that allows students to step through code and see how variable values change. Start with a concrete understanding, about bits and bytes - abstraction can come later. Look (briefly) at compiled C to see how it relates to machine code. Use pointers. Without pointers the idea of references in Java seems completely mysterious. Use structs. Then it's just a little step to classes. There is a lot of pressure to use Java because it is 'modern' and you can get a job with it. But I think employers want developers who understand properly what they are doing. And this is just a first language - they should learn others anyway, so C followed by Java seems a good route. -----Original Message----- From: Gergely Buday [mailto:[email protected]] Sent: 06 April 2009 10:30 To: Bennett Kankuzi Cc: Ppig-Discuss-List Subject: Re: Choice of introductory programming language to a freshman class > I have to choose between Java, C and C++ since these languages have > their compilers already instead in our computer labs. These students > are just coming from secondary school and they have general computing > skills which are taught in secondary schools in Malawi. Dear Bennett, definitely not C++. Although Bjarne Strostrup did write a book for beginners: http://www.research.att.com/~bs/programming.html I do not believe that it is a choice for freshmen. Java seems a better option with the caveat that they should learn C thereafter. Best Wishes - Gergely
