Programming Paradigms

Queensland University of Technology

Course Description

  • Course Name

    Programming Paradigms

  • Host University

    Queensland University of Technology

  • Location

    Brisbane, Australia

  • Area of Study

    Computer Engineering, Computer Programming, Engineering Science, Systems Engineering

  • Language Level

    Taught In English

  • Prerequisites

    CAB201 and CAB203

  • Course Level Recommendations


    ISA offers course level recommendations in an effort to facilitate the determination of course levels by credential evaluators.We advice each institution to have their own credentials evaluator make the final decision regrading course levels.

    Hours & Credits

  • Credit Points

  • Recommended U.S. Semester Credits
    3 - 4
  • Recommended U.S. Quarter Units
    4 - 6
  • Overview

    This advanced unit exposes you to special-purpose programming languages that operate under different paradigms than the conventional "imperative" languages you have used in the course so far. A paradigm is a distinct set of concepts and pattern of thinking. The way software developers think and express themselves is profoundly influenced by the programming paradigm that they adopt. A variety of different programming paradigms have been developed over the years, each with their own strengths and weaknesses. This unit will expose you to new ways of thinking about and expressing software solutions. It will explore advanced programming language constructs, principles for the sound design of new languages and how they evolve. We take a look under the covers, and remove the "magic" by exploring how high level programming languages are practically implemented and ultimately executed as machine code on contemporary hardware. The unit provides both a deep theoretical foundation for programming languages by abstracting them to basic mathematical forms as well as showcasing practical application of those advanced principles for software development in the real world.
    Learning Outcomes
    Upon successful completion of this unit you will provide evidence that you can:
    1. Demonstrate new ways of thinking about and expressing software solutions [Technology].
    2. Critically evaluate the efficiency and effectiveness of different styles of programming languages for different purposes [Technology].
    3. Use self directed learning to explore new programming languages and programming concepts [Design].
    4. Explain how programming languages are designed and implemented [Build].
    Topics covered in this unit may include the following:
    • Different programming paradigms, contrasting imperative with functional and other declarative styles (e.g., logic-based or list-based languages).
    • Functional programming in F#.
    • Other characterizations of programming languages such a dynamic, strongly typed, scripting, lazy, etc.
    • Program translation techniques including compilation, interpretation and JIT.
    • Compiler technologies (grammars, parsing, semantic analysis, optimization, code generation).
    • Formal underpinnings such as Lambda calculus, Turing Machines and Von Neumann architecture.
    • Advanced programming constructs such as closures, continuations and monads.
    Approaches to Teaching and Learning
    This unit includes a significant proportion of inquiry-driven theory but also emphasises active, artefact-driven learning through practical exercises. The lectures will introduce you to the theory then workshops conducted in the computer labs will allow you the opportunity to apply that theory and develop your practical programming skills via guided exercises. The first assignment will then build upon this learning and allow you to tackle a larger scale real world problem. The second assignment will give you an opportunity to explore a topic that you find particularly interesting in great depth. It builds self directed learning skills as well as depth of knowledge in a particular field.

Course Disclaimer

Courses and course hours of instruction are subject to change.

Eligibility for courses may be subject to a placement exam and/or pre-requisites.

Some courses may require additional fees.

Credits earned vary according to the policies of the students' home institutions. According to ISA policy and possible visa requirements, students must maintain full-time enrollment status, as determined by their home institutions, for the duration of the program.