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: Online
According to current
COVID-19 restrictions and
directives of the
vice rectorate for academic affairs
and the
dean's office of academic affairs from
January 26 and January 30, 2021, all lecture courses must
be held
online in the summer term of 2021, and hence
the course
185.A05 Advanced Functional
Programming.
Advantages and benefits of the directness of
face-to-face course meetings shall be preserved
to the largest possible extent.
All course and tutorial meetings will thus be held as
real-time video conferences.
Course Meetings
The course starts with a preliminary meeting and the first lecture
via Zoom on
Thursday, 4 March 2021, 4.15 p.m. - 6.00 p.m.. The
Zoom-Link has been posted as a TISS message on 1 March 2021; it
can also be found on the news board for course news in
TISS and in the complementary
TUWEL course.
Date and Time
| Place
| Topic Lecture
| Topic Flipped Classroom
|
Thu, 03/04/2021, 4.15 p.m. - 6.00 p.m. (Slides (03/04/21), Central and Control Questions I (03/04/21))
| Online (Video Conference)
| Part I, Chap. 1; Part II, Chap. 2
| n.a. / Prel. Meeting
|
Thu, 03/11/2021, 4.15 p.m. - 6.00 p.m. (Slides (03/11/21), Central and Control Questions II (03/11/21))
| Online (Video Conference)
| Part IV, Chap. 7, 8; Part II, Chap. 3
| Part I, Chap. 1; Part II, Chap. 2
|
Thu, 03/25/2021, 4.15 p.m. - 6.00 p.m. (Slides (03/25/21), Central and Control Questions III (03/25/21))
| Online (Video Conference)
| Part II, Chap. 4; Part IV, Chap. 9 - 11, 14
| Part IV, Chap. 7, 8; Part II, Chap. 3
|
Thu, 04/15/2021, 4.15 p.m. - 6.00 p.m. (Slides (04/15/21), Central and Control Questions IV (04/15/21))
| Online (Video Conference)
| Part IV, Chap. 12, 13
| Part II, Chap. 4; Part IV, Chap. 9 - 11, 14
|
Thu, 04/22/2021, 4.15 p.m. - 6.00 p.m. (Slides (04/22/21), Central and Control Questions V (04/22/21))
| Online (Video Conference)
| Part III, Chap. 5, 6
| Part IV, Chap. 12, 13
|
Thu, 04/29/2021, 4.15 p.m. - 6.00 p.m. (Slides (04/29/21), Central and Control Questions VI (04/29/21))
| Online (Video Conference)
| Part V, Chap. 15, 16
| Part III, Chap. 5, 6
|
Thu, 05/20/2021, 4.15 p.m. - 6.00 p.m. (Slides (05/06/21), Central and Control Questions VII (04/29/21), Central and Control Questions VIII (05/26/21))
| Online (Video Conference)
| 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. The times of the lecture and flipped classroom meetings
include a 15min break.
Assignment
| Issueance
| First Delivery
| Second Delivery (default)
| max. Score
| (Corresp.) Tut. Meetings
|
1
| Monday, 03/15/2021
| Monday, 03/22/2021
| Monday, 04/12/2021
| 100
| CW 15: 04/12-16/2021
|
2
| Monday, 03/22/2021
| Monday, 04/12/2021
| Monday, 04/19/2021
| 100
| CW 16: 04/19-23/2021
|
3
| Monday, 04/12/2021
| Monday, 04/19/2021
| Monday, 04/26/2021
| 100
| CW 17: 04/26-30/2021
|
4
| Monday, 04/19/2021
| Monday, 04/26/2021
| Monday, 05/03/2021
| 100
| CW 19: 05/10-14/2021
|
|
|
|
|
| CW 20: 05/17-21/2021
|
Project
| Monday, 04/26/2021
| Friday, 06/11/2021
| n.a.
| 300
| CW 21: 05/24-28/2021
|
|
|
|
|
| CW 22: 05/31-06/04/2021
|
Project Demos
|
|
|
| 100
| CW 24-25: 06/14-25/2021
|
Signing on/Signing off
The signing on period via TISS at
TISS/185.A05 started already, and
ends on
Friday, 12 March 2021, 12.00 a.m.;
the signing off period ends on Friday, 26 March 2021, 12.00 a.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.
Lecture
|
Topic
|
Slides
|
Hints and Remarks
|
Lecture Notes
| Chap. 1 thru Chap. 20, Bibliography, Appendix
| pdf
| Latest update: 06/10/2021.
|
Pre-Meeting
(03/04/2021)
| Motivation,
organizational issues
| pdf
| Latest update: 03/04/2021.
|
Tutorial
|
(1st) Delivery
|
Assignments
|
Hints and Remarks
|
|
| Project Demos
| Calendar Weeks 24, 25
|
Mon, 04/26/2021
| Fri, 06/11/2021 (12:00)
|
Project
| No second submission for the project assignment!
|
Mon, 04/19/2021
| Mon, 05/10/2021 (12:00)
|
Assignment 4
Assignment 4.hs
| Deadline extended by two weeks until 10 May 2021!
|
Mon, 04/12/2021
| Mon, 04/19/2021 (12:00)
|
Assignment 3
Assignment 3.hs
| Extend the template file Assignment3.hs for solving the programming assignments.
|
Mon, 03/22/2021
| Mon, 04/12/2021 (12:00)
|
Assignment 2
Assignment 2.hs
| Extend the template file Assignment2.hs for solving the programming assignments.
|
Mon, 03/15/2021
| Mon, 03/22/2021 (12:00)
|
Assignment 1.pdf
Assignment 1.hs
| Deadline for the 2nd submission of assignment 1: Mon, 12 April 2021, 12:00.
|
Thu, 03/04/2021
| Wed&Thu, 03/17&18/2021 (12:00)
|
Assignment 0
| Test the Test System!
Complementary files (please, follow instructions carefully!):
- readme_requests.pdf
- readme_requests.md
- template_ffp.zip
|
Thu, 03/04/2021
|
|
| General Notes
|
Lecturer
Jens Knoop, Tel.: 58801-18510, E-mail:
knoop@complang.tuwien.ac.at