|
| Modul: | KI300 Softwaretechnik I |
| Lehrform: | Vorlesung, Praktikum |
| Studienziel: | Es soll ein Überblick über Teilgebiete der Software-Technik gegeben werden. Die Studierenden sollen klassische und objektorientierte Vorgehensmodelle bei der Software-Entwicklung kennenlernen. Der Schwerpunkt der Vorlesung liegt dabei auf Objektorientierter Analyse und Design. Die wichtigsten Diagramme der Unified Modeling Language (UML) werden dabei angewandt und mit Hilfe praxisorientierter Beispiele und Übungen und einem OOA/D-Tool eingeübt. |
| Inhalt: | 1.Einführung und Überblick über Softwaretechnik
2. Klassische Vorgehensmodelle
2.1 Wasserfallmodell
2.2 Spiralmodell
3. Objektorientierte Vorgehensmodelle
4. Unified Modelling Language
5. Konzepte und Notationen der Objektorientierten Analyse
5.1 Basiskonzepte
5.2 Ststische Konzepte
5.3 Dynamische Konzepte
6. Objektorientierte Analyse
6.1 Analyseprozess
6.2 Analysemuster
6.3 Statisches Modell
6.4 Dynamisches Modell
7. Objektorientierter Entwurf
7.1 Entwurfsnotationen
7.2 Entwurfsmuster (Einführung)
7.3 Datenbankanbindungen
7.4 3-Schichten-Architektur
|
| Literatur: |
- BALZERT Hei., Lehrbuch der Objektmodellierung: Analyse und Entwurf, Spektrum Akademischer Verlag, 1999
- BALZERT Hel., Lehrbuch der Softwaretechnik, Spektrum Akademischer Verlag Band 1 Software-Entwicklung 2. Aufl, 2000
- OESTEREICH B., Objektorientierte Softwareentwicklung: Analyse und Design mit der UML, Oldenbourg, 1998
- KAHLBRAND B., Software-Engineering: Objektorientierte Software-Entwicklung mit der UML, Springer, 1998
- OESTERREICH, HRUSCHKA, et al., Erfolgreich mit Objektorientierung Vorgehensmodelle ..., Oldenbourg, 1999
- BOOCH, RUMBAUGH, JACOBSON, Das UML-Benutzerhandbuch, Addison-Wesley, 1999 BOOCH G., Objektorientierte Analyse und Design, Addison-Wesley, 1994
- RUMBAUGH J., Objektorientiertes Modellieren und Entwerfen, Hanser, 1993
|
| Modul: | PI 647 Compilerbau, für KI Wahlpflichtvorlesung |
| Nachweis: | mündliche Prüfung |
| Studienziel: |
- Erlernen des Aufbaus eines Compilers, seiner Phasen
- Verständnis grundlegender Begriffe
- Entwicklungsmethodik (frontend, backend, Zwischencode, bootstrapping)
- detailliertes Verständnis aller Phasen eines frontends sowie eines Teils des backends und der jeweiligen theoretischen Grundlagen
- Entwicklungswerkzeuge
|
| Inhalt: |
- Einführung in die Compilierung
- Phasen eines Compilers inkl. durchgehendes (einfaches) Beispiel, grundlegende Begriffe
- bootstrapping
- lexikalische Analyse
- Syntaxanalyse
- semantische Analyse und syntaxgesteuerte Übersetzung
- Entwicklungswerkzeuge (Generatoren)
- Codeerzeugung
|
| Matierial: | derzeit kein Skript im Web verfügbar |
| Literatur: |
- AHO, SETHI, ULLMANN, Compilerbau, Addison Wesley 1989, ISBN 3-89319-151-8
- WILHELM, MAURER, Übersetzerbau, Theorie, Konstruktion, Generierung, Springer-Verlag, 1992, ISBN 3-540-55704-0
|
| Modul: | PI420 Betriebssysteme |
| Dozent: | Prof. Dr. R. Güttler |
| Studienziel: | Überblick über typische Prinzipien von Betriebssystemen, Alternativen bei der Entwicklung von Betriebsystemen, Verwaltungsstrategien
|
| Inhalt: |
- Einführung, Geschichte, Aufgaben eines Betriebssystems
- Prozesse, Betriebsarten, Betriebsmittel (Ressourcen)
- Hintergrundspeicherverwaltung
- Hauptspeicherverwaltung
- Prozessorverwaltung
- Prozessverwaltung, Interrupts, Kernoperationen
- Prozessynchronisation, Prozesskommunikation
- Konkurrierende Prozesse (gegenseitiger Ausschluss, Semaphoren, etc.)
|
| Literatur: |
- H. DEITEL: An Introduction to Operating Systems, Addison Wesley
- B. GOODHEART, J. COX: The Magic Garden Explained, Prentice Hall
- W.R. STEVENS: Advanced Programming in the UNIX Environment, Addison Wesley
- St. STAPELBERG: UNIX System 5.4 für Einsteiger und Fortgeschrittene, Addison Wesley
|
| Modul: | PI 510 Verteilte Systeme I |
| Lehrform: | Vorlesung, Praktikum |
| Studienziel: |
- Verständnis von Bedeutung und Komplexität verteilter Systeme vor allem auf Anwendungsebene
- Verständnis für die Integrationsproblematik
- was sind client-server-Systeme
- Verständnis für die Bedeutung der Protokolldefinitionen
- Softwarearchitektur auf Anwendungsebene
- technische Infrastruktur (TCP/IP), insbesondere Erlernen der Programmierschnittstellen
|
| Inhalt: |
- Konkrete Anwendungsbeispiele (ca. 10) samt Diskussion ihrer "Verteilungsaspekte"
- grundlegende Definitionen, Verteilungsmodelle
- Integrationsproblematik (Heterogenität, Dynamik, Autonomie)
- Kommunikation in verteilten Systemen
- Das client server Prinzip (iterative Server, parallele Server, Kommunikation)
- Analyse der technische Infrastruktur (TCP/IP)
- Programmierschnittstellen
- Werkzeuge mit fester Funktionalität (ftp, remote login, remote shell, usw)
- Werkzeuge als Programmiertool (RPC, RMI, CORBA)
- Softwarearchitektur (Einführung)
|
| Literatur: |
- Douglas COMER: Computernetzwerke und Internets, Prentice Hall
- Richard STEVENS: UNIX Networks Programming, Prentice Hall
- J. HENNEKEUSER, G. PETER: Rechnerkommunikation für Anwender, Springer Verlag
|
| Modul: | Programmiersprachen II: Algorithmen und Datenstrukturen |
| Dozent: | Prof. Dr. R. Güttler |
| Lehrform: | Vorlesung, Praktikum |
| Studienziel: |
- Zusammenhang zwischen Algorithmen und Datenstrukturen verstehen
- Komplexitätsmessung verstehen und bei einfachen Algorithmen anwenden können
- Verstehen, was ein abstrakter Datentyp ist, Unabhängigkeit von Konzept und Implementierung
- Basis-Datenstrukturen (Listen, stacks, queues, binäre Bäume) und damit verbundene Operationen beherrschen, d.h.
- sowohl selbst entsprechende Programme erstellen, als auch
- entsprechende Klassenbibliotheken anwenden können,
dabei objektorientierte Konzepte verstehen und anwenden können (Vererbung, Polymorphie)
- Verschiedene Implementierungen kennen lernen mit Vor- und Nachteilen
- Komplexere Varianten dieser Datenstrukturen mit Operationen in der Programmierung anwenden können
- Varianten von balancierten Bäumen mit Rebalancierungsmechanismen,
- Varianten von B-Bäumen (z.B. 2-3-4-Bäume)
- Hash-Tabellen mit verschiedenen Methoden der Kollisionsbehandlung,
dabei wieder besonderes Gewicht auf objektorientierte Konzepte
|
| Inhalt: |
- Einführung: Theoretischer Hintergrund
- Komplexität von Algorithmen (average, worst case)
- Zusammenhang zwischen Datenstrukturen und Algorithmen
- Einfache Datenstrukturen, jeweils mit typischen Anwendungsfällen, bzw. Eignung und Unterstützung von Algorithmen sowie unterschiedlichen Implementierungen
- Listen
- Stacks
- queues (ring buffer)
- einfache binäre Bäume (Suchbäume)
- Rekursion, Komplexere Datenstrukturen
- Komplexere Listen (rückwärts verkettet, multiple Verkettung
- Einfache balancierte Bäume (höhenbalanciert, AVL-Trees)
- Häufigkeits- bzw. gewichtsbalancierte Bäume
- Rebalancierungsmethoden (Rotation), Komplexität
- Optimale Suchbäume, Optimierungskriterien (welche Operation, worst case, average case, Komplexität)
- Rot-Schwarz-Bäume
- 2-3-4-Bäume (Ausblick auf B-Bäume, Anwendung für externe Speicherung)
- Hash-Tabellen, Kollisionbehandlung
- Graphenalgorithmen
|
| Literatur: |
- Th. CORMEN, Ch. LEISERSON, R. RIVEST: Introduction to Algorithms, MIT Press, McGraw-Hill, 1998
- M. WAITE, R. LAFORE: Data Structures & Algorithms in JAVA, , The Waite Group Press, 1998
- Th. STANDISH, Data Structures in JAVA, Addison Wesley, 1997
|
| |