185.A03 Functional Programming
This course is in all assigned curricula part of the STEOP.
This course is in at least 1 assigned curriculum part of the STEOP.

2020W, VU, 2.0h, 3.0EC, to be held in blocked form
TUWEL

Properties

  • Semester hours: 2.0
  • Credits: 3.0
  • Type: VU Lecture and Exercise
  • Format: Hybrid

Learning outcomes

After successful completion of the course, students are able to (among others)

  • explain the basic principles and concepts of the functional programming style and its theoretical foundation, to distinguish it from other programming styles like procedural, object-oriented, logical programming, and to identify and illustrate them considering the functional programming language Haskell.
  • solve programming tasks in-the-small by means of task-adequate Haskell programs, to develop expressive test cases to validate these programs, and to execute them using an interpreter like GHCi or Hugs.
  • explain the meaning and evaluation process of Haskell programs in a step-by-step manner for various evaluation orders.
  • reason about the chosen proceeding of programming and non-programming related issues factually and professionally.
  • investigate, assess, and compare Haskell programs with respect to syntactical and semantical correctness, generality, reusability, efficiency and performance properties, and adequate usage of functional language concepts.

This course is held in German. Without sufficient command of the German language you are unlikely to benefit from attending the course.

Subject of course

The course introduces the principles and concepts of functional
programming, where it stretches from the foundations to the
application. Using concrete problems as examples it will be
demonstrated and discussed how to use them for solving problems in the
tutorials complementing the course. Own proposals to solve
specific problems shall be presented and put up for
discussion. Practical assignments as part of the lab tutorial offer
the opportunity to independently apply and practice the functional
programming style, and to gain a deep practical understanding of the
concepts and principles of functional programming. For demonstration
and implementation in course and tutorials the state-of-the-art
functional programming language Haskell is used.

Part I: Introduction

  • Motivation

Part II: Basics

  • Elementary types, tuples, lists, strings
  • Functions
  • Type synonyms, new types, type classes
  • Algebraic data type declarations
  • Patterns and more

Part II: Applicative Programming      

  • Recursion
  • Evaluating expressions
  • Program development, program understanding

Part IV: Functional Programming

  • Higher-order functions
  • Polymorphism

Part V: Foundations of Functional Programming

  • Lambda calculus
  • Evaluation orders
  • Type checking, type inference

Part VI: Extensions and Advanced Concepts

  • Input and output
  • Error handling
  • Modules
  • Reflexive programming
  • Programming with streams and higher-order functions

Part VII: Conclusions

  • Looking back, looking ahead

References

Appendix

  • Formal models of computation
  • Other functional languages
  • Aspects of Implementation

Selected Reading Recommendations

  • Simon Thompson. Haskell: The Craft of Functional Programming.
    Addison-Wesley/Pearson, 3rd edition, 2011.
  • Ernst-Erich Doberkat. Haskell: Eine Einführung für Objektorientierte.
    Oldenbourg Verlag, 2012.
  • Peter Pepper. Funktionale Programmierung in OPAL, ML, Haskell und Gofer.
    Springer-V., 2nd edition, 2003.
  • Simon Peyton Jones (Edt.). Haskell 98: Language and Libraries.
    The Revised Report. Cambridge University Press, 2003.

Teaching methods

The course is run in a hybrid mode (on campus and online).

  • Guided self-dependent learning and practicing: guided by means of lecture and flipped classroom sessions, the self-dependent learning and practicing of the competencies described in the learning outcomes utilizing lecture notes, theoretical and practical exercises, and self-reliantly chosen further material from text books, tutorials, and scientific articles proposed for further reading.
  • Role model and feedback-oriented learning: Presenting, explaining, comparing, contrasting, and rating own and others solutions of assignments in tutor-guided tutorials.
  • Self-assessment tests: Tests supporting the regular self-assessment and self-reflection of one's own previous progress and success of learning.

This course is held in German. Without sufficient command of the German language you are unlikely to benefit from attending this course.

Mode of examination

Immanent

Additional information

ECTS Break Down:

