Programmieren I • Einführung: Vom Algorithmus zum Programm, Lexik, Syntax, Semantik • Erste Schritte in Java • Grundlagen der Sprache: Datentypen, Ausdrücke und Anweisungen, imperative Programmierung • Objektorientierte Programmierung: Klassen, Objekte, Attribute, Methoden, Vererbung, Schnittstellen, statische Attribute und Methoden, Variablentypen, Polymorphismus, Beziehungen zwischen Klassen/Objekten • Rekursive Methoden, ein Blick auf funktionale Programmierung • Zuverlässigkeit von Programmen: Ausnahmebehandlung, Verifikation, Test • Methoden zur Ein- und Ausgabe • Ergänzungen und Fallstudien Schlussbemerkungen S-1 Programmieren II • Weitere Sprachkonzepte von Java: lokale, anonyme Klassen, Wrapper-Klassen, spezielle String-Klassen, Aufzählungstypen, Packages, Annotationen • Java und Datenstrukturen: generische Datentypen, Listen, Keller, Schlangen, Bäume, Graphen, Suchen u. Sortieren, Hash-Verfahren, Java Collections Framework (JCF) • Parallelprogrammierung in Java, das Concurrent-Paket • Grafikprogrammierung, Java Foundation Classes (JFC), AWT- und Swing-Klassen • Ausblick: Entwurfsmuster, Paradigmen und Sprachen, Software Engineering • Ergänzungen und Fallstudien Schlussbemerkungen S-2 Programmierausbildung im Bachelorstudiengang • Imperative und objektorientierte Programmierung: ◦ Programmieren I (Java, 1. Sem.) ◦ Programmieren II (Java, 2. Sem.) • Softwaretechnik: ◦ Softwaretechnik I (UML, 3. Sem.) ◦ Softwareentwicklungspraktikum (Java oder andere Sprache, UML, 4. Sem.) • Funktionale Programmierung, weiterführende Konzepte: ◦ Programmieren f. Fortgeschrittene (Haskell, Wahlpflichtveranstaltung) Schlussbemerkungen S-3 Softwaretechnik I • In der Vorlesung „Softwaretechnik I“ lernen Sie die Grundlagen des Software-Entwicklungsprozesses kennen. Voraussetzung ist die solide Beherrschung einer Programmiersprache. • ◦ ◦ ◦ ◦ ◦ ◦ Software-Lebenszyklus Software-Qualitätsmerkmale Prozessmodelle Spezifikations- und Entwurfsverfahren Implementierung, Validierung, Test Werkzeuge • Die Vorlesung „Softwaretechnik I“ findet jeweils im Wintersemester statt. Schlussbemerkungen S-4 Software-Entwicklungspraktikum • Ziel des Praktikums ist die Entwicklung eines Software-Systems unter Durchspielen des vollständigen Prozessmodells. Die Teilnehmer bilden Teams zu ca. fünf Studenten. Jeder ist während einer Phase für die Arbeit des gesamten Teams verantwortlich. • ◦ ◦ ◦ ◦ ◦ Pflichtenheft Entwurf Spezifikation Implementierung Validierung • Das Software-Entwicklungspraktikum findet jeweils im Sommersemester statt. Sinnvoll ist es, Kenntnisse der Vorlesungen „Softwaretechnik I“, „Programmieren I“ und „Programmieren II“ zu besitzen. Schlussbemerkungen S-5 Programmieren für Fortgeschrittene • In dieser Vorlesung werden grundlegende Konzepte der Programmiersprachen aus einer übergeordneten Sichtweise betrachtet. • Der Fokus liegt nicht auf einer Programmiersprache oder einem Programmierparadigma. • In den Übungen besteht die Möglichkeit, eine weitere Programmiersprache zu erlernen (Haskell). • Bachelor-Studiengang Schlussbemerkungen S-6 Das softwaretechnische Industriepraktikum Informatik • Bachelor: Teamprojekt, Studienleistung, unbenotet, 5 LP. • Master: Praktikum, Studienleistung, unbenotet, 5 LP. Im Anschluss möglich: Bachelor-, Projekt-, Masterarbeit. Die Punktezahlen hängen vom Studiengang und der Prüfungsordnung ab. Wirtschaftsinformatik • Bachelor: Teamprojekt, Prüfungsleistung, benotet, 6 LP. • Diplom: Praktikum, 4 SWS. (im Rahmen der Projektarbeit) Im Anschluss möglich: Bachelor-, Master-, Studien-, Diplomarbeit. Schlussbemerkungen S-7 Zielsetzung des Praktikums • Die Lerninhalte des softwaretechnischen Industriepraktikums stellen eine praxisbezogene Ergänzung der Programmierausbildung des Studiums an der TU dar. • Die zu schreibenden Programme werden unter realen Bedingungen angefertigt und später in der Firma eingesetzt. Schlussbemerkungen S-8 Ablauf des Praktikums • Das Praktikum findet von Oktober bis Februar mit ca. 10 Teilnehmern statt. • Die Teilnehmer(innen) sind zwei Tage pro Woche in Salzgitter anwesend. • In den ersten Wochen finden Schulungen statt. Danach bearbeiten die Teilnehmer(innen) Aufgaben in kleinen Gruppen. • Es wird eine Besichtigung der Stahlwerke angeboten. • Am Ende finden ein Abschlussvortrag und eine Abschlussfeier statt. Schlussbemerkungen S-9 Compiler • In diesem Themengebiet werden grundlegende Konzepte der Implementierung von Programmiersprachen vorgestellt. • Es werden die folgenden Module angeboten: ◦ Compiler I, ◦ Compiler II, ◦ Compilerpraktikum. • Master-Studiengang Schlussbemerkungen S-10 Semantik von Programmiersprachen • In dieser Vorlesung werden die wichtigsten Konzepte zur Definition von Programmiersprachen vorgestellt. • Behandelt werden die operationelle, die denotationale und die axiomatische Methode. • Master-Studiengang Schlussbemerkungen S-11 Logik in der Informatik • In dieser Vorlesung werden verschiedene Logiken und einige Anwendungen in der Informatik behandelt. • Beispielanwendung: Programmiersprache Prolog • Master-Studiengang Schlussbemerkungen S-12 Womit haben wir im ersten Semester begonnen? Vom Algorithmus zum Programm – Was ist ein Algorithmus? – Was ist ein Programm? – Wie wird ein Algorithmus aufgeschrieben? – Mit welchem Aufwand löst der Algorithmus das Problem? – Löst der Algorithmus das Problem? – Gibt es einen Algorithmus für das Problem? – Software Engineering – Vom kleinen zum großen Programm – Weitere Aspekte Schlussbemerkungen S-13 Algorithmen und Programme Paradigmen Formale Algorithmusdefinition, Berechenbarkeit Komplexität Korrektheit Entwurf von Algorithmen Abstrakte Datentypen Varianten des Algorithmusbegriffs Intuitive Algorithmen: Konkrete Algorithmen und Datenstrukturen Programme Programmiersprachen Lexik Schlussbemerkungen Syntax Semantik S-14 Mathematik und Informatik: Grundlagen und Grenzen Grenzen der Mathematik und Informatik Mathematik Informatik Axiomatische Mengenlehre Berechenbarkeit/Entscheidbarkeit Logik Schlussbemerkungen S-15 Studium: Bildung statt nur Ausbildung Heraklit (ca. 540–480 v. Chr.): • Bildung heißt „ein Feuer entfachen“ und nicht „einen leeren Eimer“ füllen. • Das eigentlich Beständige ist der Wechsel. Alles fließt. Was meint Heraklit? • Selbstständigkeit: weitere Beispiele, Literatur beschaffen und lesen, . . . • Lebenslanges Lernen: gerade in einem Fach wie die Informatik unverzichtbar Schlussbemerkungen S-16