Course overview
- Study period
- Semester 1, 2025 (24/02/2025 - 21/06/2025)
- Study level
- Undergraduate
- Location
- St Lucia
- Attendance mode
- In Person
- Units
- 2
- Administrative campus
- St Lucia
- Coordinating unit
- Elec Engineering & Comp Science School
An introduction to functional and logic programming languages. Relative merits: extensibility vs. verifiability vs. efficiency. Computational models and semantics.
COMP3400 introduces Functional Programming and Logic Programming using the Haskell programming language. Students will require an installation of the Glasgow Haskell Compiler (GHC) to complete the coursework. While prior programming exposure is required, exposure to Functional Programming and Logic Programming is not necessary, as these topics will be introduced starting from definitions, before moving quickly into applying that knowledge.
This course aims to equip the student with the tools and problem-solving skills (which are typically not available in mainstream programming environments) to achieve software engineering outcomes using both Functional and Logic Programming. In addition to this, a key outcome is gaining the skills to make informed decisions on how to apply these new skills where appropriate. COMP3400 ultimately aims to diversify a student's problem-solving skills in the application of software engineering, by exploring Functional and Logic Programming, and to inform decision-making and application of skills, given a variety of software engineering approaches.
Course requirements
Assumed background
You are expected to:
- have successfully completed twoᅠprogramming courses in a modern, mainstream programming language (such as C++, Python, Java, C#);
- be familiar with programming workflows, such as using a the command line or IDE to compile and edit source code;
- have a working understanding of first order logic, set theory, and inference;ᅠ
- know how to read and write simple (direct and inductive) proofs.
Prerequisites
You'll need to complete the following courses before enrolling in this one:
MATH1061 and CSSE2002
Course contact
Course staff
Lecturer
Timetable
The timetable for this course is available on the UQ Public Timetable.
Additional timetable information
Practicals and contacts will commence teaching week 2. There are both on-campus and online practicals available. You must sign up for one practical session using Allocate+.
The in-person lectures will be live-streamed and recorded.
Aims and outcomes
This course aims to equip the student with new tools, skills and problem-solving methods in the discipline of software engineering, using Functional Programming and Logic Programming. This course will emphasise ideas such as abstraction and program correctness, by utilising tools and concepts that are unavailable in other programming disciplines.
The primary objective of this course is to make students comfortable working with recursion in their day-to-day coding.
Learning outcomes
After successfully completing this course you should be able to:
LO1.
Author programs using Functional Programming concepts, such as Algebraic Data Types and Type Classes
LO2.
Use Functional Programming to achieve high levels of abstraction and program correctness
LO3.
Compare and contrast programming methodologies, such as Functional Programming, Logic Programming and Procedural Programming
LO4.
Apply the tools and workflows that are enabled by Functional Programming
LO5.
Solve appropriate problems using Logic Programming algorithms in Haskell
Assessment
Assessment summary
Category | Assessment task | Weight | Due date |
---|---|---|---|
Computer Code, Tutorial/ Problem Set | Assignment 1 | 15% |
4/04/2025 3:00 pm |
Computer Code, Tutorial/ Problem Set | Assignment 2 | 15% |
2/05/2025 3:00 pm |
Computer Code, Tutorial/ Problem Set | Assignment 3 | 15% |
30/05/2025 3:00 pm |
Examination |
Final Exam
|
55% |
End of Semester Exam Period 7/06/2025 - 21/06/2025 |
A hurdle is an assessment requirement that must be satisfied in order to receive a specific grade for the course. Check the assessment details for more information about hurdle requirements.
Assessment details
Assignment 1
- Mode
- Written
- Category
- Computer Code, Tutorial/ Problem Set
- Weight
- 15%
- Due date
4/04/2025 3:00 pm
Task description
The assessment is broken into two parts:
- Written submission. Mainly proofs and answering theory questions. Human evaluated. Submission through GradeScope.
- Code submission. Haskell code automatically graded. Submission through GradeScope.
This assessment task evaluates students' abilities, skills and knowledge without the aid of generative Artificial Intelligence (AI) or Machine Translation (MT). Students are advised that the use of AI or MT technologies to develop responses is strictly prohibited and may constitute student misconduct under the Student Code of Conduct.
Submission guidelines
Both written and code submission is done through GradeScope.
Deferral or extension
You may be able to apply for an extension.
The maximum extension allowed is 7 days. Extensions are given in multiples of 24 hours.
Late submission
A 100% penalty will apply after a one-hour grace period which is provisioned in case of technical issues while submitting.
Assignment 2
- Mode
- Written
- Category
- Computer Code, Tutorial/ Problem Set
- Weight
- 15%
- Due date
2/05/2025 3:00 pm
Task description
The assessment is broken into two parts:
- Written submission. Mainly proofs and answering theory questions. Human evaluated. Submission through GradeScope.
- Code submission. Haskell code automatically graded. Submission through GradeScope.
This assessment task evaluates students' abilities, skills and knowledge without the aid of generative Artificial Intelligence (AI) or Machine Translation (MT). Students are advised that the use of AI or MT technologies to develop responses is strictly prohibited and may constitute student misconduct under the Student Code of Conduct.
Submission guidelines
Both written and code submissions are done through GradeScope.
Deferral or extension
You may be able to apply for an extension.
The maximum extension allowed is 7 days. Extensions are given in multiples of 24 hours.
Late submission
A 100% penalty will apply after a one-hour grace period which is provisioned in case of technical issues while submitting.
Assignment 3
- Mode
- Written
- Category
- Computer Code, Tutorial/ Problem Set
- Weight
- 15%
- Due date
30/05/2025 3:00 pm
Task description
The assessment is broken into two parts:
- Written submission. Mainly proofs and answering theory questions. Human evaluated. Submission through GradeScope.
- Code submission. Haskell code automatically graded. Submission through GradeScope.
This assessment task evaluates students' abilities, skills and knowledge without the aid of generative Artificial Intelligence (AI) or Machine Translation (MT). Students are advised that the use of AI or MT technologies to develop responses is strictly prohibited and may constitute student misconduct under the Student Code of Conduct.
Submission guidelines
Both written and code submissions are done through GradeScope.
Deferral or extension
You may be able to apply for an extension.
The maximum extension allowed is 7 days. Extensions are given in multiples of 24 hours.
Late submission
A 100% penalty will apply after a one-hour grace period which is provisioned in case of technical issues while submitting.
Final Exam
- Hurdle
- Identity Verified
- In-person
- Mode
- Written
- Category
- Examination
- Weight
- 55%
- Due date
End of Semester Exam Period
7/06/2025 - 21/06/2025
Task description
This is a closed book and identity-verified examination that will be conducted on-campus and invigilated. Students are permitted a single A4 double-sided, handwritten and/or typed, crib sheet during the exam.
Hurdle requirements
A mark of 45% or greater is required for a grade of 4 or greater.Exam details
Planning time | 10 minutes |
---|---|
Duration | 180 minutes |
Calculator options | No calculators permitted |
Open/closed book | Closed Book examination - specified written materials permitted |
Materials | One A4 sheet of handwritten or typed notes, double sided, is permitted |
Exam platform | Paper based |
Invigilation | Invigilated in person |
Submission guidelines
Deferral or extension
You may be able to defer this exam.
Course grading
Full criteria for each grade is available in the Assessment Procedure.
Grade | Cut off Percent | Description |
---|---|---|
1 (Low Fail) | 0 - 19 |
Absence of evidence of achievement of course learning outcomes. |
2 (Fail) | 20 - 46 |
Minimal evidence of achievement of course learning outcomes. |
3 (Marginal Fail) | 47 - 49 |
Demonstrated evidence of developing achievement of course learning outcomes Course grade description: EXAM >= 40% and MIN(A1, A2, A3) >= 25% |
4 (Pass) | 50 - 64 |
Demonstrated evidence of functional achievement of course learning outcomes. Course grade description: EXAM >= 45% |
5 (Credit) | 65 - 74 |
Demonstrated evidence of proficient achievement of course learning outcomes. Course grade description: EXAM >= 50% |
6 (Distinction) | 75 - 84 |
Demonstrated evidence of advanced achievement of course learning outcomes. |
7 (High Distinction) | 85 - 100 |
Demonstrated evidence of exceptional achievement of course learning outcomes. |
Additional course grading information
At the discretion of the course coordinator, marks for assessment items may be adjusted upwards (uniformly across the class), but not downwards.
The marking for this course is calculated from two components:
- Three assessments (A1, A2, A3), and
- Exam (EXAM)
To calculate your final grade and mark, we use the overall mark (MARK); the mark for the exam (EXAM); and the marks awarded for each of the three assessments (A1, A2, A3).
Supposing A1, A2, A3, and EXAM are percentages in [0%, 100%]
MARK = CEILING(A1*15ᅠ+ A2*15ᅠ+ A3*15ᅠ+ EXAM*55)
Your mark will be computed using two digits precision, then rounded to the nearest integer.
Your final grade and final mark are then the highest grade for which your component results satisfy the criteria in the following table.
Note that the MIN(A1, A2, A3) >= 25% hurdle is *only* required for a Grade of 3. For example, a student who submits no coursework but achieves a perfect score on the exam will be awarded a Grade of 4.
Supplementary assessment
Supplementary assessment is available for this course.
Additional assessment information
Assignment remarking
We have the following policy for assignment remarking:
- Administrative errors (e.g., marks added up incorrectly) - speak to the lecturer or demonstrator and we will fix it.
- Other remarking - as per the UQ Assessment Procedure (Section 3 Part G https://policies.uq.edu.au/document/view-current.php?id=184)
Having Troubles?
If you are having difficulties with any aspect of the course material you should seek help. Speak to your demonstratorᅠand/or the course co-ordinator.
If external circumstances are affecting your ability to work on the course, you should seek help as soon as possible. The University and UQ Union have organisations and staff who are able to help, for example, UQ Student Services are able to help with study and exam skills, tertiary learning skills, writing skills, financial assistance, personal issues, and disability services (among other things).
Complaints and criticisms should be directed in the first instance to the course coordinator. If you are not satisfied with the outcome, you may bring the matter to the attention of the EECS Director of Teaching & Learning.
Learning resources
You'll need the following resources to successfully complete the course. We've indicated below if you need a personal copy of the reading materials or your own item.
Library resources
Find the required and recommended resources for this course on the UQ Library website.
Additional learning resources information
Course material and announcements will appear on EdStem and Blackboard.
Although we strive to design perfect assessments, problems are bound to arise, and we may issue changes to assessment items after an assessment has been deployed.ᅠ These changes will be communicated via announcements and therefore students are expected to check Blackboard and EdStem for announcements once every weekday. Failure to read and act on an announcement may result in a loss of marks.
Students are encouraged to participate in online discussions on EdStem to ask questions and provide answers. Discussion about course material is encouraged; however, strict conduct rules and university policies apply.ᅠ
Students are required to sign up for a (free) account withᅠexercism.io in order to complete practical tasks.
Students require access to a scanner or digital camera for submitting handwritten work, or otherwise be proficient in typesetting mathematical work into PDFs.
Students require access to GradeScope for submitting assessments.
Learning activities
The learning activities for this course are outlined below. Learn more about the learning outcomes that apply to this course.
Filter activity type by
Please select
Learning period | Activity type | Topic |
---|---|---|
Multiple weeks |
Lecture |
Content Lecture Lectures on the functional programming paradigm, category theory, and haskell programming. |
Multiple weeks From Week 2 To Week 13 |
Tutorial |
Guided Teaching Session A contact hour for asking theory based questions of a casual demonstrator. |
Practical |
Guided Coding Sessions Students will write solutions in Haskell to assigned problems in a supervised environment using the exercism.io platform. Work during practical sessions are not graded and attendance is not recorded. Work can be completed either on the laboratory computers or on a personal laptop. |
Policies and procedures
University policies and procedures apply to all aspects of student life. As a UQ student, you must comply with University-wide and program-specific requirements, including the:
- Student Code of Conduct Policy
- Student Integrity and Misconduct Policy and Procedure
- Assessment Procedure
- Examinations Procedure
- Reasonable Adjustments - Students Policy and Procedure
Learn more about UQ policies on my.UQ and the Policy and Procedure Library.
School guidelines
Your school has additional guidelines you'll need to follow for this course: