Course Outline
Table of Contents
- 1. Course Staff
- 2. Course Details
- 3. Course Summary
- 4. Course Timetable
- 5. Course Constituents and Aims
- 6. Student Learning Outcomes
- 7. Assumed Knowledge
- 8. Teaching Rationale
- 9. Teaching Strategies
- 10. Assessment
- 11. Student Conduct
- 12. Course Schedule
- 13. Resources for Students
- 14. Course Evaluation and Development
The official course outline can be found on ECPLIS/ECOS. Nonetheless all the relevant information is here.
1. Course Staff
Staff Name | Role | |
Thomas Sewell | Lecturer in Charge | thomas.sewell at unsw.edu.au |
Rob Sison | Lecturer | r.sison at unsw.edu.au |
Adam Stucci | Course Admin and Tutor | a.stucci at unsw.edu.au |
Josh Lim | Tutor | .. |
Thomas Liang | Tutor | .. |
Thomas Qu | Tutor | .. |
Charran Kethees | Tutor | .. |
Mathieu Paturel | Tutor | .. |
2. Course Details
Course Code | COMP3161/COMP9164 |
Course Title | Concepts of Programming Languages |
Units of Credit | 6 |
Course Website | https://cse.unsw.edu.au/~cs3161 |
Handbook Entry | COMP3161; COMP9164 |
3. Course Summary
This course discusses and relates a range of programming language concepts and paradigms, including imperative, object-oriented, functional, concurrent & parallel programming. It covers the theoretical foundations (syntax, operational, axiomatic and denotational semantics) as well as practical development and implementation aspects (dynamic and strong typing, polymorphism, overloading, automatic memory management, and concurrency). Due to the course topic, a variety of programming languages will be studied and used. Assignments will be in the programming language Haskell, but no previous knowledge of Haskell is assumed.
4. Course Timetable
Official timetable can be found on the UNSW timetable website.
4.1. Lectures
Lectures will be delivered in-person, with a Zoom call for those participating online. Zoom details will be posted on the course forum.
Day | Time | Location |
Tuesday | 11:00-13:00 | Webster Theatre A (K-G15-190) |
Thursday | 11:00-13:00 | Webster Theatre A (K-G15-190) |
4.2. Tutorials
Multiple tutorials are on offer. See the
UNSW timetable website
for times and places. Students should enrol in a tutorial in the usual way.
Contact the class email
cs3161@cse.unsw.edu.au
if there is a problem attending the tutorial
you are enrolled in.
Tutorials are 90 minutes.
5. Course Constituents and Aims
5.1. Lectures
The lectures will introduce you to new material, which is being re-enforced and practised in tutorials in smaller groups. In addition to the lecture slides, we will provide lecture notes. Students are required to read these notes and other reading material as advised during the lecture and/or on the course web page. Informal exercises that are not graded will occasionally be supplied. There are four hours of lectures each week, however, time permitting, we will also cover extension topics on occasion in the fourth hour of the week's lectures.
5.2. Tutorials
Tutorials start in Week 1. The last tutorial will be held in Week 10. Tutorials will discuss problems related to the lecture material and the assignments. Tutorial problems will be handed out in advance and students may be asked to present the solution.
5.3. Assignments
There will be two programming assignments. They will be due approximately around Week 7 and Week 10. Students will have about two weeks to understand each assignment and to develop a solution.
If you wish to submit an assignment late, you may do so, but a late penalty reducing the mark applies to every late assignment. You can be up to five days late. Each day incurs a 5% penalty to the awarded mark. For example, an assignment that would ordinarily be worth 8.5/10 will be worth 7.5/10, if submitted 2 days late.
If you have special circumstances that warrant an assignment extension (e.g. illness), you need to apply for special consideration through the standard UNSW process. Teaching staff cannot grant such extensions. Please be aware of the fit to sit/submit rule: by submitting an assessment or sitting an exam, you implicitly declare yourself fit to do so, and cannot later apply for special consideration.
6. Student Learning Outcomes
After completing this course, a student should be able to:
- distinguish superficial (i.e., syntactic) from fundamental (i.e., semantic) differences of programming languages.
- read, write and reason about programs in various programming language paradigms, including imperative, object-oriented, functional and concurrent programming.
- use the basic tools of language design and analysis, including formal languages and formal descriptions of static and dynamic semantics.
- use modern language features, such as dynamic and strong typing, polymorphism, overloading, automatic memory management, and concurrency features.
The courses exposes students to a scientific theory of programming languages based on type theory and operational semantics as a mathematically sound framework which enables an objective analysis of the properties of a large number of programming language features. The tutorial format will give students practice in the presentation of solutions to an audience of peers, and will challenge them to critique peer technical presentations. Furthermore, the whole course encourages critical examination and analysis of existing solutions.
7. Assumed Knowledge
You need to have successfully completed the core programming, algorithm, and software development courses. You should be a confident coder and be prepared to study the concepts of a new programming language in directed self-study.
The prerequisites of COMP3161 are COMP2521 (or COMP1927). The prerequisite of COMP9164 is COMP9024.
The course makes use of a number of discrete mathematics concepts. While it is possible to do well in the course without having done MATH1081 or COMP2111, familiarity with logic and set theory is valuable when studying this course.
8. Teaching Rationale
The learning focus in this course is primarily on lectures and assignments including a theoretical assignment which you can use to test your preparedness for the final exam. While the assignments are graded and contribute to the final mark, their primary purpose is to facilitate learning by hands-on experience. Tutorial classes will give you a chance to discuss the lecture material and deepen your understanding.
9. Teaching Strategies
9.1. Lectures
The lectures will introduce you to new material, which is being reinforced and practised in tutorials and assignments. The course follows no particular textbook, but reading material covering specific topics will be identified throughout the course. Students are required to study reading material as advised during the lecture and/or on the course web page.
9.2. Tutorials
Tutorials aim to clarify ideas from lectures and to get you to explore the concepts in more depth. There will be a number of exercises set for each tutorial class. The aim of the class is not to simply get the tutor to give you the answers; the aim is to focus on just one or two of the exercises and work through them in detail, discussing as many aspects, alternative approaches, fine details, etc. as possible. You must be active and ask questions in tutorials. Ideally, students should run the entire tute themselves, with the tutor being a moderator and providing additional explanations.
9.3. Assignments
The purpose of the assignments is to apply the theoretical concepts we discuss in the lecture to a practical problem. All assignments will be completed individually; this means that you should do them yourself without assistance from others, except for asking advice from the teaching staff (lecturers and tutors) in this course. As noted above, they are an important vehicle for learning the material in this course. If you don't do them, or simply copy and submit someone else's work, you have wasted a valuable learning opportunity.
10. Assessment
The marks breakdown is as follows:
Assignment 0 | 15% |
Assignment 1 | 17.5% |
Assignment 2 | 17.5% |
Final Exam | 50% |
10.1. Assignments
Assignment Zero is a smaller assignment that focuses on theoretical topics and proofs. You will be given a series of proof exercises to complete and submit. Some of the questions given will be similar to exam questions. Assignments One and Two are programming assignments involving the implementation of a programming language.
All assignments are individual; i.e., no team work of any kind is permitted. The assignments are an extremely important part of the course. They are an essential way of learning the practical skills you need to acquire. Any plagiarism in assignments may lead to serious consequences. Read the plagiarism warning below for more details. For assignment 0, you will have approximately one week to complete it, but for assignments 1 and 2, you will have approximately two weeks from release of the specification until the submission deadline. The specifications will be posted on the course web page.
Assignment work can be completed on the workstations at CSE or on a computer at home. Your coding assignments must be able to run on CSE systems, so test them here if you develop them at home. Note that you can access these machines remotely using VLAB or ssh. Unless otherwise stated assignments must be submitted on-line from a school terminal using the give command, or via the give web interface.
It is in your best interest to make regular backup copies of your work and (because of machine loads on deadline days, for example) to complete assignments well before their deadlines. Moreover, the electronic submission system "give" allows you to submit an assigment multiple times; only the last submission will be marked. We suggest that you submit a version once you have a partially complete solution and repeatedly submit whenever you improved your solution significantly. In particular, make sure that you submit your solution once you have completed the core component of each assignment.
10.2. Final Exam
The final exam details have yet to be determined in light of the COVID crisis. Requests for a supplementary exam will only be considered 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 Student Lifecycle within three working days of the final exam.
11. Student Conduct
The Student Code of Conduct Information, Policy) sets out what the University expects from students as members of the UNSW community. As well as the learning, teaching and research environment, the University aims to provide an environment that enables students to achieve their full potential and to provide an experience consistent with the University's values and guiding principles. A condition of enrolment is that students inform themselves of the University's rules and policies affecting them, and conduct themselves accordingly.
In particular, students have the responsibility to observe standards of equity and respect in dealing with every member of the University community. This applies to all activities on UNSW premises and all external activities related to study and research. This includes behaviour in person as well as behaviour on social media, for example Facebook groups set up for the purpose of discussing UNSW courses or course work. Behaviour that is considered in breach of the Student Code Policy as discriminatory, sexually inappropriate, bullying, harassing, invading another's privacy or causing any person to fear for their personal safety is serious misconduct and can lead to severe penalties, including suspension or exclusion from UNSW.
If you have any concerns, you may raise them with your lecturer, or approach the School Ethics Officer, Grievance Officer, or one of the student representatives.
Plagiarism is defined as using the words or ideas of others and presenting them as your own. UNSW and CSE treat plagiarism as academic misconduct, which means that it carries penalties as severe as being excluded from further study at UNSW. There are several on-line sources to help you understand what plagiarism is and how it is dealt with at UNSW:
Make sure that you read and understand these. Ignorance is not accepted as an excuse for plagiarism. In particular, you are also responsible that your assignment files are not accessible by anyone but you by setting the correct permissions in your CSE directory and code repository, if using. Note also that plagiarism includes paying or asking another person to do a piece of work for you and then submitting it as your own work.
UNSW has an ongoing commitment to fostering a culture of learning informed by academic integrity. All UNSW staff and students have a responsibility to adhere to this principle of academic integrity. Plagiarism undermines academic integrity and is not tolerated at UNSW. Plagiarism at UNSW is defined as using the words or ideas of others and passing them off as your own.
If you haven't done so yet, please take the time to read the full text of
The pages below describe the policies and procedures in more detail:
12. Course Schedule
Please see the separate course schedule page for a detailed breakdown of course content over the 10 weeks of session.
13. Resources for Students
There is no textbook for the course. As tutorial and reference for Haskell, you can use any of these books:
- Thinking Functionally with Haskell, by Richard Bird, Cambridge University Press.
- Haskell Programming From First Principles by Christopher Allen and Julie Moronuki, Gumroad.
- Programming in Haskell, 2nd Edition by Graham Hutton, Cambridge University Press.
- 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.
The last two books in this list are available as online ebooks for free.
Further reading material will be announced in the lecture and/or on the course web page.
In addition, the Learning Haskell tutorial is written by former lecturers of this course and covers the basics of Haskell programming necessary to get started in COMP3161.
13.1. Getting Help
Questions regarding the course material, assignments, 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
cs3161@cse.unsw.edu.au
. 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), and include your
student id and your full name.
14. Course Evaluation and Development
The course is evaluated every term using the myExperience system, same as any other course. Your participation in the survey will be greatly appreciated.
Student feedback over the last years has generally been positive with a high student satisfaction rate. One change we have implemented recently, in response to student feedback, is longer tutorial slots.
We also do appreciate constructive criticism during the semester, as (in contrast to course surveys at the end), this allows us to address potential problems straight away.