Algorithmieren und Programmieren

Aufbauend auf einem intuitiven Algorithmenbegriff werden Grundprinzipien des Entwurfs und der Analyse von Algorithmen behandelt. Insbesondere werden Maße für die Effizienz von Algorithmen sowie Methoden für Aufwandsabschätzungen dargelegt. Ein wichtiger Aspekt ist dabei der Zusammenhang zwischen Algorithmen und geeigneten Datenstrukturen.

Am Beispiel der funktionalen Programmiersprache Haskell werden die Grundkonzepte von Programmiersprachen und deren Nutzung dargelegt. Programmierpraxis wird durch begleitende Programmieraufgaben erworben.

siehe auch Modulbeschreibung


Aktuelles

Bitte beachten Sie die hier im Laufe des Semesters veröffentlichten aktuellen Informationen.

  • Der Termin für die Abschlussklausur steht fest.
    • Die Abschlussklausur findet am Mittwoch, den 19.09.2018 von 08.30 bis 10.30 Uhr im ZHG/HS B und HS C statt.
  • Die Termine für die Zwischentests stehen fest.
    • Erster Zwischentest am 25.05.2018, 13:45-15:15Uhr, ZHG/HSB & HSC
    • Zweiter Zwischentest am 22.06.2018, 13:45-15:15Uhr, ZHG/HSB & HSC
  • Die erste Vorlesung findet statt am 06.04.2018 statt.
  • Die MOODLE-Anmeldung zur Lehrveranstaltung wird am 23.03.2018 aktiviert.
  • Die obligatorische Einschreibung in die Übungstermine erfolgt imMOODLE zur Lehrveranstaltung und wird nach der ersten Vorlesung am 06.04.2018freigeschaltet. Bei Bedarf werden weitere Teilnahmeplätze freigegeben.
  • Die ersten Übungen und Laborübungen finden in der zweiten Vorlesungswoche (ab 09.04.2018) statt

Organisatorisches

Im Folgenden finden Sie für die Lehrveranstaltung „Algorithmieren und Programmieren“ wichtige Informationen zum Ablauf der Vorlesung und der zugehörigen Übungen.


Vorlesung

Die Vorlesung wird teilweise mit Rechnerunterstützung aber auch an der Tafel gehalten. In beiden Fällen müssen eigenständig Notizen angefertigt werden, um eine vollständige Vorlesungsmitschrift zu erhalten. Die Foliensätze der jeweils nächsten Vorlesungen werden rechtzeitig bereitgestellt, so dass Sie diese zuvor ausdrucken und dann während der Vorlesungen ergänzen können.

Vorlesungsmaterialien

  • 0. Organisatorisches
  • 1. Einführung
  • 2. Funktionen als Programmiersprache
  • 3. Algorithmendesign und Programmiertechniken
  • 4. Konstruktion von Datenstrukturen, Listen
  • 5. Polymorphie und Überladen von Operationen
  • 6. Sortieren
  • 7. Aufwand und Terminierung
  • 8. Abstrakte Datentypen
  • 9. Funktionen höherer Ordnung
  • 10. Programmeigenschaften und -transformation
  • 11. Baumstrukturen
  • 12. Heaps und Heapsort
  • 13. Graphen und Graphalgorithmen
  • 14. Hashverfahren

Übung

Die Übung dient der Vertiefung des Vorlesungsstoffes. Jeder Teilnehmer der Lehrveranstaltung meldet sich zu einem der angebotenen Übungstermine an. 

Übungsblätter: Im wöchentlichem Rhythmus werden im MOODLE-System Übungsblätter für diese Lehrveranstaltung bereitgestellt. Einige der Aufgaben werden während der Übung gemeinsam mit dem Tutor beispielhaft gelöst. Die übrigen Aufgaben müssen von den Übungsteilnehmern selbständig gelöst werden. Die Lösungen sind am Ende des jeweiligen Bearbeitungszeitraums abzugeben und werden an einem der folgenden Übungstermine vom Tutor korrigiert zurückgegeben.

