CAB402 Programming Paradigms


To view more information for this unit, select Unit Outline from the list below. Please note the teaching period for which the Unit Outline is relevant.


Unit Outline: Semester 1 2024, Gardens Point, Internal

Unit code:CAB402
Credit points:12
Pre-requisite:(CAB201 or ITD121) and (CAB203 or CAB220 or DSB100)
Coordinator:Wayne Kelly | w.kelly@qut.edu.au
Disclaimer - Offer of some units is subject to viability, and information in these Unit Outlines is subject to change prior to commencement of the teaching period.

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. This unit will expose you to new ways of thinking about and expressing software solutions, exploring advanced programming language constructs, principles for the sound design of new languages and how they evolve. 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

On successful completion of this unit you will be able to:

  1. Compare and support ways of thinking about and expressing software solutions
    Relates to: ACS CBOK: 1, 1.6, 4, 4.2
  2. Critically evaluate the efficiency and effectiveness of different styles of programming languages for different purposes.
    Relates to: ACS CBOK: 4, 4.2
  3. Evaluate new programming languages and programming concepts through self-directed learning.
    Relates to: ACS CBOK: 1, 1.6, 4, 4.2
  4. Examine how programming languages are designed and implemented.
    Relates to: ACS CBOK: 1, 1.6, 3, 3.1, 4, 4.2

Content

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.

Learning Approaches

This unit is available for you to study in either on-campus or online mode. This unit includes a significant proportion of inquiry-driven theory but also emphasises active, artefact-driven learning through practical exercises. The learning material is delivered each week via a series of short 5-10 minute duration pre-recorded videos, interspersed with active learning in the form of formative quizzes. A live lecture/Q&A session will also be conducted each week where you  can ask questions  and discuss the material presented in the videos. Each week you can choose to attend either an on-campus or online lecture/Q&A session. After understanding the theory presented each week, you can then develop your hands on practical programming skills via detailed practical exercises. You can also attend either an online or on-campus practical class to get help with these practical exercises from your tutor. 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.

You can expect to spend between 10 - 15 hours per week involved in preparing for and attending all scheduled workshops, completing assessment tasks, and undertaking your own independent study to consolidate your learning.

Feedback on Learning and Assessment

The practical workshop sessions will build the skills that you need to complete the assignment. Tutors will be available to give you individual assistance in completing these exercises as well as helping you with any assignment issues. Detailed criteria sheets will be released along with the assignment specifications and detailed comments will be included with the marked assessment items when they are returned.

Assessment

Overview

In the first programming assignment you will design programs and solve problems using different programming paradigms. You will also critically reflect on the efficiency and effectiveness of these different approaches. In the process you will develop new and more advanced abstractions for modelling and managing the complexity of real world systems. The second assignment will allow you to acquire depth of knowledge in a particular field as well as developing your research and self organization skills. You will need to negotiate your project deliverables and effectively communicate your findings.

Unit Grading Scheme

7- point scale

Assessment Tasks

Assessment: Project (applied)

Comparative Programming Exercise - you will implement a software solution using two quite different programming paradigms (Functional and Imperative) and reflect on the relative efficiency and effectiveness of each approach.

This is an assignment for the purposes of an extension.

Weight: 30
Individual/Group: Individual
Due (indicative): Week 7
Related Unit learning outcomes: 1, 2

Assessment: Student negotiated assessment

Students will select a topic of their choosing (from a list), research it, write some software to demonstrate or explore the topic in practice and write a report summarizing their findings and experience.

This is an assignment for the purposes of an extension.

Weight: 30
Individual/Group: Individual
Due (indicative): Week 13
Related Unit learning outcomes: 2, 3

Assessment: Timed online assessment

Timed online exam (open book) with theory and practical components covering all topics covered in the semester

Weight: 40
Individual/Group: Individual
Due (indicative): Central Examination Period
Central exam duration: 2:40 - No perusal
Related Unit learning outcomes: 1, 4

Academic Integrity

Students are expected to engage in learning and assessment at QUT with honesty, transparency and fairness. Maintaining academic integrity means upholding these principles and demonstrating valuable professional capabilities based on ethical foundations.

Failure to maintain academic integrity can take many forms. It includes cheating in examinations, plagiarism, self-plagiarism, collusion, and submitting an assessment item completed by another person (e.g. contract cheating). It can also include providing your assessment to another entity, such as to a person or website.

You are encouraged to make use of QUT’s learning support services, resources and tools to assure the academic integrity of your assessment. This includes the use of text matching software that may be available to assist with self-assessing your academic integrity as part of the assessment submission process.

Further details of QUT’s approach to academic integrity are outlined in the Academic integrity policy and the Student Code of Conduct. Breaching QUT’s Academic integrity policy is regarded as student misconduct and can lead to the imposition of penalties ranging from a grade reduction to exclusion from QUT.

Resources

Library and web-based information will be used in this unit. Reference materials required will be advised via Canvas.

Risk Assessment Statement

There are no out of the ordinary risks associated with this unit. You will be made aware of evacuation procedures and assembly areas in the first few lectures. In the event of a fire alarm sounding, or on a lecturer's instruction, you should leave the room and assemble in the designated area which will be indicated to you. You should be conscious of your health and safety at all times whilst on campus or in the field.

Standards/Competencies

This unit is designed to support your development of the following standards\competencies.

Australian Computer Society Core Body of Knowledge

1: ICT Professional Knowledge

  1. Understanding the ICT profession
    Relates to: ULO1, ULO3, ULO4

3: Technology Resources

  1. Hardware and software fundamentals
    Relates to: ULO4

4: Technology Building

  1. Programming
    Relates to: ULO1, ULO2, ULO3, ULO4

Course Learning Outcomes

This unit is designed to support your development of the following course/study area learning outcomes.

IN01 Bachelor of Information Technology

  1. Demonstrate well-developed IT discipline knowledge
    Relates to: ULO4
  2. Critically apply design and problem solving skills
    Relates to: ULO1
  3. Work independently and within effective teams
    Relates to: ULO3
  4. Purposefully appraise personal values, attitudes and performance in your continuing professional development
    Relates to: ULO2