Introduction and Motivation


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.

The "Hello World" Program in Turing

put "Hello World!"

The "Hello World" Program in Java

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:

  1. What put does
  2. That strings need to go in double quotes

Things we have to explain to new programmers to write the Java:

  1. What a class is
  2. What public means
  3. What static means
  4. What void means
  5. What a method is and how it takes parameters
  6. What a library is
  7. What the dot operator does
  8. What system.out.println() does
  9. What curly brackets are for
  10. What the semi-colon is for
  11. That strings need to go in double quotes

It 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.