The course is assigned 3.0 ECTS points. This corresponds to an average
workload of 75 hours. This average workload is divided among the
various learning activities of the course as follows (Part I to Part VII refer to the respective parts of the course notes):

  • Guided learning activities (Hybrid Mode, 21.5h)
    • Lecture: 5.25h (7 online units * 0.75h)
    • Flipped classroom: 3.5h (7 online units * 0.5h)
    • Small group tutorials: 7.5h (3 on campus units * 1.5h, 4 online units * 0.75h)
    • Big group tutorials: 5.25h (7 on campus units * 0.75h)
  • Independent learning activities (Home Universitying, 52.0h)
    • Self-dependent acquirement of learning outcomes: 28.0h (Reference point: Part I/3.0h, Part II/5.0h, Part III/3.0h, Part IV/6.0h, Part V/6.0h, Part VI/4.0h, Part VII/1.0h)
    • In particular: Solving assignments: 22.0h (Reference point: 4 Assignments * 2.5h + 3 Assignments * 4.0h)
    • Preparation for the written tests: 2.0h
  • Written test (On Campus, 1.5h)

The course starts with a preliminary course meeting and the first lecture on Tuesday, 6 October 2020, 08.15am-09.45am, exclusively online in the form of a video conference. The access information for joining the video conference will be posted on time as a TISS message.

Lecturers

Institute

Course dates

DayTimeDateLocationDescription
Fri12:00 - 13:0009.10.2020 - 15.01.2021complang-Labor Tutorensprechstunde
Tue09:00 - 11:0027.10.2020 - 15.12.2020Informatikhörsaal Functional Programming
Wed16:00 - 18:0028.10.2020 - 16.12.2020Informatikhörsaal Großraumübung
Functional Programming - Single appointments
DayDateTimeLocationDescription
Fri09.10.202012:00 - 13:00complang-Labor Tutorensprechstunde
Fri16.10.202012:00 - 13:00complang-Labor Tutorensprechstunde
Fri23.10.202012:00 - 13:00complang-Labor Tutorensprechstunde
Tue27.10.202009:00 - 11:00Informatikhörsaal Functional Programming
Wed28.10.202016:00 - 18:00Informatikhörsaal Großraumübung
Fri30.10.202012:00 - 13:00complang-Labor Tutorensprechstunde
Tue03.11.202009:00 - 11:00Informatikhörsaal Functional Programming
Wed04.11.202016:00 - 18:00Informatikhörsaal Großraumübung
Fri06.11.202012:00 - 13:00complang-Labor Tutorensprechstunde
Tue10.11.202009:00 - 11:00Informatikhörsaal Functional Programming
Wed11.11.202016:00 - 18:00Informatikhörsaal Großraumübung
Fri13.11.202012:00 - 13:00complang-Labor Tutorensprechstunde
Tue17.11.202009:00 - 11:00Informatikhörsaal Functional Programming
Wed18.11.202016:00 - 18:00Informatikhörsaal Großraumübung
Fri20.11.202012:00 - 13:00complang-Labor Tutorensprechstunde
Fri27.11.202012:00 - 13:00complang-Labor Tutorensprechstunde
Tue01.12.202009:00 - 11:00Informatikhörsaal Functional Programming
Wed02.12.202016:00 - 18:00Informatikhörsaal Großraumübung
Fri04.12.202012:00 - 13:00complang-Labor Tutorensprechstunde
Wed09.12.202016:00 - 18:00Informatikhörsaal Großraumübung
Course is held blocked

Examination modalities

Assessment of the programming assignments and written tests
on the lecture and tutorial material.

Detailed information on the assessment procedures and modalities are given
in the notes of the preliminary course meeting (cf. homepage of the course).

Exams

DayTimeDateRoomMode of examinationApplication timeApplication modeExam
Thu16:00 - 18:0014.01.2021EI 7 Hörsaal - ETIT written07.12.2020 12:00 - 11.01.2021 12:00TISSWS20 - Test 1
Thu16:00 - 18:0014.01.2021EI 3 Sahulka HS written07.12.2020 12:00 - 11.01.2021 12:00TISSWS20 - Test 1
Fri - 05.03.2021EI 7 Hörsaal - ETIT written15.02.2021 12:00 - 02.03.2021 12:00TISSWS20 - Test 2
Fri - 07.05.2021written16.04.2021 12:00 - 03.05.2021 12:00TISSWS20 - Test 3 (nicht 07.05.2021, zu verlegen auf 28.05.2021)
Mon - 07.06.2021GM 1 Audi. Max.- ARCH-INF written27.05.2021 10:00 - 03.06.2021 08:00TISSObsolet für WS20 (Corona-Terminübernahme aus WS19)
Fri - 25.06.2021written31.05.2021 12:00 - 23.06.2021 12:00TISSObsolet für WS20 (Corona-Terminübernahme aus WS19)

