Uni-Logo Institut für Informatik - Arbeitsgruppe Software Engineering
Informatik B (SS 2012):
Grundlagen der Software-Entwicklung
Dozentin Jun.-Prof. Dr.-Ing. Elke Pulvermüller
Übungsleiter Dipl.-Inf. Wolfgang Runte
Tutoren
Vorlesung
montags16:00 - 18:00 Uhr, 16.04., 23.04. und 30.04.12: Raum 66/E33, ab 07.05.12: Raum 32/102 + 109
dienstags12:00 - 14:00 Uhr, 17.04. und 24.04.12: Raum 66/E34, ab 08.05.12: Raum 32/102 + 109
Übung
donnerstags12:00 - 14:00 Uhr, Raum 31/E06
donnerstags14:00 - 16:00 Uhr, Raum 31/E06
Beide Übungen haben den gleichen Inhalt.
Beginn Montag, 16. April 2012 (erste Übung am 19. April)
Prüfungstermin Samstag, 21.07.2012, 09:00 Uhr (s.t.) - 11:00 Uhr, Raum 01/E01+E02
Anmeldung über OPIuM erforderlich! Übersicht über die Ergebnisse
Wiederholungsprüfung Dienstag, 18.09.2012, 09:00 Uhr (s.t.) - 11:00 Uhr, Raum 01/E01+E02
Anmeldung über OPIuM erforderlich!
Inhalt Die Veranstaltung führt in die objekt-orientierten Konzepte und Programmierung mit Java ein. Die behandelten Konzepte werden durch Programmieraufgaben eingeübt und vertieft.
Literatur
Vorlesungsmaterial Das Vorlesungsmaterial wird im Laufe des Semesters zusammengestellt und wöchentlich überarbeitet/ergänzt. Außerdem: Quelltexte aus der Vorlesung (und darüberhinaus).
Termine
Woche Montag Thema Dienstag Thema
1. 16.04.2012 Organisatorisches (Vorlesung, Übungen, Übungsblätter, Testate, Mailingliste, Information, Klausur), Einführung (Organisatorisches, Empfohlende Begleitliteratur, Inhalt, Einleitung), Grundlegende objektorientierte Konzepte (Objekte, Klassen und Instanzen, Modellierungsprinzipien, Identität, Sichtbarkeitsbereiche, Methodenparameter und Rückgabewert) 17.04.2012 Grundlegende objektorientierte Konzepte (Überladen von Methoden, Spezielle Methoden, Gleichheit bzw. Identität von Objekten, Klasseneigenschaften, Der Singleton)
2. 23.04.2012 Grundlagen der Software Entwicklung (Die Programmiersprache Java, Vom Programm zur Maschine, Abstraktion von der Plattform) 24.04.2012 Grundlagen der Software Entwicklung (Abstraktion von der Plattform, Vom Problem zum Programm: Modellierung mit UML, Modellierung mit EBNF, Syntaxdiagrammen, regulären Ausdrücken)
3. 30.04.2012 Grundlagen der Software Entwicklung (Vom Problem zum Programm: Modellierung mit EBNF, Syntaxdiagrammen, regulären Ausdrücken, Muster in der Software-Entwicklung; Programmiersprachenparadigmen), Wichtige objektorientierte Konzepte (Modularisierung, Abstraktion und Hierarchie; Vererbung, Typing: Typanpassungen/Type Casts) 01.05.2012 Maifeiertag
4. 07.05.2012 Wichtige objektorientierte Konzepte (Typing: Dynamisches Binden, Substitutionsprinzip, Autoboxing; Abstrakte Klasse, Interface) 08.05.2012 Wichtige objektorientierte Konzepte (Fortsetzung Interface, Entwicklung mit Schnittstellen, Paket, Beziehungen und ihre Modellierung: Assoziation/Association, Aggregation, Komposition/Composition, Benutzt-Beziehung/Using)
5. 14.05.2012 Wichtige objektorientierte Konzepte (Beziehungen und ihre Modellierung: Abgrenzung: Komposition, Aggregation, Using; Verfeinerung der Beziehungen (mit UML), Abhängigkeit/Dependency, Instanziierung, Dynamische Modellierung der Beziehungen: UML-Sequenzdiagramme 15.05.2012 Fehlerbehandlung (Grundlagen der Fehlerbehandlung, Zusicherungen/Assertions, Ausnahmen/Exceptions: Exception-Behandlung in Java: Klassenhierarchie, Fehlerbehandlung in Java (catch), Werfen von Exceptions in Java (throw/s))
6. 21.05.2012 Fehlerbehandlung (Fortsetzung Ausnahmen/Exceptions: Besondere Exception in Java: RuntimeException; Fehler/Errors, Zusicherungen und andere Erweiterungen in UML, Laufzeitstapel/Stack Trace), Generizität/Generics (Nutzen und mögliche Alternativen, Umsetzung, Erweiterungen: Mehrere Typparameter, Typeinschränkungen: Bounds) 22.05.2012 Generizität/Generics (Fortsetzung Erweiterungen: Typeinschränkungen: Bounds; Modellierung in UML, Generizität bei Objekt- und Klassenmethoden), Polymorphie/Polymorphismus (Arten von Polymorphie), Klassenbibliothek/JCF (Klassenbibliotheken allgemein, Java Collection Framework/JCF, JCF Organisation und Aufbau, JCF Schnittstellen, JCF Implementierungen)
7. 28.05.2012 Pfingstmontag 29.05.2012 Klassenbibliotheken/JCF (Fortsetzung JCF Implementierungen, JCF Algorithmen, JCF Typsicherheit, Iteration: Das Entwurfsmuster Iterator, Null Iterator und "Entwurfsmuster" Null Object, Iteration in Java)
8. 04.06.2012 Klassenbibliotheken/JCF (Fortsetzung Iteration: Iteration in Java; JCF Wrapper Implementierung, Exkurs: Innere Klassen), Persistenz (Grundlagen der Persistenz, Datei-/Verzeichnisverwaltung: Dateien und Verzeichnisse in Java: File, Anlegen, Löschen, Umbenennen, Auflisten mit File) 05.06.2012 Persistenz (Fortsetzung Datei-/Verzeichnisverwaltung: Anlegen, Löschen, Umbenennen, Auflisten mit File; NIO.2, I/O-Streams: Arten von Streams in Java, Java Stream-Klassen: lesen, schreiben, Beispiel: Verwendung von Streams im Programm, Autocloseable und Automatic Resource Management)
9. 11.06.2012 Persistenz (Fortsetzung I/O-Streams: Standard I/O-Streams, Verknüpfen von Streams, Exkurs: Entwurfsmuster Decorator) 12.06.2012 Persistenz (Fortsetzung I/O-Streams: I/O-Klassenhierarchie in Java (Auszug); Serialisierung: Standardserialisierung in Java (Paket java.io), Alternative Realisierungen der Serialisierung in Java)
10. 18.06.2012 Nebenläufigkeit (Grundlagen der Nebenläufigkeit, Threads, Java Threads: Wir bauen einen Java-Thread, Beenden eines Threads, Spezielle Threads; Thread-Gruppen) 19.06.2012 Nebenläufigkeit (Thread Zustände, Threads und Fehler, Synchronisation: Zugriffsprobleme, Kritischer Abschnitt, Abhilfe auf Sprachebene)
11. 25.06.2012 Nebenläufigkeit (Fortsetzung Synchronisation: Schützen kritischer Abschnitte mit Monitoren, Probleme der Synchronisation: Deadlocks; Synchronisation durch Kommunikation) 26.06.2012 Nebenläufigkeit (Fortsetzung Synchronisation: Synchronisation durch Kommunikation, Klassische Probleme in der Synchronisation: Producer-Consumer bzw. Bounded Buffer Problem, Dining Philosophers, Sleeping Barber), Grafische Benutzeroberflächen (Grafische Benutzeroberflächen/GUI, Abstract Window Toolkit/AWT: Fenstertypen, Steuerelemente, Layout)
12. 02.07.2012 Grafische Benutzeroberflächen (Fortsetzung Abstract Window Toolkit/AWT: Ereignisverarbeitung/Event Handling, Adapterklassen für Listener-Schnittstellen, Event-Dispatching-Thread) 03.07.2012 Grafische Benutzeroberflächen (Beobachter-Muster/Observer Pattern, Swing, Model-View-Controller-Prinzip/Muster, MVC, GUIs und Programme im Web: Applets)
13. 09.07.2012 Netzwerkprogrammierung (Netzwerke Grundlagen, Netzwerkprotokolle, Adressierung, Sockets, Client/Server) 10.07.2012 Netzwerkprogrammierung (Implementierung in Java: Client-Seite, Server-Seite, UDP-Paket-Verbindung in Java; Höhere Kommunikation)
14. 16.07.2012 Prüfungsvorbereitung (Plenum in Raum 66/E34) 17.07.2012 Prüfungsvorbereitung/Sprechstunde (spezifische Fragen nach Bedarf, einzeln oder gruppenweise in Raum 31/318)
Leistungsnachweis Als Leistungsnachweis wird generell ein numerisch und ECTS-benoteter Übungsschein vergeben bzw. eine entsprechende Modulprüfungsleistung bescheinigt. Voraussetzung für den Erwerb des Übungsscheins sowie Grundlage für die Note ist die erfolgreiche Teilnahme an einer Abschlussprüfung.

Um die Zulassung zu dieser Prüfung zu erhalten, ist die erfolgreiche Teilnahme am Übungsbetrieb zur Vorlesung in diesem oder einem der vorhergehenden Semester erforderlich. Als Erfolg gilt hierbei jeweils (pro Aufgabenblatt) 50% der möglichen Punkte bei n-1 der n Übungsblätter.

ECTS-Leistungen müssen nach deutschen Kriterien numerisch benotet werden, die Nummern werden dann nach dem vorgegebenen Schlüssel auf die ECTS-Buchstaben abgebildet.