Faculty of Information Technology

Skip to content | Change text size

print version

Monash University Handbook 2010 Undergraduate - Unit

6 points, SCA Band 2, 0.125 EFTSL

FacultyFaculty of Information Technology
OfferedClayton First semester 2010 (Day)
Coordinator(s)Associate Professor Bernd Meyer/Associate Professor Maria Garcia de la Banda


This unit provides a thorough understanding of the four main programming language paradigms: imperative, functional, logic and object-oriented. In doing this, it reviews different example languages and the kinds of applications each language is intended for, focusing on how the choices made during the design of a language affect the resulting ease of programming. Particular emphasis will be made on functional and logic languages. Students will gain practical programming experience in languages that use these paradigms, such as SML and Prolog. Implications of language design on the implementation of programming languages will be highlighted.


At the completion of this unit students will have -
A knowledge and understanding of:

  • the history of programming languages and the reasons for their introduction. Understanding of the fact that programming languages and programming language paradigms have evolved and will almost certainly change in the future;
  • programming language paradigms including imperative, object-oriented, functional and logical. Comprehension that the choice of programming language affects the ease of programming. Ability to evaluate whether a particular paradigm or programming language is well-suited for a particular programming application;
  • the importance of formal mathematical calculi as the basis for programming languages (in particular, Lambda Calculus and First Order Predicate Calculus). Understanding of how these calculi can provide the basis for programmign language semantics;
  • the core aspects of modern functional programming languages Functions as first class objects, type systems, higher-order functions, eager and lazy evaluation;
  • a particular functional programming language, such as ML or Scheme, which exemplifies most of these aspects and the ability to use it for implementing non-trivial algorithms;
  • the core aspects of logic programming: logical inference, deduction, resolution, negation as failure, logic variables and unification;
  • a particular logic language, such as Prolog or CLP, which exemplifies most of these aspects and the ability to use it for implementing non-trivial algorithms;
  • the main issues in programming language design and comprehension of the various design alternatives. Examples of languages that mix influences from different programming paradigms, such as Python;
  • how language design decision impact on the implementation of a programming language.
Developed attitudes that enable them to:
  • value the important role that theory (in this case formal language theory and type theory) can play in the development of practical software applications (in this case compilers and other data translation applications.);
  • carefully consider the characteristics of the different programming languages available whenever developing a new application.
Developed the skills to:
  • become an informed consumer of programming languages, choosing the right programming language for a particular task;
  • be able to implement and debug non-trivial algorithms in both a functional and a logic language.


Examination (3 hours): 70%; In-semester assessment: 30%

Chief examiner(s)

Associate Professor Bernd Meyer

Contact hours

2 hrs lectures/wk, 1 hr laboratory/wk


FIT2004 (or CSE2304) and FIT2014 (or CSE2303)



Additional information on this unit is available from the faculty at: