Fortgeschrittene funktionale Programmierung
LVA 185.A05, VU 2.0, ECTS 3.0, 2021 S 1
Fortgeschrittene funktionale Programmierung
(zweistündige Vorlesung mit Übung; siehe auch
TISS/185.A05)
Are you interested in studying abroad and getting funding for this?
Information on funding opportunities is available
here.
Holding Mode: In-Person in Principle
The lecture course
185.A05 Advanced Functional
Programming is planned in principle as in-person course in the
summer term 2022. In case of new
COVID-19
restrictions in the course of the semester, the lecture course
as well as the complementary tutorials will be continued
online (Zoom) in terms of real-time video
conferences; this way the advantages of the directness of
in-person course meetings will be preserverd to the largest possible extent.
Course Meetings
The course starts with a preliminary meeting and the first lecture on
Thursday, 3 March 2022, 4.15 p.m. - 5.45
p.m..
Date and Time
| Place
| Topic Lecture
| Topic Flipped Classroom
|
Thu, 03/03/2022, 4.15 p.m. - 5.45 p.m.
| EI 4 Reithoffer HS
| Part I, Chap. 1; Part II, Chap. 2
| n.a. / Prel. Meeting
|
Thu, 03/10/2022, 4.15 p.m. - 5.45 p.m.
| EI 4 Reithoffer HS
| Part IV, Chap. 7, 8; Part II, Chap. 3
| Part I, Chap. 1; Part II, Chap. 2
|
Thu, 03/24/2022, 4.15 p.m. - 5.45 p.m.
| EI 4 Reithoffer HS
| Part II, Chap. 4; Part IV, Chap. 9 - 11, 14
| Part IV, Chap. 7, 8; Part II, Chap. 3
|
Thu, 04/07/2022, 4.15 p.m. - 5.45 p.m.
| EI 4 Reithoffer HS
| Part IV, Chap. 12, 13
| Part II, Chap. 4; Part IV, Chap. 9 - 11, 14
|
Thu, 04/28/2022, 4.15 p.m. - 5.45 p.m.
| EI 4 Reithoffer HS
| Part III, Chap. 5, 6
| Part IV, Chap. 12, 13
|
Thu, 05/12/2022, 4.15 p.m. - 5.45 p.m.
| EI 4 Reithoffer HS
| Part V, Chap. 15, 16
| Part III, Chap. 5, 6
|
Thu, 05/19/2022, 4.15 p.m. - 5.45 p.m.
| EI 4 Reithoffer HS
| Part V, Chap. 17, 18; Part VI, Chap. 19, 20
| Part V, Chap. 15, 16
|
Required changes are announced here. The notions
Part I, Part II, Part III, etc. refer to the respective parts of the
course notes.
Assignment
| Issueance
| First Delivery
| Second Delivery (default)
| max. Score
| (Corresp.) Tut. Meetings
|
1
| Monday, 03/21/2022
| Monday, 03/28/2022
| Monday, 04/04/2022
| 100
| CW 14: 04/04-04/08/2022
|
2
| Monday, 03/28/2022
| Monday, 04/04/2022
| Monday, 04/25/2022
| 100
| CW 17: 04/25-29/2022
|
3
| Monday, 04/04/2022
| Monday, 04/25/2022
| Monday, 05/02/2022
| 100
| CW 18: 05/02-06/2022
|
4
| Monday, 04/25/2022
| Monday, 05/02/2022
| Monday, 05/09/2022
| 100
| CW 19: 05/09-13/2022
|
|
|
|
|
| CW 20: 05/16-20/2022
|
Project
| Monday, 05/02/2022
| Friday, 06/13/2022
| n.a.
| 300
| CW 21: 05/23-27/2022
|
|
|
|
|
| CW 22: 05/30-06/03/2022
|
Project Demos
|
|
|
| 100
| CW 24-25: 06/13-24/2022
|
Signing on/Signing off
The signing on period via TISS at
TISS/185.A05 starts on February 1, 2022, and
ends on
Friday, 11 March 2022, 12.00 p.m.;
the signing off period ends on Friday, 25 March 2022, 12.00 p.m.
Subject and Aim
The course is concerned with advanced concepts and principles of
functional programming and their applications, which the participants
shall learn and conceive in depth and to use and apply competently and
adequately in known as well as in new application scenarios. The
lecture part of the course stretches from functional programming
principles to quality assurance, advanced languages concepts, and
applications. Regularly assigned exercises of the tutorial part of the
course give an hands-on experience of applying the concepts and
principles to problems of suitable kind, size and complexity to deepen
their understanding in theory and practice.
- Part I: Motivation
- Why Functional Programming Matters
- Part II: Programming Principles
- Programming with Streams
- Programming with Higher-Order Functions
- Equational Reasoning
- Functional Pearls
- Part III: Quality Assurance
- Part IV: Advanced Language Concepts
- Functional Arrays
- Abstract Data Types
- Monoids
- Functors
- Applicatives
- Monads
- Arrows
- Part V: Applications
- Parsing
- Logical Programming Functionally
- Pretty Printing
- Functional Reactive Programming
- Part VI: Extensions and Prospectives
- Extensions to Parallelism and Real World Programming
- Conclusions and Prospectives
- References
- Appendix
- Selected Reading Recommendations
- Basic
- Jens Knoop. Slides and companion material of
the course `LVA 185.A03 Funktionale Programmierung.'
Compilers and Languages Group, TU Vienna, WS 2019/2020.
- Simon Thompson. Haskell: The Craft of Functional Programming.
Addison-Wesley/Pearson, 3rd edition, 2011.
- Richard Bird. Thinking Functionally with Haskell.
Cambridge University Press, 2015.
- Greg Michaelson. An Introduction to Functional Programming
through Lambda Calculus.
Dover Publications, 2nd edition, 2011.
- Peter Pepper, Petra Hofstedt. Funktionale Programmierung:
Sprachdesign und Programmiertechnik. Springer-V., 2006.
- Simon Peyton Jones (Ed.). Haskell 98: Language and Libraries.
The Revised Report. Cambridge University Press, 2003.
- Advanced
- Jeremy Gibbons, Oege de Moor. The Fun of Programming.
Palgrave Macmillan, 2003.
- Bryan O'Sullivan, John Goerzen, Don Stewart.
Real World Haskell. O'Reilly, 2008.
- Tomas Petricek, Jon Skeet.
Real World Functional Programming:
With Examples in F# and C#.
Manning Publications Co., 2009.
- Chris Okasaki. Purely Functional Data Structures.
Cambridge University Press, 1999.
- Aaron Stump. Verified Functional Programming in Agda.
ACM Books Series, No. 9, 2016.
- Lectures on `Advanced Functional Programming.'
International Summer Schools 1995, 1996, 1998, 2002;
Springer-V., LNCS volumes 925, 1129, 1608, 2638.
Course Notes, Assignments, Project
Documents for the lecture and tutorial part of the course will be provided
on time in the TUWEL course of the course.
Lecturer
Jens Knoop, Tel.: 58801-18510, E-mail:
knoop@complang.tuwien.ac.at