Fortgeschrittene funktionale Programmierung
LVA 185.A05, VU 2.0, ECTS 3.0, 2020 S
Fortgeschrittene funktionale Programmierung
(zweistündige Vorlesung mit Übung; siehe auch
TISS/185.A05)
Aktueller Hinweis: Aussetzung der Präsenzlehre an der TU Wien ab Mi, 11.03.2020 (COVID-19)!
Exzerpt von der TUW homepage:
Ab Mittwoch, 11. März 2020 wird die Präsenzlehre an der TU Wien ausgesetzt, mit Montag,
16. März startet das Home Learning...
...die Präsenzlehre bleibt auch über
Donnerstag, den 16.04.2020, hinaus ausgesetzt und wird in diesem Semester
aller Voraussicht nach auch nicht wieder aufgenommen.
Für aktuelle weitere Hinweise und
Informationen siehe
COVID-19: Veranstaltungsabsagen und Verhaltenshinweise durch TU Wien (ursprünglich von Dienstag, den 10.03.2020).
Latest news: Suspension of Face-to-face Teaching at TU Wien from 11 March 2020 (COVID-19)!
Excerpt from TUW homepage:
From Wednesday, 11 March 2020 face-to-face teaching at TU Wien will be suspended, on Monday, 16 March 2020, `Home Learning' is going to start...
...face-to-face teaching is currently suspended and will most likely not be resumed in the summer term 2020.
For up-to-date further information, check out
COVID-19: Event cancellations and behaviour patterns by TU Wien (originally from Tuesday, 10 March 2020).
Are you interested in studying abroad and getting funding for this?
Information on funding opportunities is available
here.
Course Meetings
The course starts with a preliminary meeting and the first lecture
on
Thursday, 5 March 2020, 4.15 p.m. - 5.45 p.m.,
in
Seminarraum Argentinierstr. EAEG06.
Date and Time
| Place
| Topic Lecture
| Topic Flipped Classroom
|
Thu, 03/05/2020, 4.15 p.m. - 5.45 p.m. (Slides (04/29/20))
| Seminarraum Argentinierstr. EAEG06
| Part I, Chap. 1; Part II, Chap. 2
| n.a. / Prel. Meeting
|
Thu, 03/12/2020, 4.15 p.m. - 5.45 p.m. (Slides (04/29/20))
Cancelled by TU Wien (COVID-19)
| Seminarraum Argentinierstr. EAEG06
| Part IV, Chap. 7, 8; Part II, Chap. 3
| Part I, Chap. 1; Part II, Chap. 2
|
Thu, 03/26/2020, 4.15 p.m. - 5.45 p.m. (Slides (04/22/20))
Cancelled by TU Wien (COVID-19)
| Seminarraum Argentinierstr. EAEG06
| Part II, Chap. 4; Part IV, Chap. 9 - 11, 14
| Part IV, Chap. 7, 8; Part II, Chap. 3
|
Thu, 04/23/2020, 4.15 p.m. - 5.45 p.m. (Slides (04/22/20))
Cancelled by TU Wien (COVID-19)
| Seminarraum Argentinierstr. EAEG06
| Part IV, Chap. 12, 13
| Part II, Chap. 4; Part IV, Chap. 9 - 11, 14
|
Thu, 04/30/2020, 4.15 p.m. - 5.45 p.m. (Slides (04/22/20))
Cancelled by TU Wien (COVID-19)
| Seminarraum Argentinierstr. EAEG06
| Part III, Chap. 5, 6
| Part IV, Chap. 12, 13
|
Thu, 05/14/2020, 4.15 p.m. - 5.45 p.m. (Slides (05/18/20))
Cancelled by TU Wien (COVID-19)
| Seminarraum Argentinierstr. EAEG06
| Part V, Chap. 15, 16
| Part III, Chap. 5, 6
|
Thu, 05/28/2020, 4.15 p.m. - 5.45 p.m. (Slides (05/11/20))
Cancelled by TU Wien (COVID-19)
| Seminarraum Argentinierstr. EAEG06
| Part V, Chap. 17, 18; Part VI, Chap. 19, 20
| Part V, Chap. 15, 16
|
Required changes are announced here. The descriptions
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/16/2020
| Monday, 03/23/2020
| Monday, 03/30/2020
| 100
| CW 14: 03/30-04/03/2020
|
2
| Monday, 03/23/2020
| Monday, 03/30/2020
| Monday, 04/20/2020
| 100
| CW 17: 04/20-24/2020
|
3
| Monday, 03/30/2020
| Monday, 04/20/2020
| Monday, 04/27/2020
| 100
| CW 18: 04/27-30/2020
|
4
| Monday, 04/27/2020
| Monday, 05/04/2020
| Monday, 05/11/2020
| 100
| CW 20: 05/11-15/2020
|
5
| Monday, 05/11/2020
| Monday, 05/18/2020
| Monday, 05/25/2020
| 100
| CW 22: 05/25-29/2020
|
6
| Monday, 05/18/2020
| Monday, 05/25/2020
| Monday, 06/01/2020
| 100
| CW 23: 06/02-05/2020
|
7
| Monday, 06/01/2020
| Monday, 06/08/2020
| Monday, 06/15/2020
| 100
| CW 25: 06/15-19/2020
|
Registration
Registration takes place via TISS at
TISS/185.A05
until
Thursday, 12 March 2020, 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 and Assignments
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: 05/18/2020.
|
Pre-Meeting
(03/05/2020)
| Motivation,
organizational issues
| pdf
| Latest update: 03/05/2020.
|
Tutorial
|
First Delivery
|
Assignments
|
Hints and Remarks
|
Self-Assessment Tests (SATs)
|
Fri, 05/29/2020
| Mon, 06/08/2020 (12:00)
|
Assignment 7
| Final assignment, final SET.
Code fragments for Assignment 7.
| SAT 8
(05/29/2020)
|
Mon, 05/18/2020
| Mon, 05/25/2020 (12:00)
| Assignment 6
| None.
| SAT 7
(05/18/2020)
|
Mon, 05/11/2020
| Mon, 05/18/2020 (12:00)
|
Assignment 5
| None.
| SAT 6
(05/11/2020)
|
Mon, 04/27/2020
| Mon, 05/11/2020 (12:00)
|
Assignment 4
| None.
| SAT 5
SAT 4
(04/22/2020)
|
Wed, 04/01/2020
| Mon, 05/04/2020 (12:00)
|
Assignment 3
| Module Data.Array.Diff replaced by Data.Array (04/06/20).
| SAT 3 (03/30/2020)
|
Wed, 03/25/2020
| Mon, 04/27/2020 (12:00)
|
Assignment 2
| None.
|
|
Wed, 03/18/2020
| Mon, 04/20/2020 (12:00)
|
Assignment 1
| Complementary files (please, follow instructions carefully!):
- readme_requests.pdf
- readme_requests.md
- template_ffp.zip
See also links to lecture slides for the first 3 lectures above (see box with planned schedule of course meetings).
| SAT 2
SAT 1
(03/16/2020)
|
Fri, 03/20/2020
| Thu, 03/26/2020 (12:00)
|
Assignment 0
| Testing the Test System
|
|
Mon, 08/12/2019
|
|
| General Remarks
|
|
Previous Knowledge
Basic knowledge of the functional programming style
as imparted e.g. in the course
LVA
185.A03 Funktionale Programmierung is mandatory.
Examination and Final Grade
The final grade is composed of the grades of the weekly assignments
(50%) and the grade of the final oral examination (50%). The final
oral examinations will be by appointment.
Please, make an appointment by e-mail or phone.
Lecturer
Jens Knoop, Tel.: 58801-18510, E-mail:
knoop@complang.tuwien.ac.at