University Subjects

COMP3161: Concepts of Programming Languages

COMP3161: Concepts of Programming Languages

University
University of New South Wales
Subject Link
View Subject

Subject Reviews

anomalous

3 years ago

Assessment
Due to COVID, we had a (harder) assignment instead of a midterm, and obviously the exam was online, but the rest of the assessment was normal. Nevertheless, the breakdown is
- 1x written assignment on proofs, worth 15% of your course mark
- 2x programming assignments, worth 17.5% of your course mark each for a total of 35%; bonus marks towards your final course mark on offer for completing extension tasks
- 1x final exam, worth 50% of your course mark

While we’re on the topic of bonus marks, 1 bonus mark was given to everyone in the course if the MyExperience feedback response rate was over 50%. This isn't the first time such an incentive has been given by the lecturer, so it might happen for future offerings too.
Assumed Knowledge
Formally, either COMP2521 or COMP1927.

In addition to this, I would recommend that you have a good relationship with discrete maths, particularly proofs and logic as you’ll be doing a fair bit of that in this course. You should ideally also have Haskell/functional programming experience from self-study or a course that covers Haskell (e.g. COMP3141), or be ready to learn on your own during the course. I didn’t have Haskell experience and managed to do well in spite of that so it’s possible, just harder.
Comments
This course is great, and probably my favourite that I’ve done so far. It positions itself as a “programming language appreciation course”, and you spend a lot of time modelling the semantics of programming languages and learning what some common programming buzzwords (polymorphism, type safety, etc.) actually mean in a formal manner. It is initially quite mathematical as the preliminary tools for doing the aforementioned have to be introduced, but if you can make it through that then the reward is well worth it. The overarching theme of the course is definitely on the functional side, however given that the paradigm has been responsible for so many features enjoyed by mainstream languages, it’s an understandable bias. That being said it’s not all functional - you of course look at some imperative programming, crack plenty of jokes at OOP/Java’s expense, and at the very end even do a bit of concurrency appreciation (which gives you a bit of a taste of COMP3151).

The programming assignments provide you the opportunity to implement parts of a simple functional programming language in Haskell. Although they claim you don’t need to know FP/Haskell already, not knowing it makes your life harder - for someone with only imperative language experience under your belt, writing Haskell code will probably feel weird and takes some time to get used to.

This is an essential course if you’re interested in programming language theory, and especially if you’re planning to do a thesis in most areas within formal methods. Even if not, it’s made me consider doing some courses in the future that I originally hadn’t planned to, so I’d still recommend it highly if you're looking for something to do.
Contact Hours
2x 2 hour lectures, 1x 1 hour tutorial
Difficulty
4/5 without Haskell or functional programming experience, maybe 3/5 without
Lecture Recordings?
Yes, lectures were recorded.
Lecturer(s)
Dr. Liam O’Connor (RIP) and Dr. Christine Rizkallah
Notes / Materials Available
For some of the major topics, a set of (non-compulsory, but good practice) exercises with solutions are given. Notes written by a previous lecturer for the course are also available for most topics as a supplement to the lecture material (but mostly just a rehash of that lecture material). Sample exams and midterms are available if you look around the course pages from previous offerings.
Overall Rating
5/5
Textbook
N/A, though Liam posted an extensive list of resources which you could look into that relate to the larger subject matter if you’re interested.
Year & Trimester Of Completion
20T3
Your Mark / Grade
94 HD

Did you find this review helpful?

Australia Treasury

Help shape the future for all Australians

Want to make an impact to your local community and across Australia? Join Treasury, the Government’s lead economic advisor and be involved in developing policies and providing well informed, innovative and sound advice on key issues that impact Australians.

Find out more