Functional programming and property-based testing

Academic Study Board of the Faculty of Engineering

Teaching language: English
EKA: T520016102, T520016112
Censorship: Second examiner: Internal, Second examiner: None
Grading: 7-point grading scale, Pass/Fail
Offered in: Odense
Offered in: Spring
Level: Master

Course ID: T520016101
ECTS value: 5

Date of Approval: 07-04-2021


Duration: 1 semester

Version: Archive

Course ID

T520016101

Course Title

Functional programming and property-based testing

ECTS value

5

Internal Course Code

SM2-TES

Responsible study board

Academic Study Board of the Faculty of Engineering

Administrative Unit

Mærsk McKinney Møller Instituttet

Date of Approval

07-04-2021

Course Responsible

Name Email Department
Mikkel Baun Kjærgaard mbkj@mmmi.sdu.dk SDU Software Engineering, Mærsk Mc-Kinney Møller Instituttet
Sofie Birch sbirch@tek.sdu.dk TEK Uddannelse, Det Tekniske Fakultet

Teachers

Name Email Department City
Jan Midtgaard jmid@mmmi.sdu.dk SDU Software Engineering, Mærsk Mc-Kinney Møller Instituttet

Programme Secretary

Name Email Department City
Anna Schollain avs@tek.sdu.dk TEK Uddannelseskoordinering og -support, Det Tekniske Fakultet

Offered in

Odense

Level

Master

Offered in

Spring

Duration

1 semester

Mandatory prerequisites

  • Introductory programming
  • Algorithms and data structures
  • Discrete mathematics

Learning objectives - Knowledge

  • knowledge of the functional programming paradigm
  • knowledge of property-based testing concepts (and the limitations)

Learning objectives - Skills

  • the ability to program in a functional programming language
  • the ability to formulate and program property-based tests for automated testing

Learning objectives - Competences

  • to reflect on the differences between an imperative and a functional solution
  • to reflect on corner cases for a given test domain
  • to evaluate the strength of a given test generator and/or property for an automated test

Content

The course is two-fold. 

On the one hand it introduces functional programming:
Immutable data, algebraic datatypes, pattern matching, recursion, functions as first-class values, proper tail calls, type-directed programming and functional programming patterns.

On the other hand it introduces 'Property-based testing' (QuickCheck) (next generation automated testing) expressed within the functional programming context:
Generators, properties, shrinking, statistics of generators, type-directed testing, testing of imperative code while touching upon a number of more general testing concepts as debugging, unit-testing, corner cases, blackbox and whitebox testing and fuzzing.

Finally the course covers a number of real-world case studies of property-based testing, e.g., an automated test of the AUTOSAR specification for Volvo.

URL for Skemaplan

Teaching Method

Lectures combined with hands-on lab work.

Number of lessons

48 hours per semester

Teaching language

English

Examination regulations

Exam regulations

Name

Exam regulations

Examination is held

By the end of the semester

Tests

Exam

EKA

T520016102

Name

Exam

Description

Grading is based on an overall assessment of: 

  • an oral examination
  • group report

Form of examination

Oral examination

Censorship

Second examiner: Internal

Grading

7-point grading scale

Identification

Student Identification Card - Date of birth

Language

English

ECTS value

5

Exam regulations

Name

Exam regulations

Examination is held

By the end of the semester

Tests

Examination conditions

EKA

T520016112

Name

Examination conditions

Description

Submission of project report on time and in accordance with the requirements specified at the start of the semester. 

Form of examination

Compulsory assignment

Censorship

Second examiner: None

Grading

Pass/Fail

Identification

Student Identification Card - Date of birth

Language

English

ECTS value

0

Courses offered

Offer period Offer type Profile Education Semester

Studieforløb

Profile Education Semester Offer period