SWEN 438Special Topic: Automated Program Analysis

The course will look at different techniques that can be used to automatically discover bugs and vulnerabilities in software. The course covers both static and dynamic techniques and discusses the pros and cons of various approaches. Students will develop their own program analyses, and learn how to use existing state-of-the-art tools.

On this page

Choose when and where to take this course.

No information for 2022

SWEN 438 is not offered in 2022. We're showing course information for 2025.

Academic year
Course options (1)
Select a course offering to view its details below
Select a course offering to view its details
Select offering Dates Location
Trimester One of three teaching periods that make up the academic year—usually March to June, July to October, and November to February.
CRN A unique number given to a single version of a course. It differentiates between courses with the same course code that are taught in different trimesters or streams, or in different modes (for example, in person or online).

Course details

Dates
7 Jul 2025 to 9 Nov 2025
Starts
Trimester 2
Fees
NZ$1,197.60 for
International fees
NZ$5,477.70
Lecture start times
  • Monday 11.00am
  • Wednesday 11.00am
Campus
Kelburn
Estimated workload
Approximately 150 hours or 8.8 hours per week for 17 weeks
Points
15

Entry restrictions

Prerequisites
Corequisites
None
Restrictions
None

Taught by

School of Engineering and Computer ScienceFaculty of Engineering

Key dates

Find important dates—including mid-trimester teaching breaks—on the University's key dates calendar.

You'll be told about assessment dates once the course has begun.

Key dates

About this course

This course focuses on engineering practices for automated software quality assessment, covering both source code and binary analysis. It explores a range of static and dynamic techniques used to evaluate software quality.

Building on knowledge from 300-level software engineering courses, students will apply these concepts in weekly labs, alternating with help desk sessions designed to support progress on assignment tasks.

Course learning objectives

Students who pass this course will be able to:

  1. Explain the basic principles of static and dynamic program analysis.

  2. Assess the properties of different program analyses with respect to recall, soundness, precision, provenance and scalability.

  3. Use the standard program representations and computational models for static program analysis.

  4. Use state-of-the-art static program analysis tools for bug and vulnerability detection, and interpret the analysis results.

  5. Understand and use code instrumentation.

  6. Use advanced testing techniques including automated input and test generation.

  7. Explain the causes of test flakiness and strategies how to mitigate them.

  8. Write formal grammars to define domain-specific languages and generate parsers for those grammars.

How this course is taught

During the trimester there will be two lectures and four hours of help desk per week.

Assessment

  • Exam (2 hours, during assessment period) Type: IndividualMark: 40%
  • Assignment 1 Type: IndividualMark: 20%
  • Assignment 2 Type: IndividualMark: 20%
  • Assignment 3 Type: IndividualMark: 20%

Assessment dates and extensions

Once you've signed up to this course, you can use to see due dates for assessments and information about extensions.

Mandatory requirements

There are no mandatory requirements for this course.

Group work

This course includes two individual assessment items based on group work over Course Weeks 2-12 including the mid-trimester break.

Lecture times and rooms

What you’ll need to get

You do not need to get any texts or equipment for this course.

Who to contact

Jens Dietrich portrait

Dr Jens Dietrich

Course Coordinator

Past versions of this course

You may be able to access older versions of this course through our course archive.

View course archive

Student feedback

You can search for and read previous students’ feedback on this course.

Student feedback database

Selected offering

SWEN 438

7 Jul–9 Nov 2025

Trimester 2 · CRN 18597

2025 course optionsOptions (1)