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
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.
From: Gergely Buday [mailto:gbu...@gmail.com]
Sent: 06 April 2009 10:30
To: Bennett Kankuzi
Subject: Re: Choice of introductory programming language to a freshman
> 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.
definitely not C++. Although Bjarne Strostrup did write a book for
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.