COMP4181/COMP9181 13s2 Course Information
This course covers language-based safety engineering techniques, such as advanced type systems, domain-specific languages, program transformations, purity & controlled effects, and parallelism & concurrency for high-assurance and to improve productivity. It demonstrates via concrete examples how modern functional languages are used to achieve high assurance, and conveys hands-on experience via practical assignments.
Programming examples, exercises, and assignments will be in the programming language Haskell. No previous familiarity with Haskell is assumed, but you are expected to learn it quickly.
The course web page is at
This is a 6 UoC course. Please see the course web page for a detailed course schedule.
There is no formal pre-requisite. However, this is a course on advanced programming technology. You are expected to be a confident programmer with a general knowledge of common programming languages, algorithms, and data structures.
After completing this course, you should be able to:
- Understand and use advanced type systems.
- Understand and use (embedded) domain-specific languages.
- Understand and use controlled effects.
- Understand and use parallelism in functional languages.
The academic staff is
Manuel Chakravarty, Lecturer-In-Charge
The lectures will introduce you to new material and provide pointers for further reading. There is no textbook, but you will be given selected research papers to study. In addition, each student will be given a topic to study and summarise in the form of an oral presentation. Moreover, the course involves a programming project and a final exam.
There are three hours of lectures each week. The lecture times and locations are the following:
- Tuesday, 10:00-12:00 @ Quad 1045
- Thursday, 10:00-11:00 @ Quad G025
In this course, the purpose of lectures is to introduce you to the concepts covered, show where they fit in the overall scheme of things and provide motivating examples to help you understand them. They will not be comprehensive. You will need to do additional work outside of lecture time to master the course. In particular, you need to study the given research papers and master Haskell.
The assessment break down is as follows:
Students must achieve at least 16/40 for the programming project and 16/40 for the final exam to receive a passing grade in this course.
Students will be given one or more research papers (or similar) to study, summarise, and prepare and deliver a short oral presentation.
Students will work in teams of two on a set programming project involving many concepts covered in the course. The project will be staged in the form of a number of milestones, each of which has to be submitted for assessment separately by a fixed deadline.
The programming project is an extremely important part of the course. Any plagiarism in the project will be dealt with according to applicable UNSW and CSE policies and may result in an automatic Fail for the whole course. Read the plagiarism warning below for more detail.
Deadline extensions are only awarded for serious and unforeseeable events. Having the flu for a few days, deleting your code by mistake, going on holiday, work commitments, etc do not qualify. Therefore aim to complete your milestones well before the due date in case of last minute illness, and make regular backups of your work.
The final exam is in the form of a 24h take-home. Students will be given one day to read and analyse two recent research papers relevant to the material covered in the course, and submit a critical report on it.
Textbooks and references
There is no textbook for this course, as no published book covers the material in sufficient depth. Reference to adequate online resources will be provided.
Students may want to consult the following references:
Real World Haskell by Bryan O'Sullivan, Don Stewart, and John Goerzen, O'Reilly Media.
Learn You a Haskell for Great Good! by Miran Lipovača, No Starch Press.
Parallel and Concurrent Programming in Haskell: Techniques for Multicore and Multithreaded Programming by Simon Marlow, O'Reilly Media.
Haskell homepage which contains large section with books, online resources, and research papers.
"Real World Haskell", "Learn You a Haskell for Great Good!", and "Parallel and Concurrent Programming in Haskell" are available as ebooks.
Further reading material will be announced in the lecture and/or on the course web page.
Questions regarding the course material, talk preparation, project work, exercises, and general administrative questions should be asked on the course forum (accessible from the course web page), where answers benefit the whole class. Alternatively, approach the lecturer after class.
To discuss matters concerning your personal performance, please send an email to the course account <firstname.lastname@example.org>.
For identification purposes, if you wish to send email concerning the course, you must:
- Send the mail from your CSE or UNSW student account (not from GMail, Yahoo, Bigpond or similar).
- Include your student id and your full name.
Many students do not appear to fully understand what is regarded as plagiarism. This is no defense. Before submitting any work you should read and understand the following very useful guide by the Learning Centre How Not To Plagiarise [http://www.lc.unsw.edu.au/plagiarism/] and the CSE Plagiarism policy [http://www.cse.unsw.edu.au/~chak/plagiarism/plagiarism-guide.html].
All work submitted for assessment must be entirely your own work. We regard unacknowledged copying of material, in whole or part, as an extremely serious offence.
In this course, submission of any work derived from another person, or solely or jointly written by and/or with someone else, without clear and explicit acknowledgement, will be severely punished and may result in automatic failure for the course and a mark of zero for the course. Note that this includes including unreferenced work from books, the internet, etc.
Do not provide or show your assessable work to any other person. Allowing another student to copy from you will, at the very least, result in zero marks for that assessment. If you knowingly provide or show your assessment work to another person for any reason, and work derived from it is subsequently submitted you will be penalised, even if the work was submitted without your knowledge or consent. This will apply even if your work is submitted by a third party unknown to you. You should keep your work private until submissions have closed.
If you are unsure about whether certain activities would constitute plagiarism ask us before engaging in them!
Copying without consent, severe, or second offences will result in automatic failure, exclusion from the university, and possibly other academic discipline.
Students whose exam performance is affected by serious and unforeseeable events outside their control can apply at the student centre for special consideration. If special consideration is granted you will be able to sit the supplementary exam.
Special consideration does not mean we adjust your marks, it means that we permit you to sit the supplementary examination. If you apply for special consideration after the cut-off date set by the university or after the supplementary exam has been held then it will not be granted. Special consideration will only be granted where students (a) have completed all other course components to a satisfactory standard, (b) have been absent from the final exam, (c) and have submitted a fully documented request for special consideration to the student centre within three working days of the final exam.
Course Evaluation and Development
The last two instances of this course (in 10s2 and 12s2) were very well received by students. Hence, all main elements will be kept. However, due to changes in the underlying software, the programming project is going to be revised.