Lehrerbildungsforum Informatik

Einführung in die Programmierung und das Problemlösen in Haskell

29. September, Frankfurt am Main

Zusammenfassung
Ziel des Kurses im Forum ist es, einen Einblick in das Paradigma der funktionalen Programmierung zu geben. Eine Einführung in die funktionale Programmiersprache Haskell und die entsprechenden Werkzeuge wird gegeben, insbesondere werden Listen und Listenprogrammierung behandelt. Die semantischen Grundlagen funktionaler Programmierung - wie der Lambda-Kalkül und seine operationale Semantik - und das polymorphe Typsystem von Haskell werden erörtert. Die praktische Programmierung von Aufgaben und die Benutzung eines Interpreters (ghci) ist auch vorgesehen, um einen konkreteren Einblick in den Umgang mit einer lazy funktionalen Programmiersprache und insbesondere mit einem Interpreter zu vermitteln.
Referenten
Prof. Dr. Manfred Schmidt-Schauß und PD Dr. David Sabel
Präsentationsfolien
Die Folien und Programme zu den Vorträgen sind hier verfügbar:

  • Einführung in Haskell und seine Werkzeuge: PDF, Quellcode intro.hs
  • Basiskonstrukte von Haskell: PDF
  • Der Lambda-Kalkül als Grundlage der Funktionalen Programmierung: PDF
  • Polymorphe Typen und Typklassen: PDF
  • Listenprogrammierung in Haskell: PDF
  • Textaufgabe: PDF, Quellcode text-verarbeitung.hs
Software

Wesentliche Software

Die Teilnehmer und Teilnehmerinnen werden gebeten, die Software vor der Veranstaltung auf ihren Laptops zu installieren:
  • Die Haskell-Platform vereint wesentliche Werkzeuge zum Haskell-Programmieren (Glasgow Haskell Compiler und Interpreter, wesentliche Softwarebibliotheken und das Paketverwaltungswerkzeug Cabal).

    Installationspakete sind für die wesentlichen Betriebssysteme vorhanden: [Linux | Mac OS X | MS Windows]

  • Zum Verfassen und Editieren von Haskell-Quelltextdateien genügt ein Texteditor, der möglichst Syntax-Highlighting für Haskell unterstützt.

    Eine (unvollständige) Auswahl für verschiedene Betriebssysteme ist:

Aufgaben
Für diejenigen, die schon vorher Haskell ausprobieren wollen und evtl. schon versuchen zu programmieren, steht eine Serie von Aufgaben zum Thema "Programmierte Textverarbeitung" hier bereit:


Es wird im Forum aber auch eine (verdichtete) Basiseinführung geben, so dass es nicht nötig ist, diese Aufgaben zu bearbeiten. Die Aufgaben selbst und Teile der Lösung werden am Ende des Forums besprochen.

Konkretes Ziel ist es, dass die interessierten Teilnehmer/innen das main-Programm lauffähig haben im ghci-Interpreter und schon einige Teilaufgaben versucht haben zu programmieren und zu testen.
Material zu Haskell

Webseiten zu Haskell

Implementierungen von Haskell

Haskell-Bücher (Auswahl)

Weitere Bücher sind unter wiki.haskell.org/Books#Textbooks aufgelistet.

Dokumentation einiger wichtiger Haskell-Bibliotheken

  • Dokumentation aller "Basis"-Bibliotheken: base
  • Funktionen zum Programmieren mit Listen: Data.List
  • Funktionen zum Programmieren mit Zeichen: Data.Char
  • Schnelle Maps: Data.Map

Eine umfangreiche Sammlung von Bibliotheken und ihrer Dokumentation findet sich unter hackage.haskell.org. Zur Installation von optionalen Bibliotheken empfiehlt es sich das Paketverwaltungswerkzeug cabal zu verwenden.
Funktionales Programmieren in der Lehre

Universitäre Lehrveranstaltungen an der Goethe-Universität (Auswahl)

  • Vorkurs Informatik für Studienanfänger (beinhaltet auch eine Einführung in Haskell): Webseite mit Material
  • Grundlagen der Programmierung 2 (1. / 2. Semester Bachelor Informatik, beinhaltet Programmieren mit Haskell): Webseite mit Material
  • Einführung in die Funktionale Programmierung (Vertiefung Bachelor Informatik), behandelt tiefergehende Haskell-Themen und (theoretische) Grundlagen des funktionalen Programmierens. Webseite mit Material

Ausgewählte Forschungsarbeiten zum Funktionalen Programmieren in der Lehre

  • Ville Tirronen, Samuel Uusi-Mäkelä und Ville Isomöttönen: Understanding beginners' mistakes with Haskell, Journal of Functional Programming, Vol. 25, DOI: 10.1017/S0956796815000179, 2015
  • Manuel Chakravarty,und Gabriele Keller: The Risks and Benefits of Teaching Purely Functional Programming in First Year, Journal of Functional Programming, Vol. 14, S. 113-123, DOI: 10.1017/S0956796803004805 2004
  • Fritz Ruehr: Tips on Teaching Types and Functions, Proceedings of the 2008 International Workshop on Functional and Declarative Programming in Education (FDPE '08), S. 79--90, ACM, DOI: 10.1145/1411260.1411272, 2008.
(c) 2015 KIST, Impressum, Last modified: $Author: sabel $, $Date: 2015/09/30 09:51:36 $