Group dates

GroupDayTimeDateLocationDescription
Übungsgruppe 1 - SPKTue16:00 - 18:0027.10.2020 - 15.12.2020FAV Hörsaal 1 - INF 185.A03 Functional Programming Übungsgruppe 1 - SPK
Übungsgruppe 1 - SPKWed08:00 - 10:0009.12.2020FAV Hörsaal 1 - INF 185.A03 Functional Programming Übungsgruppe 1 - SPK
Übungsgruppe 2 - SPKThu08:00 - 10:0029.10.2020 - 17.12.2020FAV Hörsaal 1 - INF 185.A03 Functional Programming Übungsgruppe 2 - SPK
Übungsgruppe 3 - SPKThu11:00 - 13:0029.10.2020 - 17.12.2020FAV Hörsaal 1 - INF 185.A03 Functional Programming Übungsgruppe 3 - SPK
Übungsgruppe 4 - SPKThu14:00 - 16:0029.10.2020 - 17.12.2020FAV Hörsaal 1 - INF 185.A03 Functional Programming Übungsgruppe 4 - SPK
Übungsgruppe 5 - SPKFri08:00 - 10:0030.10.2020 - 18.12.2020FAV Hörsaal 1 - INF 185.A03 Functional Programming Übungsgruppe 5 - SPK
Übungsgruppe 6 - SPKFri11:00 - 13:0030.10.2020 - 18.12.2020FAV Hörsaal 1 - INF 185.A03 Functional Programming Übungsgruppe 6 - SPK

Course registration

Begin End Deregistration end
30.08.2020 01:00 09.10.2020 12:00 30.10.2020 12:00

Registration modalities:

Die Anmeldung zur Lehrveranstaltung erfolgt über TISS. Diese ist
maßgeblich für die Teilnahme an der Lehrveranstaltung und unterliegt
den in den Studienplänen genannten Voraussetzungen.

Nach Abschluss der Anmeldeperiode wird für die Studierenden mit
valider Anmeldung ein persönliches Benutzerkonto auf der Maschine
g0.complang.tuwien.ac.at eingerichtet. Benutzerkennung und erstes
Losungswort werden jedem Teilnehmer durch Nachricht an die
Standardadresse <e-Matr.Nr>@student.tuwien.ac.at mitgeteilt. Dieses
erste Losungswort ist im Zuge des ersten Einbuchens auf das
Benutzerkonto durch ein selbstgewähltes neues Zugangswort zu ersetzen.


Group Registration

