1 x 120-minute lecture weekly
1 x 60-minute seminar weekly
1 x 120-minute computer lab weekly
1 of COMP2711, COMP2741, ENGR2701
Enrolment not permitted
1 of COMP8722, COMP9722 has been successfully completed
Topic description

This topic is concerned with the concepts and mechanisms that underlie modern programming languages as well as providing insights into the capabilities and limitations of languages, computers and algorithms. The topic combines both theoretical foundations and practical demonstrations of issues relating to programming and algorithm design. It teaches fundamental skills necessary to selection of an appropriate programming paradigm for a problem, whilst highlighting the distinct and overlapping capabilities of three families of programming languages. The topic examines concepts such as types, variables, binding, abstraction, parameterization, encapsulation, generics, polymorphism, inheritance, recursion, iteration, formal languages, automata, logic, proof, decidability, computability and complexity. It uses as vehicles for illustration and exploration multiple languages supporting a variety of programming paradigms, including the procedural, functional, object-oriented and logic programming paradigms. The topic has an emphasis on design and evaluation of efficient, efficacious programs, including analysis and benchmarking of programs, with close integration of the theoretical and practical components, and workshops to assist in application of theory.

Educational aims

  • To be able to specify and implement algorithms in an appropriate paradigm with an understanding of how to estimate what performance (efficacy and efficiency) can be expected and what resources will be required
  • To understand and be able to employ Logic Programming, Functional Programming, Object Oriented Programming and von Neumann (Procedural Programming) paradigms
  • To be able to set up, carry out and appropriately report on theoretical and practical evaluation (analysis and benchmarking) of computer routines and use this information to improve the performance of a program
  • To be able to write clear portable code that is independent on machine, language and compiler dependencies
  • To develop an ability to work alone both in a team, including to integrate work and build extensible systems, and to negotiate an ethical solution acceptable to a diverse range of stakeholders
Expected learning outcomes
On completion of this topic you will be expected to be able to:

  1. Understand the concept of paradigms and the effect of language, paradigm, data structure on the design of algorithms
  2. Have the basic foundations to deal with the broad range of programming languages, paradigms and libraries/APIs
  3. Use both theoretical and practical means of assessing the requirements of a proposed system and analysing the performance of an implemented system
  4. Utilize concepts from one paradigm in a language or context associated with another paradigm, choosing the most appropriate paradigm for the job
  5. Be adept at styles of programming and system development that are knowledge, rule and logic based rather than depending on low level step by step instructions

Key dates and timetable

(1), (2)

Each class is numbered in brackets.
Where more than one class is offered, students normally attend only one.

Classes are held weekly unless otherwise indicated.


If you are enrolled for this topic, but all classes for one of the activities (eg tutorials) are full,
contact your College Office for assistance. Full classes frequently occur near the start of semester.

Students may still enrol in topics with full classes as more places will be made available as needed.

If this padlock appears next to an activity name (eg Lecture), then class registration is closed for this activity.

Class registration normally closes at the end of week 2 of each semester.

Classes in a stream are grouped so that the same students attend all classes in that stream.
Registration in the stream will result in registration in all classes.
  Unless otherwise advised, classes are not held during semester breaks or on public holidays.