Clayton First semester 2008 (Day)
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:
- knowledge of the history of programming languages and the reasons for their introduction;
- knowledge and comprehension of programming language paradigms including imperative, object-oriented, functional and logical;
- appreciation of the importance of formal mathematical calculi as the basis for programming languages (in particular, Lambda Calculus and First Order Predicate Calculus);
- knowledge of the core aspects of modern functional programming languages;
- knowledge of a particular functional programming language, such as ML or Scheme;
- knowledge of the core aspects of logic programming - logical inference, deduction, resolution, negation as failure, logic variables and unification;
- knowledge of a particular logic language, such as Prolog or CLP;
- knowledge of the main issues in programming language design and comprehension of the various design alternatives;
- understanding of how language design decision impact on the implementation of a programming language.
At the completion of this unit students will have 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.
At the completion of this unit students will have 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%; (50% Hurdle), two or more assignments: 30%.
4 x contact hrs/week
CSE2304 or FIT2004 and CSE2303 or FIT2014