Die Übungsaufgaben werden in Einzelarbeit gelöst, d.h. jeder Student muss eine Lösung bei seinem Tutor einreichen. Gern dürfen sich die Teilnehmer gegenseitig unterstützen und einander Sacheverhalte erklären. Dabei sollte aber bedacht werden, dass es das Ziel der Aufgaben ist, jeden einzelnen bei der Vorbereitung auf die Klausuren zu helfen. Durch Abschreiben von Lösungen ist daher niemandem geholfen.

Es müssen mindestens 75% der Punkte aus den Übungsblättern und den zwei Zwischenklausuren erlangt werden, um zur Prüfung zugelassen zu werden.

Abgabe der Lösungen

Die Abgabe der Lösungen erfolgt grundsätzlich in digitaler Form per MOODLE. Geben Sie Ihre Lösungen am jeweiligen Abgabetag bis spätestens 15:30 Uhr ab. Verspätete Abgaben können nicht berücksichtigt werden!


Übungsblätter

Die Übungsblätter finden Sie im MOODLE-System.


Software

Die auf den Übungsblättern gestellten Programmieraufgaben sind bis auf einige Ausnahmen in der Programmiersprache Haskell zu lösen. Sie erhalten in den Übungen und Laborübungen bei Bedarf Hilfestellung zur Installation eines Haskell-Systems auf Ihrem eigenen Rechner.

Es sind verschiedene Haskell-Interpreter und -Compiler kostenlos im Internet verfügbar. Wir nutzen die Haskell Platform, welche den Glasgow Haskell Compiler (GHC) einschließlich der interaktiven Umgebung GHCi enthält.


Laborübung

Die Laborübungen finden im  PC-Pool 1 (Raum 0.03 im Erdgeschoss des neuen Informatikgebäudes VG1C) des Instituts für Informatik statt. Hier können sie unter Nutzung der vorhandenen Arbeitsplatzrechner oder mitgebrachter eigener Notebooks gemeinsam an der Lösung der Übungsaufgaben arbeiten. Außerdem ist ein Tutor anwesend, der auf Fragen eingeht und bei der Bewältigung aller Probleme hilft, welche die Bearbeitung der Übungsaufgaben und das Verständnis des Vorlesungsstoffes betreffen.

Im Unterschied zur Übung müssen Sie sich für die Laborübung nicht zu einem festen Termin anmelden. Die Tutoren werden darauf achten, dass die Laborübungen gleichmäßig ausgelastet sind und gegebenenfalls auf die anderen Termine verweisen.


Klausuren

Während der Vorlesungszeit werden zwei Zwischenklausuren (jeweils an einem Vorlesungstermin) durchgeführt, deren erfolgreiches Bearbeiten zusammen mit den Übungsblättern, Prüfungsvorraussetzung sind. Es müssen dabei 75% der Punkte aus Übungsblättern + den 2 Zwischenklausuren erlangt werden, um zur Prüfung zugelassen zu werden.

Die Termine für die Zwischentests stehen fest.

  • Erster Zwischentest am 25.05.2018, 13:45-15:15Uhr, ZHG/HSB & HSC
  • Zweiter Zwischentest am 22.06.2018, 13:45-15:15Uhr, ZHG/HSB & HSC

Im Prüfungszeitraum wird eine Endklausur durchgeführt, die die Prüfungsnote ergibt.

Der Termin für die Abschlussklausur steht fest.

Die Abschlussklausur findet am Mittwoch, den 19.09.2018 von 08.30 bis 10.30 Uhr im ZHG/HS B und HS C statt.


Termine

Im Folgenden sind alle wichtigen Termine der Lehrveranstaltung aufgeführt. Eventuelle Änderungen werden rechtzeitig in der Vorlesung, den Übungen und im Abschnitt Aktuelles auf dieser Webseite bekanntgegeben.

Vorlesung, Übung, Laborübung

Die Vorlesung findet wöchentlich bis einschließlich Freitag, 13.07.2016, immer

dienstags, 13:45–15:15 (LG 1A, Hörsaal 1) und freitags, 13:45–15:15 (ZHG, Hörsaal B)

statt. Die erste Vorlesung ist am Freitag den 06.04.2018.

Die Übungen und Laborübungen finden wöchentlich bis zum Ende der Vorlesung statt. Die Übungen beginnen in der Woche vom 09.04.2018.

