University Subjects

COMP3141: Software System Design and Implementation

COMP3141: Software System Design and Implementation


Subject Reviews

anomalous

2 years ago

Assessment
- 2x programming assignments, worth 20% of your mark (10% each)
- 8x online quizzes, worth 10% of your mark (be warned, these are very difficult!)
- 6x weekly programming exercises, worth 20% of your final mark
- Final exam, worth 50% of your mark, with a hurdle of 40/100 in the exam to pass overall
Assumed Knowledge
Either COMP1927 or COMP2521.
Comments
Most people treat this as “the Haskell course” because there is a fair bit of Haskell programming, but that’s not its stated intention. Rather, it provides a perspective on how we can use ideas inspired by mathematical proof and reasoning to construct safe software: Haskell just so happens to be a good language for applying this theory. The true value of this course is in the appreciation it gives you for safety and reasoning about programs, which is a point that some people (typically the more applications-focused crowd, though I mean this in the nicest way) can miss, because a lot of the stuff in this course can come across as abstract nonsense. It really does force you to examine how you previously approached correctness and take a more principled approach to designing software, not only during the development process but also the testing process. On its own this is a very useful perspective to have, and makes this worthy of consideration as an elective for CS students (worth noting this is core for Software Engineering students, and I definitely agree with that).

If you haven’t done functional programming before, this course will probably make you feel like you’re relearning programming, which is entirely normal. You don’t have to write very much code at all in this course in terms of the number of lines needed to finish most tasks, but the tradeoff is that you’ll be thinking much harder about each line than you’ve probably ever done up until this point. To supplement all of this programming, there is some theory regarding types and the connection between programs and proofs, which is probably the coolest bit of the whole course (the surprise is ruined if you’ve seen it before as I did though). Structural induction and natural deduction are also taught as it relates to that theory. While this is a bit of maths, don’t worry - very few courses are necessary nor sufficient to have already covered it going into the course, so it gets taught from scratch.
Overall, quite a fun course if a bit tough at times. This is a must do if you’re interested in functional programming, since this course offers the most substantial introduction to the area at UNSW. If you like this course, consider following it up with COMP3161, which offers an analysis of programming language design (and particularly the design of functional programming languages).
Contact Hours
Just 2x 2 hour lectures, but there is a split:
- One of them is a content lecture which introduces the course content for the week
- The other is a practice lecture, which covers the solution to the previous week’s programming exercise as well as reinforcing the material from the content lecture, usually with a focus on working through actual problems
Difficulty
4.5/5 without functional programming experience, 3/5 if you’ve done some before
Lecture Recordings?
Yes, recorded and uploaded onto YouTube.
Lecturer(s)
Dr. Christine Rizkallah and Curtis Millar (who have both now left UNSW)
Notes / Materials Available
Not much, but what you do get is nice: a set of good lecture slides and some tutorial questions.
Overall Rating
5/5
Textbook
No textbook required, but the following are recommended as Haskell references by the course if you're looking for something:
- Thinking Functionally with Haskell, by Richard Bird
- Haskell Programming From First Principles by Christopher Allen and Julie Moronuki
- Programming in Haskell by Graham Hutton
- Real World Haskell by Bryan O'Sullivan, Don Stewart, and John Goerzen
- Learn You a Haskell for Great Good! by Miran Lipovača

Additionally, the course content draws from Data Refinement: Model-Oriented Proof Methods and their Comparison by Kai Engelhardt and W.P. de Roever, but it’s said that this text is not suited for undergraduates.
Year & Trimester Of Completion
21T2
Your Mark / Grade
93 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