Skip navigation
The Australian National University

COMP3610 and COMP6361, Principles of Programming Languages

Course overview

The course is built around an investigation of what programming languages are, and the notion of programs as artefacts. In particular, we will explore two key aspects of the study of programming languages and namely their semantics and syntax.

The syntax of programming languages is routinely defined by well-understood means, in terms of formal grammars and their relation to certain classes of automata. The course will introduce some basic algorithms and concepts of compiler theory such lexical analysis and parsing.

We will also survey some of the fundamental principles of the semantics and computational behaviour of programs. This is particularly important, e.g., in the context of safety-critical software, which requires a formal description of the 'meaning' and behaviour of programs in order to be able to provide mathematically sound guarantees on their behaviour. We will look at two of the dominant approaches: operational and axiomatic semantics. Finally, we will discuss an automata theoretic approach for program verification, which enables the automation of the verification process, and thus opens a way to develop push-button techniques to reason about software safety.

Note that we will be using Wattle website in order to track all the information regarding the course. In addition, we will be using Piazza for class discussion. This page is supposed to provide some basic information about the course and will not be updated during the semester.


There will be two lectures in most weeks:

  • Mondays at 2pm - 4pm in SRES theatre
  • Wednesdays at 4pm - 5pm in SRES theatre
Depending on the type of a tutorial/practical each week, it will take place either in a computer lab or in lecture hall. We will have two tutorials each week. Each student will need to register for one of them. We will provide more information regarding this when have the final course enrollment numbers.

The first practical class will be in Week 2. Please follow Wattle/Piazza to keep up-to-date regarding the course schedule.

Assessment Scheme

  • Hurdle assessment which checks basic background knowledge essential for the course will be put online in the beginning of week 1. In order to pass the hurdle you need to score at least 50% of points allocated to this hurdle assessment. The weight of this hurdle assessment in the final mark is 1%.
  • There will be two written assignments as well one programming assignment with the following weights:
    • written assignment 1: 5%
    • programming assignment: 20%
    • written assignment 2: 19%
  • There will be a 3 hour open book final examination with a weight of 55%. To pass the course, you need to score at least 40% in the exam. This is a hurdle.

Important Notes

  • Late assignments will not be accepted. There will be no extensions. Note that assignment due dates and return dates may vary from the schedule advertised above.
  • You mark for an assessment item can be revised within at most 2 weeks after its mark is released. Afterwards the mark is final.
  • We can request an oral examination to cross-check any of your submissions.
  • Plagiarism will be handled according to ANU's policies and procedures.
  • Course final results are subject to moderation.

Updated:  23 July 2018 / Responsible Officer:   JavaScript must be enabled to display this email address. / Page Contact:   JavaScript must be enabled to display this email address. / Powered by: Snorkel 1.4