COSC434-24S2 (C) Semester Two 2024

Special Topic

15 points

Start Date: Monday, 15 July 2024
End Date: Sunday, 10 November 2024
Withdrawal Dates
Last Day to withdraw from this course:
  • Without financial penalty (full fee refund): Sunday, 28 July 2024
  • Without academic penalty (including no fee refund): Sunday, 29 September 2024


Special Topic



Programming languages are well accepted as one of the core subjects that every computer scientist should master. The existence of thousands of high-level programming languages reflects the variety of people’s understanding about computation over time, as well as how programming language design demonstrates fitness for special purposes, such as the distinctive requirements from systems programming, software design and web development.

COSC434 introduces the important concepts fundamental for programming languages theories and their implementations. These concepts should also be useful for software engineers who are everyday users of various programming languages to gain a deeper understanding of the tools they use and the artifacts they create. The course also covers program semantics and program verification, which are powerful tools for guaranteeing quality of software, e.g., correctness of program transformations and free of certain types of bugs.


SENG201 Software Engineering, COSC261 Formal Languages and Compilers.

Learning Outcomes

As a result of completing this course students will be able to:

1. Analyse (and self-reflect on) the history of programming languages and its relationship to today's computer science and software engineering practices;

2. Compare and contrast various programming paradigms of declarative languages, imperative languages, object-oriented languages, and understand the distinction between them;

3. Write code in a functional programming language at intermediate level of difficulty;

4. Apply static semantics in program analysis, using concepts such as scope and binding rules, type systems, and type inference in related analyses;

5. Apply dynamic semantics and program verification techniques for showing the validity of program properties.

6. Critically analyse existing literature relating to type system, program semantics, program verification, and other aspects related to the course.


Subject to approval of the Head of Department.

Timetable 2024

Students must attend one activity from each section.

Lecture A
Activity Day Time Location Weeks
01 Monday 09:00 - 11:00 Psychology - Sociology 210
15 Jul - 25 Aug
9 Sep - 20 Oct
Computer Lab A
Activity Day Time Location Weeks
01 Thursday 13:00 - 15:00 Jack Erskine 134 Lab 3
15 Jul - 25 Aug
9 Sep - 20 Oct

Timetable Note

Time Commitment: 150 hours

24hr Lecture (2hr/week – 12 weeks)

24hr Laboratory (working on quizzes)

102hr Self-directed learning (reading notes, books, and writing essay)

Course Coordinator

For further information see Computer Science and Software Engineering Head of Department


Quizzes - 20%

Final Exam - 50%

Literature survey / Essay - 30%

Textbooks / Resources

Recommended reading

Michael L. Scott: Programming Language Pragmatics (2016, 4th Edition), Morgan Kaufmann (Elsevier), ISBN:9780124104099

John C. Mitchell: Concepts in Programming Languages (2003) Cambridge University Press, ISBN:0521780985: The (UC) library has one copy of this book; an ebook with unlimited use and DRM free is also available at the (UC) library.

Benjamin C. Pierce: Types And Programming Language Hardcover (2002) The MIT Press, ISBN:9780262303828: An electronic copy of this text is available at:

Indicative Fees

Domestic fee $1,110.00

* All fees are inclusive of NZ GST or any equivalent overseas tax, and do not include any programme level discount or additional course-related expenses.

For further information see Computer Science and Software Engineering .

All COSC434 Occurrences

  • COSC434-24S2 (C) Semester Two 2024