Monday, January 16, 2006

A question of Language

Last year a group of us at Swinburne proposed a new IT degree aimed at producing software developers. At the heart of this degree was a new programming stream aimed at teaching students the fundamentals of programming starting with procedural programming then moving to object oriented programming, but also including introductions to functional and stack based programming. We are now in the process of developing these subjects and are pondering (again) the choice of language and approach.

What are the choices? Well at the moment the real choices are between C and Delphi. We have decided to avoid Java, C#, or Visual Basic .NET as these languages provide a higher level of abstraction that will be better understood after having learnt procedural programming.

At the moment my preference is to go with Delphi. The language is far more readable than C, providing an environment that is a little further removed from low level concepts. If we go with Delphi the approach we will take is to introduce program comprehension first then move to basic development, data structures and memory management, and finally recursion and backtracking. Using Delphi we can still use call by reference (pass by reference) and call by value (pass by value), we have pointers, function pointers, and easy to use strings.

On the other hand C is the cheaper option. By using C we can eliminate one subject as this will be taught to the engineers as well. I believe that the approach to programming with C would need to be different to the above approach. The language is not as readable, and requires a better understanding of hardware and memory. Having said this the subject would be mostly taught to engineers who should be interested in this lower level of abstraction. I think therefore that the C approach could take a far more low level approach. You would probably start with a little hardware introduction followed by basic instructions and then move onto memory management. You could then go on to look at controlling hardware devices in C, possibly also looking at assembler. Basically keep the subject more on a hardware control level where C will work well.

I haven't had long to think on the C approach, so I'm not really sure about it still... Any comments will be appreciated.

No comments: