Generic Programming

Short Name
Generische Programmierung
Module Code
CS2350
Module Coordinator
  • Thomas Karl Letschert
Teacher
  • Thomas Karl Letschert
Short Description

Techniques and concepts that are used to generalize programs and program components and thus making them more versatile.

Learning Objectives

On completion of this module students will know the diverse features of software components that make them amenable to generalizations. They know the theoretical foundations of these generalizations and are able to apply the principles and methods learned in this course to develop software that is highly versatile. They are able to do so in groups scrutinizing their findings and presenting and defending them in front of a critical audience.

Contents

Generic programming is about making programs and program components more general and thus making them more flexible and usable in diverse contexts. The topic usually is discussed either in a C++ based setting or as part of functional programming. Both conceptual approaches will be treated in a way that unifies common concepts.

Topic are:

  • Modeling types using concepts from category theory
  • Generic types, polymorphism
  • Algebraic design
  • Folds, monoids, functors, natural transformations and monads
  • Data type generic programming
  • Applications, examples of generic libraries
Duration in Semester
1
Instruction Language
German
Total Effort
6.0 CrP; an estimated 180 hours, of which approximately 60 are spent in class.
Weekly School Hours
4
Method of Instruction

Seminaristischer Unterricht 4 SWS

Requirements for the awarding of Credit Points

Prüfungsvorleistung: keine

Prüfungsleistung: Klausur oder mündliche Prüfung (Art und Umfang der Prüfungsleistung wird den Studierenden zu Beginn der Veranstaltung bekannt gegeben)

Availability
Yearly
References
  • P. Chiusano, R. Bjarnason: Functional Programming in Scala, Manning 2015
  • A. Stepanov, E. Rose: From Mathematics to Generic Programming, Pearson 2015
  • Klassische Forschungsberichte nach Bedarf.