(Plichtvorlesung im ersten Studienabschnitt.)
- Ort:
- Di, 14-16, HS 002, Geb. 45.
- Übungen:
- Raum 104, Geb. 45. (Nach Vereinbarung,
Teilmenge von Mo Mi Do Fr, 14-16; Di Do, 9-11.
Beginn vermutlich Mi 28.10.
- Erste Vorlesung:
- 20.10.98
- Dozent:
- Dr. Peter Sanders, Geb. 46, Raum 315, Tel. 0681 9325 115,
sanders@mpi-sb.mpg.de
- Vorkenntnisse:
- Etwas Stoff von Informatik I/II, Programmieren in C
- Scheinvergabe:
- Für erfolgreiche Mitarbeit am Projekt und
den Vorlesungs- und Projektbegleitenden Übungsblättern
(ca. alle 14 Tage)
Ein Eintrag in der Aufzählung entspricht grob einer
Vorlesung.
Es gibt aber mehr Vorlesungen als Einträge, damit Luft
für unvorhergesehene Verzögerungen und
projektbezogene Einschübe bleibt.
Trotz des kunterbunten Hin- und Herspringens
der Themen ist die Liste auch halbwegs chronologisch zu verstehen
- die Reihenfolge ist dadurch bestimmt was
für das Projekt vordringlich ist.
- Vorstellung des Projekts, vorläufiger Vorlesungsplan
Überblick über C++ und LEDA. Relevante Literatur.
- Mehr zum Projekt, Ultrakurzeinführung in
Softwaretechnik.
- Objektbasierte Programmierung in C++.
- Datenstrukturen in C++ und LEDA. Einführung
in C++ templates.
- Etwas objektorientierte Programmierung in C++. Etwas LEDA.
- Was aus LEDA ist für das Projekt wichtig.
- Greedyalgorithmen und andere für das Projekt
wichtige Optimierungsverfahren.
- Zurück zum Software Engineering: Modellierungshilfsmittel
- High Level Software Engineering: Kostenschätzung,
Personal- und Zeitplanung. Kontrolle
über Qualität und Projektfortschritt.
- Dokumentation und Literate Programming
- Formale Verfahren für das Programmieren im Kleinen:
Programmverifiktaion und Programming by Contract
- Wider den Fehlerteufel: ``Writing solid code'',
Programmtester in LEDA, Fehlersuche und Testmethoden.
Werkzeuge: Versionskontrolle, Debugger, code coverage tools.
- Effiziente Programme: Tuning, Einflüße moder Rechnerarchitektur,
Werkzeuge.
- Die Projektgruppen stellen ihre Ergebnisse vor.
- Java.
Mögliche Komponenten:
- Erfassung der Basisdaten
- Aufbau des Graphen sich störender Sender
- Bestimmen einer Näherungslösung
- Schrittweises Verbessern
- Graphische Darstellung der Lösung
- Interaktive Veränderung der Zuordnung
Die Vorlesungen im Einzelnen:
- Überblick. Folien zur Vorlesung 1.
Aufgabenblatt 1
- C++ die Erste. Folien zur Vorlesung 2.
Aufgabenblatt 2
- Generische Programmierung; Datenstrukturen. Folien zur Vorlesung 3.
Aufgabenblatt 3
- Objektorientierte Programmierung; Grobentwurf von FREAK. Folien zur Vorlesung 4.
Aufgabenblatt 4
- Optimierungsalgorithmen. Folien zur Vorlesung 5.
Aufgabenblatt 5.
Folien von H. Schmeck zu genetischen Algorithmen (lesen mit acroread).
- LEDA. Die Präsentation von Michael Seel aus Vorlesung 6.
Beispeilprogramme
Aufgabenblatt 6
Programmierkonventionen
- Programmierkonventionen. Folien zur Vorlesung 7.
Aufgabenblatt 7
- Modellierungshilfmittel. Folien zur Vorlesung 8.
- Kostenschätzung, Projektplanung und Management Folien zur Vorlesung 9.
Aufgabenblatt 9,
Folien zum Personal Software Process,
Karlsruher Web-Page zum Personal Software Process
- Ein Einblick in Programmverifikation. Folien zur Vorlesung 10.
- Programming by Contract; Writing Solid Code. Folien zur Vorlesung 11.
- Testen; Progammierwerkzeuge. Folien zur Vorlesung 12.
Aufgabenblatt 12
- Effiziente Programmierung. Folien zur Vorlesung 13.
Aufgabenblatt 13
- Mehr Effiziente Programmierung. Java Folien zur Vorlesung 14.
- Mehr Java. Folien zur Vorlesung 15.
- FREAK Demo
Literatur
- 1
-
K. Mehlhorn and S. Näher.
The LEDA Platform of Combinatorial and
Geometric
Computing.
Cambridge University Press, 1998.
- 2
-
S. B. Lippmann and J. Lajoie.
C++ Primer.
Addisson Wesley, 3rd edition, 1998.
- 3
-
B. Stroustrup.
The C++ Programming Language.
Addison Wesley, 3rd edition, 1998.
- 4
-
Scott Meyers.
Effective C++ : 50 specific ways to improve your programs and
designs.
Addison Wesley, 2nd edition, 1998.
Guter Programmierstil in kleinen leicht verdaulichen
Häppchen (deutsche Version).
- 5
-
Scott Meyers.
More effective C++ : 35 new ways to improve your programs and
designs.
Addison-Wesley, Reading, MA, 1996.
Zugabe zu ``effective C++''.
- 6
-
Stanley B. Lippman, editor.
C++ Gems, volume 5 of SIGS reference library.
Cambridge University Press, 1998.
Kolumne aus dem C++ Report. Tips, Tricks und Erfahrungsberichte
für Fortgeschrittene.
- 7
-
Bertrand Meyer.
Objektorientierte Softwareentwicklung.
Hanser, München, 1990.
Gut zu lesen. Programming by contract. Objektorientierung am
Beispiel der Programmiersprache Eiffel. Englisch: OO Software Const. bei
Prentice Hall.
- 8
-
W. S. Humphrey.
Introduction to the Personal Software
Process.
SEI series in Software Engineering. Addison Wesley, 1997.
Quantitative Ansätze zur Verbesserung des
Softwareentwicklungsprozesses. Für Studienanfänger geschrieben.
Zeitaufwendig aber vielleicht lohnend.
- 9
-
Grady Booch.
Object-oriented analysis and design with applications.
Addison-Wesley, Menlo Park, CA, 2nd edition, 1994.
Gut geschrieben. Viele Beispiele.
- 10
-
P. Jalote.
An integrated approach to software engineering.
Springer, 2nd edition, 1997.
Für Studienanfänger geschrieben. Leicht lesbar aber etwas
langweilig.
- 11
-
Helmut Balzert.
Lehrbuch der Software-Technik : Software-Entwicklung [Band 1].
Spektrum Akademischer Verlag, 1996.
gut strukturiert, > 1000 Seiten.
Peter Sanders
Tue Feb 9 10:57:10 MET 1999