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 code: | CAB402 |
---|---|
Prerequisite(s): | (CAB201 or ITD121) and (CAB203 or CAB220 or DSB100) |
Credit points: | 12 |
Timetable | Details in HiQ, if available |
Availabilities |
|
CSP student contribution | $1,118 |
Domestic tuition unit fee | $4,104 |
International unit fee | $4,788 |
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 |
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:
- Compare and support ways of thinking about and expressing software solutions
- Critically evaluate the efficiency and effectiveness of different styles of programming languages for different purposes.
- Evaluate new programming languages and programming concepts through self-directed learning.
- Examine how programming languages are designed and implemented.
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.
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.
Assessment: Timed online assessment
Timed online exam (open book) with theory and practical components covering all topics covered in the semester
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
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
3: Technology Resources
- Hardware and software fundamentals
Relates to: ULO4
4: Technology Building
Course Learning Outcomes
This unit is designed to support your development of the following course/study area learning outcomes.IN01 Bachelor of Information Technology
- Demonstrate well-developed IT discipline knowledge
Relates to: ULO4 - Critically apply design and problem solving skills
Relates to: ULO1 - Work independently and within effective teams
Relates to: ULO3 - Purposefully appraise personal values, attitudes and performance in your continuing professional development
Relates to: ULO2
Unit Outline: Semester 1 2024, Online
Unit code: | CAB402 |
---|---|
Credit points: | 12 |
Pre-requisite: | (CAB201 or ITD121) and (CAB203 or CAB220 or DSB100) |
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:
- Compare and support ways of thinking about and expressing software solutions
- Critically evaluate the efficiency and effectiveness of different styles of programming languages for different purposes.
- Evaluate new programming languages and programming concepts through self-directed learning.
- Examine how programming languages are designed and implemented.
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.
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.
Assessment: Timed online assessment
Timed online exam (open book) with theory and practical components covering all topics covered in the semester
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
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
3: Technology Resources
- Hardware and software fundamentals
Relates to: ULO4
4: Technology Building
Course Learning Outcomes
This unit is designed to support your development of the following course/study area learning outcomes.IN01 Bachelor of Information Technology
- Demonstrate well-developed IT discipline knowledge
Relates to: ULO4 - Critically apply design and problem solving skills
Relates to: ULO1 - Work independently and within effective teams
Relates to: ULO3 - Purposefully appraise personal values, attitudes and performance in your continuing professional development
Relates to: ULO2