Java[1] is a popular programming language in the computer industry today. Students want to
learn Java, but its syntax is too complicated for teaching introductory programming courses.
Current methods of teaching introductory programming do not often start with object-oriented design,
but rather concentrate on procedural programming and flow control, moving on to abstract data
types and classes at a later stage. It is not possible to write a program in Java without writing
at least one class (with a main
method).
A better language for teaching with is something like Turing[2] which has a much simpler syntax, and allows programmers to do simple things in simple ways.
put "Hello World!"
public class HelloWorld { public static void main( String args[] ) { System.out.println( "Hello World!" ); } }
Things we have to explain to new programmers to write the Turing:
put
doesThings we have to explain to new programmers to write the Java:
public
meansstatic
meansvoid
meanssystem.out.println()
doesIt can be seen from this example that teaching introductory programming is much easier with a language like Turing, certainly in terms of getting people to the stage where they can write their first program.
However, Turing is not a useful language in the "real world". People want to learn languages that they can actually use to write large applications, and put on their CVs. It can be argued that once the basic principles of good programming have been instilled through an introductory programming course, it should be easy to learn a second language. However, students often complain about having to learn with "toy" languages and would rather be learning a "real" language.
The aim of this project is to design a language which is simple enough to use to teach introductory programming effectively, but which the development environment will translate into the Java code which would be written to achieve the same task. The syntax of the language will be kept simple but will borrow from Java where appropriate. This should allow a programmer to progress easily onto writing Java at a later stage, whilst allowing them to concentrate on the principles and structures behind their programs at earlier stages, without getting bogged down in the overheads presented by writing the program in full Java.