Modul Programmierung

Wintersemester 2014/15
Arbeitsgruppe Programmiersprachen und Übersetzerkonstruktion

Nr. Art Termine Raum Veranstalter
080138 V4 Mo 10:15 - 12:00 OS40 - Norbert-Gansel-Hörsaal Hanus
    Fr 8:15 - 10:00 OS40 - Norbert-Gansel-Hörsaal  
080148 Ü2 Verschiedene Termine   Tikovsky, Peemöller u.w.

Vorlesungsbeginn

Freitag, 24. Oktober 2014, 8:15 Uhr
In dieser Vorlesung werden wichtige organisatorische Details zur Vorlesung und den Übungen besprochen. Eine frühere Anmeldung über die StudiDB zu diesem Modul ist nicht notwendig (und auch nicht möglich).

Wichtig:
Zur Teilnahme an diesem Modul muss man bei der StudiDB registriert sein. Aus diesem Grund sollten man zuerst seinen stu-Account beim Rechenzentrum aktivieren (falls noch nicht geschehen) und sich dann mit diesem Formular bei der StudiDB registrieren! Erst danach (der genaue Zeitpunkt wird in der ersten Vorlesung mitgeteilt) kann man sich über die StudiDB für eine Übungsgruppe zu diesem Modul anmelden.

Zielgruppe

Studierende im ersten Semester der Bachelorstudiengänge in Informatik (1-Fach und 2-Fach) und Wirtschaftsinformatik oder mit Nebenfach Informatik.

Voraussetzungen

keine

Inhalt

Die Vorlesung gibt eine grundlegende Einführung in Programmiertechniken zur Beherrschung der Komplexität großer Systeme. Wichtiges Leitmotiv hierfür ist das Finden geeigneter Abstraktionen zur schrittweisen Konstruktion komplexer Systeme. Zur Programmierung wird zunächst die Programmiersprache Scheme verwendet. Die Flexibilität von Scheme zwingt keinen festgelegten Programmierstil auf, sondern unterstützt sehr einfach verschiedene Abstraktionstechniken. Dadurch wird die Programmiersprache kein Mittel, um den Computer zur Ausführung von Operationen zu veranlassen, sondern ein Medium zum Ausdruck von Strukturen über Verfahrensweisen.

Kurzübersicht

  • Grundbegriffe
  • Abstraktion mit Prozeduren
  • Abstraktion mit Daten
  • Modularität, Objekte, Zustände
  • Metalinguistische Abstraktion

Modulprüfung

Die Voraussetzung für den Erwerb eines Modulprüfungszeugnisses ist das erfolgreiche Bestehen der Abschlussklausur. Die Zulassung setzt die regelmäßige und aktive Teilnahme an einem der Kleingruppenübungstermine voraus. Dies bedeutet, dass mehrfaches unentschuldigtes Fehlen beziehungsweise unvorbereitete Teilnahme an diesen Übungen dazu führt, dass die Teilnahme an der Modulprüfung nicht möglich ist.
Bonuspunkte: Positive Studienleistungen können durch die regelmäßige Bearbeitung von Übungsaufgaben in die Bewertung der Modulprüfung in Form von Bonuspunkten eingebracht werden. Wenn mindestens 50% aller Übungspunkte bei der Durchführung dieses Moduls erreicht wurden, werden die Übungspunkte bis zu 20% zu den Klausurpunkten hinzugerechnet. Dies bedeutet, dass z.B. bei 100% erreichten Übungspunkten 20% der erreichbaren Klausurpunkte als Bonus bei der Klausur hinzugefügt werden, und z.B. bei 50% erreichten Übungspunkten 10% der erreichbaren Klausurpunkte hinzugefügt werden.

Abschlussklausur

Die erste Abschlussklausur zur Vorlesung findet am Donnerstag, 12.2.2015, von 14:00 bis 17:00 Uhr in folgenden Hörsälen statt: Otto-Hahn-Platz 5 - Chemie I (Nachnamen A-H), Olshausenstr. 40 - Norbert-Gansel-Hörsaal (Nachnamen I-P), Otto-Hahn-Platz 5 - Chemie II (Nachnamen R-Z).
Eine weitere Abschlussklausur findet am Dienstag, 31.3.2015, von 8:00 bis 11:00 Uhr im Hörsaal Otto-Hahn-Platz 5 - Chemie II statt.
Eine vorherige Anmeldung in der StudiDB ist zur Teilnahme erforderlich.

Ergänzende Materialien zur Vorlesung

Folien und Programme:

24.10.2014: Einführung (PDF) Grundbegriffe (PDF)
27.10.2014: meinerstesprogramm.rkt
31.10.2014: wheels.rkt absolute.rkt waterstate.rkt
3.11.2014: sqroot.rkt factorial.rkt
7.11.2014: fib.rkt exp.rkt ggt.rkt
10.11.2014: prime.rkt cookie.rkt
14.11.2014: cookie.rkt rat.rkt userat.rkt
17.11.2014: userat.rkt morecookies.rkt numlist.rkt
21.11.2014: stringlist.rkt anylist.rkt pair.rkt parametriclist.rkt listoperations.rkt
24.11.2014: numtree.rkt symbdiff-simple.rkt
28.11.2014: symbdiff.rkt set-interface.rkt set-list.rkt set-orderedlist.rkt set-tree.rkt
1.12.2014: set-tree.rkt huffman.rkt
5.12.2014: huffman.rkt sum-funs.rkt
8.12.2014: maplist.rkt interval-method.rkt derive-comp.rkt mylist.rkt
9.1.2015: properties.rkt prop-rat.rkt prop-set-orderedlist.rkt prop-listoperations.rkt simple_account.rkt
12.1.2015: account.rkt monte-carlo.rkt monte-carlo-functional.rkt
19.1.2015: mutable-list-with-message.rkt mutable-account.rkt mlist.rkt
23.1.2015: queue.rkt halfadder.rkt circuit1.rkt (erster Teil)
26.1.2015: circuit.rkt
30.1.2015: concurrent-account.rkt
2.2.2015: example-prog.rkt mze-1.rkt (Metazirkulärer Evaluator, Teil 1)
6.2.2015: mze.rkt (Metazirkulärer Evaluator für MiniScheme ohne write-value)

Skript zur Vorlesung:

Es gibt ein Skript zur Vorlesung, das nur innerhalb der CAU Kiel zugreifbar ist. Dieses Skript beinhaltet den ungefähren Vorlesungsverlauf, aber neben dem Lesen des Skripts sollte auch immer die Vorlesung besucht werden, um über den aktuellen Stand informiert zu sein!

Literatur

Die Vorlesung orientiert sich hauptsächlich an folgenden Büchern:

  • H. Klaeren, M. Sperber: Die Macht der Abstraktion, Teubner, 2007. ISBN 978-3-8351-0155-5
  • M. Felleisen, R.B. Findler, M. Flatt, S. Krishnamurthi: How to design programs, MIT, 2001. ISBN 0-262-06218-6 (online: http://www.htdp.org/)
  • H. Abelson, G.J. Sussman: Struktur und Interpretation von Computerprogrammen, Springer-Verlag, 2001 (4. überarbeitete Auflage). ISBN 3-540-42342-7 (online: http://mitpress.mit.edu/sicp/)