Queensland University of Technology
Area of Study
Computer Engineering, Computer Programming, Engineering Science, Systems Engineering
Taught In English
PrerequisitesCAB201 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.
Recommended U.S. Semester Credits3 - 4
Recommended U.S. Quarter Units4 - 6
Hours & Credits
OverviewSynopsis: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 OutcomesUpon successful completion of this unit you will provide evidence that you can:
ContentTopics covered in this unit may include the following:
- Demonstrate new ways of thinking about and expressing software solutions [Technology].
- Critically evaluate the efficiency and effectiveness of different styles of programming languages for different purposes [Technology].
- Use self directed learning to explore new programming languages and programming concepts [Design].
- Explain how programming languages are designed and implemented [Build].
Approaches to Teaching and LearningThis 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.
- 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.
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.