Intensivkurs: Formale Methoden und Programmierung
Dozent:
Mo 16:00 - 18:00
Ort: KG I
Raum: 1108
Ergebnisse der Abschlussklausur
Nachklausur:
Die Wiederholungsprüfung für die Vorlesung findet am 28. April 2011 als mündliche Prüfung statt. Mögliche Termine für die Prüfung sind von 13:30 Uhr bis 15:00Uhr und von 16:00 Uhr bis 17:30 Uhr.
Bitte melden Sie sich per Email bei Dr. Marco Ragni oder Felix Steffenhagen, um einen Termin zu vereinbaren.
Abstract
Dieser Intensivkurs dient als Vorbereitung für die im Sommersemester stattfindende Pflichtveranstaltung "Kognitive Modellierung". In der Veranstaltung werden dafür Kenntnisse in der Programmiersprache LISP, sowie Kenntnisse zur Beschreibung und Analyse formaler Systeme vermittelt.
Übungsaufgaben
Nach jeder Vorlesung wird ein Übungsblatt ausgeteilt. Die bearbeiteten Übungsblätter werden Montags vor der Vorlesung eingesammelt. Die korrigierten Lösungen werden im Tutorat ausgeteilt und diskutiert. Übungsblätter können auch in Gruppen bis zu drei Personen abgegeben werden. Die Bearbeitung der Übungsaufgaben ist freiwillig. Es können jedoch Bonuspunkte für die Klausur (siehe unten) durch die Bearbeitung und regelmäßige Teilnahme an den Übungen erlangt werden.
Bonuspunkte
Für die Bearbeitung der Übungsaufgaben vergeben wir Bonuspunkte. Es kann bis zu 1 Bonuspunkt pro Übungsblatt erlangt werden. Die Bonuspunkte gibt es nicht nur für korrekte Lösungen, sondern auch, wenn ersichtlich wird, das die Aufgaben motiviert bearbeitet wurden. Die Beurteilung dafür unterliegt der Tutorin. Für nicht vollständig bearbeitete Übungsblätter können auch halbe (1/2) Bonuspunkte vergeben werden.
Insgesamt werden nicht wie anfangs in der Vorlesung angekündigt max. 10 Punkte vergeben, sondern für jedes Übungsblatt wird es max. 1 Bonuspunkt geben.
Um die Bonuspunkte für die Klausur anrechnen zu lassen, müssen zwei Lösungen im Tutorat präsentiert (vorgerechnet) werden.
Die regelmäßige Teilnahme nicht nur eine Empfehlung, sondern auch Bedingung für den Erhalt der Bonuspunkte. Wer mehr als 3 mal im Tutorat fehlt, bekommt keine Bonuspunkte angerechnet.
Programmierprojekte
Um die in der Vorlesung vermittelten Programmierkenntnisse zu vertiefen und anzuwenden bieten wir kleine Programmierprojekte an. Diese können über einen längeren Zeitraum bearbeitet werden.
Die Abgabe muss spätestens bis 01.02.2011 erfolgen.
Durch die Teilnahme an einem Programmierprojekt können 15 Bonuspunkte für die Klausur erworben werden. Die Projekte können (und sollen) in Gruppen bis zu 3 Personen bearbeitet werden.
Wichtig!
Es reicht nicht, ein gültiges und funktionierendes Programm einzureichen. Die Programme sollten ausreichend und sinnvoll dokumentiert werden. Selbstdefinierte Funktionen sollten soweit dokumentiert sein, das erkennbar wird, was die Funktion macht und wozu sie erforderlich ist. Kurze sachliche Kommentare sind dazu ausreichend.
Dies erhöht die Lesbarkeit und Verständlichkeit Ihrer Programme und hilft nicht nur Ihnen, den Überblick nicht zu verlieren, sondern auch uns bei der Korrektur.
Übersicht über die Programmierprojekte (PDF)
Grafikprogrammierung mit LispWorks
Für die Programmierprojekte (insbesondere das Game-Of-Life) bieten wir eine kleine Grafikbibliothek an, um einfache geometrische Objekte (Linien, Rechtecke und Quadrate) zu zeichen. Diese Bibliothek benutzt die in LispWorks mitgelieferte Bibliothek CAPI, die für Grafik- und GUI-Programmierung verwendet wird. Die von uns angebotene Bibliothek ist aber wesentlich einfacher zu benutzen und reicht für die Zwecke des Kurses vollkommen aus.
Wer dennoch einen tieferen Einblick in die Grafik- und GUI-Programmierung werfen möchte, dem empfehlen wir die Dokumentation zur CAPI auf der Homepage von LispWorks (online).
Downloads:
- Grafikbibliothek graphics (graphics.lisp)
- Kurztutorial für die Benutzung der graphics-Bibliothek (lw-capi-howto.pdf)
- Beispielprogramm aus dem Tutorat mit einfacher Animation und Grafiken (test-graphics.lisp)
(Zum Start des Programms nach dem Laden die Funktion (main) aufrufen. - Beispielprogramm: rekursiver Fraktalbaum (fraktal-baum.lisp)
Dieses Programm zeichnet rekursiv einen Baum mit jeweils einem linken und rechten Teilbaum. Zum Start des Programms, nach dem Laden die Funktion (start) aufrufen. (benötigt die graphics-Bibliothek)
Musterlösungen für die Programmierprojekte:
- Kniffel (mit freundlicher Genehmigung von Michael Hummel)
- Game-of-Life
- Mastermind (mit freundlicher Genehmigung von Daniel Reuland)
Materialien
Vorlesungsfolien
Kapitel | Thema | Folien | Datum | Errata |
0 | Organisatorisches / Überblick | (Bildschirm) (Drucker) (Drucker; 4-auf-1) | 18.10.2010 | |
1 | Datentypen und Semantik | (Bildschirm) (Drucker) (Drucker; 4-auf-1) | 25.10.2010 | Folie 13: fehlendes ` in cons |
2 | Der abstrakte Datentyp Liste | (Bildschirm) (Drucker) (Drucker; 4-auf-1) | 25.10.2010 | Folie 18: Fehlende ")" in append-Ausdruck |
3 | Funktionen und Prädikate | (Bildschirm) (Drucker) (Drucker; 4-auf-1) | 25.10.2010 | |
4 | Ausgaben und Verzweigung | (Bildschirm) (Drucker) (Drucker; 4-auf-1) | 09.11.2010 | |
5 | Rekursion und Iteration | (Bildschirm) (Drucker) (Drucker; 4-auf-1) | 22.11.2010 | Folie 29: Fehlende ) im Titel Folie 35: Fehlendes ` vor Liste Folie 36: Falscher Rückgabewert |
6 | Variablen und Umgebungen | (Bildschirm) (Drucker) (Drucker; 4-auf-1) | 22.11.2010 | |
7 | Datenstrukturen mit Listen | (Bildschirm) (Drucker) (Drucker; 4-auf-1) | 06.12.2010 | Folie 28: Tippfehler im Block |
8 | Applikative Programmierung | (Bildschirm) (Drucker) (Drucker; 4-auf-1) | 06.12.2010 | Folie 11: Fehlende # Folie 25: Fehlende # |
9 | Funktion und Lambda-Kalkül Part I + Part II | (Bildschirm) (Drucker) (Drucker; 4-auf-1) | 20.01.2011 | Folie 43: Alpha-Konversion Folie 50: Regel 5 der Beta-Konversion |
10 | Aussagenlogik | (Bildschirm) (Drucker) (Drucker; 4-auf-1) | 24.01.2011 | |
11 | Automaten und Komplexitätstheorie | (Bildschirm) (Drucker) (Drucker; 4-auf-1) | 24.01.2011 |
Übungsblätter
- Übungsblatt 1
- Übungsblatt 2
- Übungsblatt 3
- Übungsblatt 4
- Übungsblatt 5
- Übungsblatt 6
- Übungsblatt 7
- Übungsblatt 8
- Übungsblatt 9
- Übungsblatt 10
Ergebnisse der Abschlussklausur
Lösungen
Literatur und Links
Literatur zu LISP
- David S. Touretzky (1990): Common LISP: A Gentle Introduction to Symbolic Computation (online)
- Peter Seibel: Practical Common Lisp (online)
- Winston, P. H., & Horn, B. K. P. (1989). LISP. Third Edition. Reading, MA: Addison-Wesley.
- Steele, G. L. (1990). Common-LISP. The Language. Second Edition
Tutorials
- Interaktives Lernprogramm für Lisp: Episodic Learner Model: The Adaptive Remote Tutor. ELM-ART
- Kurz-Tutorial zu LispWorks von Benus Becker (online)
Zusätzliche Literatur
- LISP Befehlsreferenz: Eine gute Übersicht über die wichtigsten Lisp-Befehle (online)
- LISP Übersicht als Mindmap von Benus Becker (online)
Links
- Fachschaft der Kognitionswissenschaft: http://fskw.net
Lisp auf Mac-Computern
Da es einige Nachfragen wegen Lisp für Mac-Computer gab, haben wir ein paar Infos für die Installation von Lisp auf Macs zusammengestellt.
Das in den Übungen verwendete LispWorks ist auch für Mac-Computer verfügbar. Eine Installationsanleitung dafür finden Sie auf den Seiten von LispWorks (online). Die Anleitung ist leider nur in englischer Sprache vorhanden.
Installation von LispWorks
Die folgenden Instruktionen sind aus der englischen Dokumentation zu LispWorks (siehe oben) entnommen.
Um LispWorks installieren zu können, müssen Sie als Administrator angemeldet sein.
- Start des LispWorks Installer
Wenn Sie das LispWorks heruntergeladen haben, müssen Sie das disk image eventuell ins System einhängen (mounten). Das Image hat den Dateinamen LispWorks-6.0.dmg oder LispWorks64bit-6.0.dmg. Um es zu mounten, doppel-klicken Sie einfach auf die Datei. - Um LispWorks (32-bit) zu installieren, öffnen Sie den macos-Ordner und doppel-klicken Sie auf die Datei LispWorks_Installer.
Für die Installation der 64-bit-Version, öffnen Sie den macos64-Ordner und doppel-klicken Sie auf die Datei LispWorks64bit_Installer.
Bitte beachten Sie das die Dateinamen der Installer-Dateien für die Personal-Edition leicht variieren können. Der Installationsprozess läuft aber genauso ab.
Falls es noch Probleme geben sollte, können Sie gern eine Email schreiben oder bei mir im Büro (IIG, 00-013) vorbeikommen.