Hochschule Reutlingen
Fakultät Informatik
Studiengang Medien- und Kommunikationsinformatik Bachelor

Informatik 3

mki-B3 - I3

Formaler Teil

Lehrveranstaltungen und Form Informatik 3 Vorlesung, Informatik 3 Praktikum
Dozent Prof. Dr. Karlheinz Hug
Sprache Deutsch
Curriculum mki-B3, 3. Semester.
Status Pflichtfach
Angebot jedes Semester
Dauer und Arbeitsaufwand 4+2 SWS, Präsenzzeit: 90 Stunden, Eigenstudium: 210 Stunden
Kreditpunkte 10 ECTS (5+5)
Prüfungen Vorlesung: Schriftliche Klausur von 2 Stunden Dauer am Ende des 3. Semesters; benotet.

Praktikum: Erläuterung und Vorführung von Lösungen zu Projektübungsaufgaben, wobei eine bestimmte Quantität und Qualität zu erreichen ist; unbenotet.

Inhaltlicher Teil

Kurzbeschreibung

Dritter Teil einer Einführung in die praktische Informatik; befasst sich mit Konzepten und Entwürfen objektorientierter Programmiersprachen sowie Techniken der objektorientierten, sequenziellen und nebenläufigen Programmierung.

Empfohlene Vorkenntnisse

Informatik 1, Informatik 2, Theoretische Grundlagen 1, Theoretische Grundlagen 2. Im Praktikum: Erworbene Kenntnisse aus der Vorlesung, Vorbereitung anhand von Lehrmaterial, Literatur und Webrecherchen.

Bezug zu Gesamtqualifikationszielen

Informatik 3 trägt zu den Gesamtlehrzielen von mki wie folgt bei:
  • Solide Informatik-Grundlagen: Die Studierenden lernen Konzepte und Entwürfe praxisrelevanter objektorientierter Programmiersprachen sowie Probleme nebenläufiger Programmierung kennen.
  • Umfassende Methodenkompetenz: Die Studierenden lernen, sich systematisch neue Programmiersprachen anzueignen. Sie lernen grundlegende Algorithmen, Datenstrukturen, Entwurfsmuster und verschiedene sequenzielle und nebenläufige Programmiertechniken kennen.
  • Soziale und kommunikative Kompetenz: Das Praktikum regt die Studierenden an, über Programmierprobleme, Programmiersprachen, Sprachkonzepte und -entwürfe zu diskutieren und in Gruppen Programme zu erarbeiten.
  • Attraktive Berufsperspektive: Die Studierenden programmieren in marktgängigen Programmiersprachen mit aktuellen Entwicklungsumgebungen auf Windows und Linux.

Lernziele

Der Hauptzweck von Informatik 1, 2 und 3 ist, Grundlagen der praktischen Informatik und zentrale Ideen imperativer Programmierung zu vermitteln, um die Studierenden auf professionelles, industrielles Entwickeln von qualitätvoller Software für multimediale und verteilte Anwendungen vorzubereiten. Die Studierenden lernen wichtige sequenzielle Programmiertechniken, Algorithmen, Datenstrukturen und Entwurfsmuster in mehreren Programmiersprachen formuliert kennen. Sie erhalten einen Einblick in die reichhaltige Welt der nebenläufigen Programmierung und lernen Entwurfsmuster für Lösungen von Synchronisations- und Kommunikationsproblemen kennen. Im Praktikum wenden die Studierenden die in der Vorlesung rezipierten Kenntnisse selbstständig beim Lösen von Projektübungsaufgaben an. Die Studierenden sind am Ende fähig,
  • sich schnell in neue Programmiersprachen und Entwicklungsumgebungen einzuarbeiten,
  • wesentliche programmiersprachliche Konzepte zu erfassen und von einzelnen Programmiersprachen zu abstrahieren,
  • Programme von einer Programmiersprache in eine andere zu transformieren,
  • Entwürfe von Programmiersprachen zu diskutieren,
  • Einsatzmöglichkeiten von Programmiersprachen zu erkennen,
  • Problemanalysen und Lösungsentwürfe programmiersprachenunabhängig zu formulieren und in verschiedenen Programmiersprachen zu realisieren,
  • größere Programmieraufgaben zu bewältigen und dabei die Lernziele von Informatik 2 zu erreichen,
  • fortgeschrittene Sprachkonzepte wie Generizität und Ausnahmebehandlung einzusetzen,
  • Synchronisations- und Kommunikationsprobleme in nebenläufigen Programmen zu erkennen.

Inhalte

Dieser dritte Teil einer dreiteiligen Einführung in die Informatik baut auf den ersten beiden Teilen auf und gliedert sich in zwei Hälften. Die erste Hälfte befasst sich mit Techniken der sequenziellen Programmierung und Konzepten und Entwürfen objektorientierter Programmiersprachen, die zweite mit Problemen, Konzepten und Lösungsmustern nebenläufiger Programmierung.

In der ersten Hälfte werden die statisch typisierten objektorientierten Mehrzwecksprachen Eiffel, C++, Java und C# betrachtet. Die letzten drei liegen in einer Entwicklungslinie, was den Lernaufwand begrenzt. Anhand von Beispielprogrammen, die zugleich wichtige Algorithmen, Datenstrukturen und Programmiertechniken und Entwurfsmuster vorstellen, werden gemeinsame, wesentliche, oft schon von der ersten Lehrsprache bekannte Sprachkonzepte erklärt. Darüber hinaus werden weitere Sprachkonzepte wie Generizität, mehrfaches und wiederholtes Erben und Ausnahmebehandlung behandelt.

Die zweite Hälfte führt in das Thema Nebenläufigkeit ein. Grundlegende Probleme und Lösungsansätze der nebenläufigen Programmierung werden vorgestellt. Exemplarisch wird Javas Unterstützung nebenläufiger Programmierung durch Threads und Synchronisations- und Kommunikationskonstrukte behandelt.

Lehrformen und -methoden, Medien

Vorlesung mit begleitendem Praktikum. Seminaristischer Unterricht mit Tafelanschrieb, Tageslichtprojektion und PC-Beamer.

Um die Studierenden an größere Aufgaben heran zu führen, bearbeiten sie im Praktikum mehrere umfangreiche Projektübungsaufgaben jeweils über mehrere Wochen hinweg ziemlich selbstständig oder in kleinen Gruppen und entwickeln ihre individuellen Programme dazu, wobei sie die Programmiersprachen Eiffel, C++, Java und C# auf den Betriebssystemen Windows und Linux einsetzen. Betreuung durch den Dozenten und den Assistenten.

Lehrmaterial

Skript in Buch- (Teil 1) und Folienform (Teil 2), Beispielprogramme, Merk-, Leit- und Übungsblätter, in gedruckter und/oder elektronischer Form verteilt.

Herunterladbares Material

Literatur

Ian Joyner: Objects Unencapsulated. Java, Eiffel, and C++?? Prentice Hall, Upper Saddle River (1999) 386 S.

Robert W. Sebesta: Concepts of Programming Languages Pearson Educa­tion Inc., Boston (2006) 7th edition, 724 S.

Ravi Sethi: Programming Languages. Concepts and Constructs Addison-Wesley (1997) 2nd edition, 640 S.

Vertiefende Literatur: Siehe die Literaturverzeichnisse in beiden Teilen des Skripts.

Interessante Links