ITECH 5403 Comparative Programming Languages 

Assignment 1. Language Design Essay. 

  1. Introduction 

Since the development of Plankalkül back in the 1940s, a large number of  programming languages have been designed and implemented – each for its  own specific problem domains and made with its own set of design decisions  and compromises. For example, there are languages which: 

  • Are strongly typed and loosely typed
  • Provide support for object orientation / abstraction of data types, Use static or dynamic scoping rules, 
  • Provide memory management (i.e., garbage collection) or allow the  developer fine-grained control over heap-allocation and recycling, 
  • Provide closures to allow functions to be passed around like  variables, 
  • Allow easy access to array slices and those which do not, 
  • Perform internal correctness checking of data and/or try/catch  exception handling and those which do not, 
  • Provide diverse and comprehensive suites of built-in functionality and those with a more limited set of features, 
  • Use pre-processors and macros to selectively expand or substitute  source code, etc. 

Each of these decisions can have a profound effect on the usefulness of a  programming language in terms of factors such as its speed, robustness and  general suitability to create programs of a certain type, such as for  operating systems, or in the areas of business, scientific computation,  artificial intelligence or video games.

  1. Essay Topic

The topic of your essay is to design a programming language for the  problem domain of: 

Scientific Computations 

  • Scientific computations are used to simulate real-world activities  using mathematical models. 
  • This is mainly achieved through the analysis of mathematical models  implemented on computers. 
  • Virtually any objects with known characteristics can be modelled and  simulated. 
  • Simulations use enormous calculations and often require supercomputer  speed.  
  • As personal computers became more powerful, laboratory experiments  can be converted into computer models that can be interactively  examined by researchers without the risk and cost of the actual experiments. 
  • It’s worth thinking about the aspects of a programming language designed for scientific applications in terms of a number of  features, including: 
  • Performance, 
  • Data types and structures, 
  • Maintenance / Reliability of code and 
  • Security requirements. 

With this in mind your task is to theoretically design a language suitable  for the use within the scientific calculations’ domain

The actual implementation of the language and tool set is obviously  outside the scope of this course, but you must express and justify the  design decisions behind your programming language in terms of: 

  • The features and functionality that will allow your language to be  suitable and useful within the problem domain (including what  differentiates it from existing languages),
  • The programming paradigms, such as procedural, object oriented, logic  and functional programming.  

You are free to design your language to be either interpreted, compiled or  to work in a hybrid manner, but you must thoroughly justify your decision. All language design choices must be legitimate, rational decisions which  are backed up by robust discussion of the subject area. 

In addition, your document should include numerous references to back up  any and all specific claims that you make. All references should be made  in the APA referencing style. 

IMPORTANT! 

Your essay should NOT be about the C/C++ or FORTRAN programming languages – or any programming language that currently exists. Your essay must be on  the programming language THAT YOU DESIGN in terms of the features the  language should have and the choices you make about what functionality,  data types, compilation/interpretation, exception handling etc. that you  decide should be included in the language to make it suitable for the  specific problem domain.

Allocated Marks: See Course Description 

Due Date: See Course Description 

Please refer to the Course Description for information relating to late  assignments and special consideration. 

Assignment Submission: 

Your essay should be between 3,000 and 4,000 words inclusive and may  contain diagrams or images as you see fit. All diagrams, charts, images or  other externally created materials incorporated into your essay must be  appropriately referenced

You must supply your completed essay in Microsoft Word DOCX or PDF format

Assignments will be marked on the basis of fulfilment of the requirements  and the quality of the work. 

In addition to the marking criteria, marks may be deducted for failure to  comply with the assignment requirements, including (but not limited to): 

  • Incomplete language feature coverage,  
  • Incomplete submissions (e.g., missing subject areas – see the marking  guide), 
  • Poor spelling and grammar, and 
  • Incorrect adherence to the APA referencing style. 

Submit your document to the Assignment 1 Upload location on Moodle before  the deadline. 

Marking Criteria/Rubric

Requirement Weight Mark
Providing your programming language with a suitable name. 1
Introduction and explanation of language purpose. 10
Choice and justification of interpretation/compilation method(s) to be used. 9
Discussion of memory management and scoping features. 10
Specification and rationale for major language features in terms of:

  • Simplicity
  • Orthogonality
  • Data types
  • Syntax design
  • Support for abstraction
  • Expressivity
  • Type checking
  • Exception handling
  • Restricted aliasing
45 [5 marks per item]
Discussion of the readability, writability and reliability of the language based on the language characteristics as chosen. 15
References and APA referencing style. 5
Spelling and grammar. 5
Assignment mark total /100
Contribution to unit mark (out of 20%) %