Fortgeschrittene funktionale Programmierung
LVA 185.A05, VU 2.0, ECTS 3.0, 2012 S
MCI/W, MSE/W
(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.
Course Meetings
- Thursday, June 28, 2012, 4.15 p.m. - 5.45 p.m.,
lecture room on the ground floor of the building Argentinierstr. 8.
- Thursday, June 21, 2012, 4.15 p.m. - 5.45 p.m.,
lecture room on the ground floor of the building Argentinierstr. 8.
- Wednesday, June 13, 2012, 2.15 p.m. - 3.45 p.m.,
EI3a Hörsaal, Alte Elektrotechnik, 2nd floor, Gusshausstr. 27-29.
- Thursday, May 31, 2012, 4.15 p.m. - 5.45 p.m.,
lecture room on the ground floor of the building Argentinierstr. 8.
- Wednesday, May 16, 2012, 10.00 a.m. - 11.30 a.m.,
library E185.1, Argentinierstr. 8, 4th floor (centre)
- Thursday, May 10, 2012, 4.15 p.m. - 5.45 p.m.,
lecture room on the ground floor of the building Argentinierstr. 8.
- Thursday, April 26, 2012, 4.15 p.m. - 5.45 p.m.,
lecture room on the ground floor of the building Argentinierstr. 8.
- Thursday, April 19, 2012, 4.15 p.m. - 5.45 p.m.,
lecture room on the ground floor of the building Argentinierstr. 8.
- Thursday, March 22, 2012: 4.15 p.m. - 5.45 p.m.,
lecture room on the ground floor of the building Argentinierstr. 8.
- Thursday, March 15, 2012, 4.15 p.m. - 5.45 p.m.,
lecture room on the ground floor of the building Argentinierstr. 8.
- Thursday, March 8, 2012, 4.15 p.m.,
lecture room on the ground floor of the building Argentinierstr. 8:
Pre-meeting.
- Wednesday, March 7, 2012, 1.00 p.m.,
EI4, 2nd floor, Gusshausstr. 25-29, joint pre-meeting.
Registration
The electronic course management system for registration is
open
until 25 March 2012.
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 provide the opportunity of 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
- Part III: Quality Assurance
- Part IV: Advanced Language Concepts
- Functional Arrays
- Abstract Data Types
- Functors
- 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
Related Course:
A perfect add-on this term is to attend also the complementary course on:
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, essentially any time. Please
make an appointment by e-mail or phone.
Course Materials
Documents for the lecture and tutorial part of the course are
provided below.
Lecture
|
Topic
|
Slides
|
Hints and remarks
|
Lecture Notes
| Chap. 1 thru Chap. 17, Bibliography, Appendix
| pdf
| Latest update: 30.06.2012.
|
Pre-Meeting
(08.03.2012)
| Motivation,
organizational issues
| pdf
| Latest update: 08.03.2012.
|
Joint Courses Pre-Meeting
(07.03.2012)
| Motivation
| pdf
| Latest update: 07.03.2012.
|
Tutorial
|
Due date/2nd due date
|
Assignments
|
Hints and remarks
|
Tue, 05.06.2012
| None.
|
Assignment 9
| Keine Abgabe; freies Üben.
|
Wed, 16.05.2012
| Wed, 30.05.2012 (12:00) /
Wed, 06.06.2012 (20:00)
|
Assignment 8
| None.
|
Wed, 16.05.2012
| Wed, 23.05.2012 (12:00) /
Wed, 30.05.2012 (20:00)
|
Assignment 7
| None.
|
Wed, 09.05.2012
| Wed, 16.05.2012 (12:00) /
Wed, 23.05.2012 (20:00)
|
Assignment 6
| (1) Prologue: Symbol "/" for integer division replaced by
symbol "./."
(2) Exercise 2, 3rd illustrating example:
yield array (1,3) [(1,1),(2,2),(3,3)] 0 ->> ...:
Missing result "array (1,2) [(1,(*)),(2,div)]" added;
missing brackets "[]" added; "div" used instead of "/".
(3) Exercise 3: Start hugs using the command "hugs -98 +o"
or "runhugs -X-98 +o" and add
"{-# LANGUAGE FlexibleInstances #-}" in the source program.
The pdf-file is updated accordingly. (12/05/2012)
|
Mon, 30.04.2012
| Wed, 16.05.2012 (12:00) /
Wed, 23.05.2012 (12:00)
|
Assignment 5
| Replace hyphen by underscore in the identifiers mi-indiv, mi-solve, etc., i.e.
use mi_indiv, mi_solve, etc. (05/07/2012)
Abgabe verlängert wegen Hardware-Ausfalls der g0 (05/09/12)
|
Wed, 25.04.2012
| Wed, 02.05.2012 (12:00) /
Wed, 16.05.2012 (12:00)
|
Assignment 4
| Implement the ADTs Stack and Table and their operations
as ordinary types and operations within AufgabeFFP4.hs, since
there is no support for declaring more than one module per file (04/30/2012)
Abgabe verlängert wegen Hardware-Ausfalls der g0 (05/09/12)
|
Wed, 18.04.2012
| Wed, 25.04.2012 (12:00) /
Wed, 02.05.2012 (12:00)
|
Assignment 3
| Changed call context for part 1. (04/20/2012)
|
Sat, 24.03.2012
| Wed, 18.04.2012 (12:00) /
Wed, 25.04.2012 (12:00)
|
Assignment 2
| None.
|
Tue, 20.03.2012
| Wed, 28.03.2012 (12:00) /
Wed, 18.04.2012 (12:00)
|
Assignment 1
| Submitting assignments: home directory of group account.
Signature fibdiags: [[Integer]] (not Integer -> [[Integer]]
(03/22/2012)
|
Lecturer
Jens Knoop, Tel.: 58801-18510, E-mail:
knoop@complang.tuwien.ac.at