Uni-Logo
Sie sind hier: Startseite Lehrveranstaltungen Archiv der Lehrveranstaltungen der vergangenen Semester Wintersemester 2010/2011 Intensivkurs: Formale Methoden und Programmierung
Artikelaktionen

Intensivkurs: Formale Methoden und Programmierung

 

Dozent:

Dr. Marco Ragni

Dipl. Inf. Felix Steffenhagen

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:


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
 

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

 

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.

  1. 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.
  2. 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.

Benutzerspezifische Werkzeuge