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.

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

Properties

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

Aim of course

The students gain a comprehensive theoretical and practical
understanding of the foundations, principles, and concepts of
functional programming, learn to valuate their eligibility for the
solution of programming tasks, and to apply them adequately and
meaningfully in the functional programming style.

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
complementary plenary tutorial Haskell Live. Own proposals to solve
specific problems can 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
  • Data type declarations, algebraic types
  • 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
  • Programming principles, programming with streams and higher-order functions

Part VII: Conclusions and Looking Ahead

  • Conclusions, looking ahead

References

Appendix

  • Formal models of computation
  • Other functional languages

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 parts of the course as follows:

  • Attending the lectures, pre- and post-processing: 30 hours.
  • Attending the plenary tutorial "Haskell Live," attending "Haskell Private", pre- and post-processing: 10 hours.
  • Programming assignments: 30 hours.
  • Preparation for the examination and written examination: 5 hours.

The lecture course starts on Tuesday, 3 October 2017, 08.15am-09.45am.

Lecturers

Institute

Course dates

DayTimeDateLocationDescription
Tue08:00 - 10:0003.10.2017 - 16.01.2018Informatikhörsaal - ARCH-INF Functional Programming
Thu17:00 - 19:0005.10.2017Informatikhörsaal - ARCH-INF LVA 185.A03 Functional Programming
Fri17:00 - 19:0006.10.2017Informatikhörsaal - ARCH-INF (Ersatztermin)
Tue10:00 - 11:0010.10.2017 - 23.01.2018 EAEG19 CL-LabTutorensprechstunde
Fri14:00 - 15:0013.10.2017 - 12.01.2018Informatikhörsaal - ARCH-INF Funktionale Programmierung
Wed08:00 - 10:0020.12.2017HS 17 Friedrich Hartmann - ARCH LVA 185.A03 Functional Programming
Functional Programming - Single appointments
DayDateTimeLocationDescription
Tue03.10.201708:00 - 10:00Informatikhörsaal - ARCH-INF Functional Programming
Thu05.10.201717:00 - 19:00Informatikhörsaal - ARCH-INF LVA 185.A03 Functional Programming
Fri06.10.201717:00 - 19:00Informatikhörsaal - ARCH-INF (Ersatztermin)
Tue10.10.201708:00 - 10:00Informatikhörsaal - ARCH-INF Functional Programming
Tue10.10.201710:00 - 11:00 EAEG19 CL-LabTutorensprechstunde
Fri13.10.201714:00 - 15:00Informatikhörsaal - ARCH-INF Funktionale Programmierung
Tue17.10.201710:00 - 11:00 EAEG19 CL-LabTutorensprechstunde
Fri20.10.201714:00 - 15:00Informatikhörsaal - ARCH-INF Funktionale Programmierung
Tue24.10.201710:00 - 11:00 EAEG19 CL-LabTutorensprechstunde
Fri27.10.201714:00 - 15:00Informatikhörsaal - ARCH-INF Funktionale Programmierung
Tue31.10.201708:00 - 10:00Informatikhörsaal - ARCH-INF Functional Programming
Tue31.10.201710:00 - 11:00 EAEG19 CL-LabTutorensprechstunde
Fri03.11.201714:00 - 15:00Informatikhörsaal - ARCH-INF Funktionale Programmierung
Tue07.11.201708:00 - 10:00Informatikhörsaal - ARCH-INF Functional Programming
Tue07.11.201710:00 - 11:00 EAEG19 CL-LabTutorensprechstunde
Fri10.11.201714:00 - 15:00Informatikhörsaal - ARCH-INF Funktionale Programmierung
Tue14.11.201708:00 - 10:00Informatikhörsaal - ARCH-INF Functional Programming
Tue14.11.201710:00 - 11:00 EAEG19 CL-LabTutorensprechstunde
Fri17.11.201714:00 - 15:00Informatikhörsaal - ARCH-INF Funktionale Programmierung
Tue21.11.201708:00 - 10:00Informatikhörsaal - ARCH-INF Functional Programming
Course is held blocked

Examination modalities

Assessment of the programming assignments and the written examination
on the lecture and tutorial material. Further information on the
examination modalities are given on the homepage of the course.

Exams

DayTimeDateRoomMode of examinationApplication timeApplication modeExam
Fri10:00 - 12:0031.05.2024FH Hörsaal 1 - MWB written29.04.2024 02:00 - 24.05.2024 18:00TISSSchriftlicher Test 3 auf Papier / Fr, 02.06.2023, 10-12 Uhr

Course registration

Begin End Deregistration end
02.10.2017 12:00 13.10.2017 12:00 13.10.2017 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 Losungswort zu ersetzen.


Curricula

Study CodeObligationSemesterPrecon.Info
033 534 Software & Information Engineering Mandatory3. SemesterSTEOP
Course requires the completion of the introductory and orientation phase
033 535 Computer Engineering Mandatory electiveSTEOP
Course requires the completion of the introductory and orientation phase
860 GW Optional Courses - Technical Mathematics Not specifiedSTEOP
Course requires the completion of the introductory and orientation phase

Literature

No lecture notes are available.

Preceding courses

Continuative courses

Miscellaneous

Language

German