Announcements
1. Welcome to COMP3161/9164!
Welcome to COMP3161/9164 Concepts of Programming Languages.
2. Updates
2.1. Upcoming Exam
This will probably be the final course update. The final exam is coming up on Monday (the 8th) in the morning session.
There has been some confusion reported so let us clarify the key details. It is an in-person written exam. The final revision lecture went into some details with what to expect with regard to the content and rules of the exam. It may help to scan the notes associated with that lecture.
The exam will be run and invigilated on the day by the UNSW central exam authority, not by the school or the lecturers. Official details should have been released via my.unsw and should be authoritative. If those details are not clear, please let us know, but we lecturers don't have the full information, especially with regard to students who have exam-related adjustments.
2.2. Type-Inference assignment marks released
The marks for the "TyInfer" assignment are now computed, and released to most students.
You can fetch them via "3161 classrun -collect Hindsight" at CSE.
Students who were given an extension to the assignment won't have their marks released yet. It would (obviously) be unfair to release a student the marks for their current submission while they can still re-submit.
2.3. Week 10 Tutorial solutions uploaded
This week's tutorial solutions are now up. -Rob
2.4. Hindsight marks released and Revision Lecture notes up
The marks for the "Hindsight" assignment are now computed and released. You can fetch them via "3161 classrun -collect Hindsight" at CSE.
The notes from the revision lecture are now up on the website. These include a list of topics and some discussion of what is and is not possibly in the exam.
2.5. Sample Exam and Revision Lecture up
We've now uploaded some sample exams from previous years (long ago) and the slides of the revision lecture.
Some content in the previous exams wasn't in this version of the course (e.g. software transactional memory and most-general unifiers) and some assessible material in this course is new (e.g. session types).
2.6. Week 10 Lecture 1 Demo Notes up
I've uploaded the demo notes I presented in Tuesday's lecture, including some additional corrections. -Rob
2.7. Week 10 Lecture 1 and Tutorial Uploaded
I've uploaded this week's tutorial and the Tuesday lecture's slides. -Rob
2.8. Week 9 Tutorial solutions uploaded
This week's tutorial solutions are now up. -Rob
2.9. Week 9 Lecture 2 Code and Notes up
I've uploaded the code and notes for week 9's Thursday lecture. -Rob
2.10. Week 9 Lecture 2 and long-form notes uploaded
I've uploaded the slides for week 9's Thursday lecture, as well as long-form notes for each its topics Overloading and Subtyping. Code and lecture demo notes will follow after the lecture. -Rob
2.11. Assignment 0 "Proofs" Marks Released
These are finally finished and uploaded. You should be able to view your marks and comments via the "give" web system or "3161 classrun".
Assignment 1 marks will be released soon as well.
2.12. Week 9 Lecture 1 Code and Notes up
I've uploaded the code and notes for week 9's Tuesday lecture; thanks again for the good questions and suggestions today from the class, which I added. Note that there are no long-form notes for this one. -Rob
2.13. Week 9 Lecture 1 and Tutorial Uploaded
I've uploaded the slides for week 9's Tuesday lecture, this week's tutorial, and last week's tutorial solutions. -Rob
2.14. Assignment 2 Released!
The type inference assignment is now up on the website. See the assignments part of the sidebar for more information.
2.15. Week 8 Lecture 2 Uploaded
The slides for the type-inference lecture are up, as is the longform note saying a little more about type inference.
2.16. Week 8 Lecture 1 and Tutorial Uploaded
I've uploaded the slides and long-form notes for week 8's Tuesday lecture, as well as the tutorial. -Rob
2.17. Week 7 Lecture 2 Code and Notes + longform notes up
I've uploaded the code and notes for week 7's Thursday lecture, as well as long-form notes for both lectures thanks to the previous lecturers of this course. -Rob
2.18. Week 7 Lecture 1 and Tutorial Uploaded
Welcome back after flex-week. The first lecture for week 7 is uploaded, as is the tutorial. The notes from the first lecture have already been typed up, including a test script for assignment 1.
2.19. Assignment 1 Intro Video Uploaded
We have released an intro video by former lecturer Johannes Åman Pohjola. This comes with two provisos that are mentioned in the short intro-intro video or on the assignment overview page.
2.20. Assignment 1 Released!
The spec and Haskell sources for the assignment have now been released. See the assignments section of the website.
A further intro to Hindsight will be provided during flex-week.
There is an Assignment 1 category on the forum. There are a lot of concepts to process for assignment 1. Let us know on the forum if something is particularly unclear. Also let us know if there are challenges building the provided sources.
2.21. Week 5 Lecture 2 notes and Longform Note up
The discussion of evaluation order from the lecture is now typed up and on the website.
The longform note about abstract machines is up. It types up some of the week 5 content in more detail, including especially some really big evaluations in the structured machine style.
As mentioned in the lecture, expect a release of Assignment 1 later this week.
2.22. Week 5 Lecture 1 content up
This also includes the week 5 tutorial and, as of Tuesday afternoon, a write-up of the code and proofs presented in the lecture.
2.23. MinHS Demo Assignment up
The MinHS demo assignment is now here on the website.
The solutions to the week 3 tutorial are now up as well.
2.24. Week 4 MinHS HOAS Exercise up
The MinHS (or MinHS-0.1-HOAS) code typed during the lecture is now up on the website.
2.25. Week 4 Functional Language content up, MinHS demo delayed
The lecture slides on functional languages and MinHS (the very first version) are now up. Apologies about the demo MinHS (second version) content, preparing that has been delayed by marking for another course.
2.26. Week 4 Imperative Language Content up
The lecture notes, and a longform note related to imperative languages, and the related tutorial, are now all up on this website.
Watch for a tiny functional language that will come later in the week, including a substantial code drop.
2.27. Tutorial Answers, Church Demo, Assignment Submission set up
The "give" submission system for the Proofs assignment is now set up. You should be able to submit using "give" on a CSE machine (including a remote connection via SSH or VNC) or using the "give" web interface (search "UNSW CSE give" in your favourite search engine). Extensions for ELS students should be set up and correct. Let us know on the forum if something is generally wrong, or by emailing the course admin account if there is an issue related to your specific circumstances.
A completed version of the week 2 tutorial is now up on this website.
The Church encodings in Haskell typed in the lambda calculus lecture are uploaded as well.
2.28. Long-Form Notes uploaded
Some "textbook style" written notes that elaborate on the lecture slides have been uploaded. This includes material about the preliminaries (natural deduction and induction), syntax and semantics.
2.29. Week 3 Second Lecture uploaded
The second lecture for week 3, lambda calculus, is now uploaded.
The Haskell code and proof done in the previous lecture have been uploaded too.
2.30. Week 3 Tutorial and First Lecture uploaded
The tutorial and first lecture for week 3 are now on this site.
Apologies for the late publishing, apparently we didn't follow all the steps needed to update the website properly.
2.31. TeX snippets and Glossary
Some more material for the website. We've added a glossary of terms and concepts built by a former lecturer to the navigation pane.
We've also added an example TeX file that shows the TeX source of some of the syntax used in the assignment 0 spec and the week 2 slides. That is filed with the assignment 0 material.
2.32. Assignment 0 Release
Assignment 0 has now been released on this website.
Also the L/M proof has been added to the website.
There is an "Assignment 0" category on the forum for questions related to it.
Note that this release gives you time to think about various aspects. Next week's first lecture will cover small step (\(\mapsto\)) and big-step (\(\Downarrow\)) semantic judgements, and next weeks's second lecture will cover lambda (\(\lambda\)) calculus.
2.33. Week 2 Notices
Some notices from the start of week 2, mostly also in the lecture slides for the 1st week 2 lecture.
More material will continue to appear on the website. The first (week 2) tutorial is here now, etc. Tutorials start this week!
Assignment 0 will appear soon.
Some students have asked about possible pre-requisite and co-requisite constraints for related courses. We think that it's OK to leave the options relatively open for students to pick the subset they're interested in or can fit in their schedules. None of the
Some students have asked about Haskell learning resources. There are a few listed here (see the sidebar). Let us know if you find one good, or if one of the links is dead.
Two of our tutors have set up a discord chat and begun reading/viewing some extra material for interest. More info on the forum.
2.34. First Lecture and Quick Fixes
The first lecture recording is now up on Echo360. The recording seems to have come out all right. There was a 20-minute interruption to start with thanks to a fire/evacuation drill, so we didn't finish our lexer by the end of the lecture, we'll finish that on Thursday.
Students have noted that there was a problem with the lecture slide upload (really, with the link to it in the course outline). That is now fixed and the slides are available. In future the slides will be available the day before.
2.35. Lecture Streaming
Lectures will be available in-person, recorded via Echo360, and streamed live. The Echo360 features will be available via moodle soon. The lectures will also be live-streamed via Zoom. The Zoom joining link has been posted on the forum. The forum link is in the website menu bar.
2.36. COMP3161/9164 in T3 2025
The course will be taught by Thomas Sewell and Rob Sison.
The course has been previously taught by Gabriele Keller, Liam O'Connor, Christine Rizkallah and Johannes Åman Pohjola and Craig McLaughlin.
Email us at cs3161@cse.unsw.edu.au about any COMP3161 or COMP9164 business.
2.37. First post!
Hello everyone, and welcome to COMP3161/9164 Concepts of Programming Languages.
The website is currently bare, but soon you should see more content, and a whole course taking shape. Catch you in the first lecture!