Übungendasd
WochentagZeitRaumTutor
dienstags15:30–17:00 SR4/ZHGViktoria
mittwochs15:30–17:00HG0.18Julius
freitags11:30–13:00HG0.18Sonja

Einschreibung in die Übungsgruppen ist über das MOODLE-System erforderlich.

Laborübungen
WochentagZeitRaumTutoren
montags15:30–17:00 VG1C/0.03Julius
dienstags09:15-10:45VG1C/0.03Viktoria
mittwochs09:15-10:45VG1C/0.03Sonja

Beachten Sie auch die Wochenübersicht der Termine für Vorlesungen und Übungen am Lehrstuhl Programmiersprachen und Compilerbau.

Zwischenklausuren, Endklausur

Genauere Informationen zum Ablauf der Klausuren erhalten Sie rechtzeitig in der Vorlesung bzw. im Abschnitt Aktuelles.

Klausureinsicht

Die Termine zur Einsichtnahme in die korrigierten Klausuren werden im Abschnitt Aktuelles bekannt gegeben.

Konsultationen

Vor der Endklausur werden Konsultationstermine angeboten (siehe im Abschnitt Aktuelles).


Anmeldung

Die Teilnahme an der Lehrveranstaltung und der zugehörigen Prüfung setzt eine fristgemäße Prüfungsanmeldung sowie eine Anmeldung im Lehrveranstaltungsinformationssystem MOODLE voraus.

Prüfungsanmeldung

Die korrekte Anmeldung zur Prüfung muss von jedem Teilnehmer eigenverantwortlich durchgeführt werden. Studierende in modularisierten Studiengängen können sich typischerweise online für das Modul 12101 „Algorithmieren und Programmieren“ anmelden. Bitte beachten Sie die generellen Hinweise zur Prüfungsanmeldung.

MOODLE-Anmeldung

Zu Organisationszwecken ist eine Anmeldung zur Lehrveranstaltung „Algorithmieren und Programmieren“ in MOODLE für alle Teilnehmer verpflichtend. Bei der Anmeldung gehen Sie bitte wie folgt vor:

  • Melden Sie sich zur Lehrveranstaltung „Algorithmieren und Programmieren“ im Sommersemester 2018 (SoSe 2018) an. Die Einschreibung wird am 23.03.2018 aktiviert.
  • Treten Sie einer Übungsgruppe Ihrer Wahl bei. Die Anmeldung zu den Übungsterminen wird am Ende der ersten Vorlesung freigeschalten.

Fristen für die Anmeldung

Die Prüfungsanmeldung muss bei Studierenden in modularisierten Studiengängen typischerweise innerhalb der ersten drei Vorlesungswochen erfolgen. Ein Rücktritt von der Prüfungsanmeldung ist innerhalb der ersten sieben Vorlesungswochen möglich. Die Anmeldung zur Lehrveranstaltung in MOODLE ist ebenfalls während der ersten drei Vorlesungswochen freigeschaltet.


Literaturhinweise

Lehrbücher

  • Peter Pepper: Funktionale Programmierung in OPAL, HASKELL und GOFER. Springer, 2003
  • Manuel M. T. Chakravarty, Gabriele C. Keller: Einführung in die Programmierung mit Haskell. Pearson Studium, 2004
  • Simon Thompson: Haskell – The Craft of Functional Programming. Pearson Education, 1999
  • Peter Pepper: Programmieren lernen. Eine grundlegende Einführung mit Java. Springer, eXamen.press, 2007; im BTU-Netz online verfügbar
  • Ralf Hartmut Güting, Stefan Dieker: Datenstrukturen und Algorithmen. Teubner, 2003
  • Fethi Rabhi, Guy Lapalme: Algorithms – A Functional Programming Approach. Pearson Education, 1999

Online-Informationen

Weitere Literaturhinweise werden an entsprechender Stelle in der Vorlesung gegeben.


Kontakt

Scheuen Sie sich nicht, Fragen zu stellen oder auf Probleme hinzuweisen. Vieles lässt sich während der Präsenzzeiten (Vorlesung, Übung und Laborübung) klären. Bei weitergehenden oder dringenden Anliegen wenden Sie sich per E-Mail persönlich an uns.

Sven Löffler oder Petra Hofstedt