6 points, SCA Band 2, 0.125 EFTSL
Undergraduate - Unit
Refer to the specific census and withdrawal dates for the semester(s) in which this unit is offered.
Ability to code in differently constructed programming languages is analogous to speaking in different natural languages with varying grammars. Similar to natural languages, programming languages from different paradigms (styles) vary in their expressiveness and efficiency. One programming language may require many screens-full of complex code to accomplish a task for which another requires but a few expressive lines of code. Therefore, understanding the design principles of programming languages enables computational problems to be implemented in drastically different and powerful ways; leading, in some cases, to solutions that are more elegant, correct, maintainable, efficient and/or extensible.
This unit examines a selection of programming languages and paradigms and explores the evolution of language design from low-level paradigms that are closer to the execution model of the machine, to more high-level declarative paradigms that allow programmers to model a problem precisely rather than specify its solution. The unit covers paradigms such as functional and logic programming, comparing and contrasting them to programming styles that students are already familiar with, including object-oriented, imperative and procedural programming paradigms. Topics include specification and data-modeling techniques (covering types and polymorphism, mutability-versus-purity, state management, and side-effects) and different models of execution such as strict-versus-lazy evaluation.
The unit provides practical experience with a variety of non-procedural, non-object-oriented programming languages and discusses the influence of programming language theory on the design of current main-stream computer languages, and how the theory translates to practice.
At the completion of this unit, students should be able to:
- describe the major attributes used to describe programming languages;
- describe the major features, strengths and weaknesses of important programming languages in the context of their historical development;
- analyse and critique past, present and future programming languages;
- evaluate the suitability of different paradigms for different problem types;
- design and implement simple programs in several programming languages of different paradigms and demonstrate an ability to solve more complex problems in at least one non-procedural paradigm;
- describe the theoretical aspects of modern programming paradigms and apply this theory to analysis and design of programs.
NOTE: From 1 July 2019, the duration of all exams is changing to combine reading and writing time. The new exam duration for this unit is 2 hours and 10 minutes.
Examination (2 hours): 40%; In-semester assessment: 60%
Minimum total expected workload equals 12 hours per week comprising:
- Contact hours for on-campus students:
- Two hours lectures
- Two hours laboratories
- Additional requirements (all students):
- A minimum of 2-3 hours of personal study per one hour of lecture time in order to satisfy the reading, tute, prac and assignment expectations.
See also Unit timetable information