Modulbeschreibung

Programming Languages and Formal Methods

Kurzzeichen:
M_PLFM
Unterrichtssprache:
Deutsch
ECTS-Credits:
4
Leitidee:

The main aim of this module is to apply formal programming language based techniques for the construction and verification of computer programs.

 

Special emphasis will be made on techniques outside mainstream programming in the imperative object oriented programming style, and verification using unit testing.

 

 All participants are able to:

  • Construct programs in the functional style
  • Verify the correctness of functional programs
  • Explain the formal foundations of the techniques covered
Modulverantwortung:
Prof. Dr. Mehta Farhad D.
Standort (angeboten):
Rapperswil-Jona
Zusätzliche Eingangskompetenzen:

Englisch-Kenntnisse

(Dieses Modul wird auf Englisch durchgeführt.)

Modultyp:
Wahlpflicht-Modul für Informatik Retro STD_14_UG(Empfohlenes Semester: 4)Kategorien:Grundlagen Informatik (I-g), Grundlagen Informatik und Aufbau Informatik (I-gai)
Wahlpflicht-Modul für Application Design - Cloud Solutions STD_14 (PF)Kategorie:Kernmodule Informatik Profile (I-KMP)
Wahlpflicht-Modul für Generalist STD_14 (PF)Kategorie:Kernmodule Informatik Profile (I-KMP)
Wahlpflicht-Modul für Software Engineering STD_14 (PF)Kategorie:Kernmodule Informatik Profile (I-KMP)
Wahlpflicht-Modul für Informatik STD_11(Empfohlenes Semester: 4)Kategorie:Grundlagen Informatik (I-g)
Wahlpflicht-Modul für Informatik STD_14(Empfohlenes Semester: 4)Kategorien:Informatik (I_Inf), Rahmenausbildung (Kat_RA)
Modulbewertung:
Note von 1 - 6

Leistungsnachweise und deren Gewichtung

Modulschlussprüfung:
Schriftliche Prüfung, 120 Minuten

Inhalte

Angestrebte Lernergebnisse (Abschlusskompetenzen):

siehe oben

Modul- und Lerninhalt:

Functional programming (Haskell):

  • Referential transparency
  • Functions as first-class citizens
  • Higher-order functions
  • Algebraic datatypes
  • Pattern matching
  • Recursion
  • Types & type inference
  • Type classes
  • Functors, Applicative, Monads

 

Verification:

  • Property-based testing (Quickcheck)
  • Proving program correctness

 

Formal foundations:

  • Formal proof
  • Lambda calculus

 

General Programming language concepts:

  • Programming Paradigms
  • Evaluation strategies
  • Parameter passing

 

Special topics will be covered, depending on student interest and the time available in the current semester. Here are some examples of such topics covered in the past:

  • Type systems
  • Logic programming

 

The content of this course varies strongly in order to reflect student interest and recent developments in this area. It is therefore strongly recommended that you complete the examination in the same semester as you enrolled for this course.

 

This course will be taught in English.