GroupRegistration FromTo
KÜG 1 (Di 16-18, 4PT/3OLT, Jana Chadt)20.10.2020 08:0023.10.2020 14:00
KÜG 2 (Do 8-10, 4PT/3OLT, Lukas Grassauer)20.10.2020 08:0023.10.2020 14:00
KÜG 3 (Do 11-13, 4PT/3OLT, Samuel Pilz)20.10.2020 08:0023.10.2020 14:00
KÜG 4 (Do 14-16, 4 PT/3OLT, Jana Chadt)20.10.2020 08:0023.10.2020 14:00
KÜG 5 (Fr 8-10, 4 PT/3OLT, Lukas Grassauer)20.10.2020 08:0023.10.2020 14:00
KÜG 6 (Fr 11-13, 4PT/3OLT, Lukas Grassauer)21.10.2020 08:0023.10.2020 14:00
KÜG 7 (Di 16-18, 3PT/4OLT, Hannes Siebenhandl)20.10.2020 08:0023.10.2020 14:00
KÜG 8 (Do 8-10, 3PT/4OLT, Samuel Pilz)20.10.2020 08:0023.10.2020 14:00
KÜG 9 (Do 11-13, 3PT/4OLT, Hannes Siebenhandl)20.10.2020 08:0023.10.2020 14:00
KÜG 10 (Do 14-16, 3PT/4OLT, Hannes Siebenhandl)20.10.2020 08:0023.10.2020 14:00
KÜG 11 (Fr 8-10, 3PT/4OLT, Samuel Pilz)20.10.2020 08:0023.10.2020 14:00
KÜG 12 (Fr 11-13, 3PT/4OLT, Jana Chadt)20.10.2020 08:0023.10.2020 14:00
KÜG 13 (Mi 15-16, Online only, Niki Herl)20.10.2020 08:0023.10.2020 14:00
KÜG 14 (Fr 15-16, Online only, Niki Herl)20.10.2020 08:0023.10.2020 14:00
KÜG 15 (Fr 17-18, Online only, Niki Herl)20.10.2020 08:0023.10.2020 14:00
Obsolet // KÜG 1 (Di 16-18, 4 PT/3OLT, Jana Chadt)20.10.2020 08:0022.10.2020 18:00
Obsolet // KÜG 2 (Do 8-10, 4PT/3OLT, Lukas Grassauer)20.10.2020 08:0022.10.2020 18:00
Obsolet // KÜG 3 (Do 11-13, 4PT/3OLT, Samuel Pilz)20.10.2020 08:0022.10.2020 18:00
Obsolet // KÜG 4 (Do 14-16, 4PT/3OLT. Jana Chadt)20.10.2020 08:0022.10.2020 18:00
Obsolet // KÜG 5 (Fr 8-10, 4PT/3OLT, Lukas Grassauer)20.10.2020 08:0022.10.2020 18:00
Obsolet // KÜG 6 (Fr 11-13, 4PT/3OLT, Lukas Grassauer)20.10.2020 08:0022.10.2020 18:00
Obsolet // KÜG 7 (Di 16-18, 3PT/4OLT, Hannes Siebenhandl)20.10.2020 08:0022.10.2020 18:00
Obsolet // KÜG 8 (Do 8-10, 3PT/4OLT, Samuel Pilz)20.10.2020 08:0022.10.2020 18:00
Obsolet // KÜG 9 (Do 11-13, 3PT/4OLT, Hannes Siebenhandl)20.10.2020 08:0022.10.2020 18:00
Obsolet // KÜG 10 (Do 14-16, 3PT/4OLT, Hannes Siebenhandl)20.10.2020 08:0022.10.2020 18:00
Obsolet // KÜG 11 (Fr 8-10, 3PT/4OLT, Samuel Pilz)20.10.2020 08:0022.10.2020 18:00
Obsolet // KÜG 12 (Fr 11-13, 3PT/4OLT, Jana Chadt)20.10.2020 08:0022.10.2020 18:00
Obsolet // KÜG 13 (Mi 15-16, Online only, Niki Herl)20.10.2020 08:0022.10.2020 18:00
Obsolet // KÜG 14 (Fr 15-16, Online only, Niki Herl)20.10.2020 08:0020.10.2020 18:00
Obsolet // KÜG 15 (Fr 17-18, Online only, Niki Herl)20.10.2020 08:0022.10.2020 18:00
Plenumsübungsgruppe I (Di 9-10)20.10.2020 08:0022.10.2020 18:00
Plenumsübungsgruppe II (Mi 16-17)20.10.2020 08:0022.10.2020 18:00
Übungsgruppe 1 - SPK09.10.2020 08:0015.10.2020 20:00
Übungsgruppe 2 - SPK09.10.2020 08:0015.10.2020 20:00
Übungsgruppe 3 - SPK09.10.2020 08:0015.10.2020 20:00
Übungsgruppe 4 - SPK09.10.2020 08:0015.10.2020 20:00
Übungsgruppe 5 - SPK09.10.2020 08:0015.10.2020 20:00
Übungsgruppe 6 - SPK09.10.2020 08:0015.10.2020 20:00

Curricula

Study CodeSemesterPrecon.Info
033 526 Business Informatics STEOP
Course requires the completion of the introductory and orientation phase
033 534 Software & Information Engineering 3. SemesterSTEOP
Course requires the completion of the introductory and orientation phase
033 535 Computer Engineering STEOP
Course requires the completion of the introductory and orientation phase
860 GW Optional Courses - Technical Mathematics STEOP
Course requires the completion of the introductory and orientation phase

Literature

No lecture notes are available.

Previous knowledge

  • General: Mastering of the professional, methodological, cognitive, practical, social and self-competencies instructed in the lectures of the 1st study year on the competency levels to be achieved there.
  • Specifically: Abstract thinking, mathematical-logical thinking and diction.

Preceding courses

Continuative courses

Miscellaneous

Language

German