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.

  • Die Prüfungseinsicht zur Endklausur findet am Dienstag, den 20.09.2016 in der Zeit von 10:00-11:00 Uhr im VG1C Besprechungsraum 1.04 statt.

  • Die Endklausur findet am 14.09.2016, 7:30 Uhr, HS B und HS C/ZHG
    Bitte seien sie bereits 7:10 Uhr vor Ort
    und bringen Sie ihren Studierendenausweis mit.

  • 2. Zwischenklausur: Freitag, den 24.06.2016, 13:45-15:15, ZHG/HS A und B
    • Bitte seien Sie 13:30 Uhr vor Ort und bringen Sie ihren Studierendenausweis mit.
    • Klausureinsicht: Donnerstag 7.7.16 10:30-11:30,
      Raum 2.12 VG1C
  • 1. Zwischenklausur: Freitag, den 13.05.2016, 13:45-15:15, ZHG/HS A und B
    • Bitte seien Sie 13:30 Uhr vor Ort und bringen Sie ihren Studierendenausweis mit.
    • Klausureinsicht: Donnerstag, 19.05.2016 10:30-11:30, Raum 2.12 VG1C
  • Die erste Vorlesung findet statt am 08.04.2016 statt.
  • Die MOODLE-Anmeldung zur Lehrveranstaltung wird am 01.04.2016 aktiviert.
  • Die obligatorische Einschreibung in die Übungstermine erfolgt imMOODLE zur Lehrveranstaltung und wird nach der ersten Vorlesung am 08.04.2015freigeschaltet. Bei Bedarf werden weitere Teilnahmeplätze freigegeben.
  • Die ersten Übungen und Laborübungen finden in der zweiten Vorlesungswoche (ab 11.04.2016) 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. Linksbäume und Heaps
  • 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.

Voraussetzung für die erfolgreiche Teilnahme an der Lehrveranstaltung ist die erfolgreiche Bearbeitung von wenigsten 75% der Übungsblätter, welche im Verlauf der Vorlesungszeit bereitgestellt werden. Nicht erfolgreich bearbeitete Übungsblätter können einmalig innerhalb einer Woche nachbearbeitet werden.

Abgabe der Lösungen

Die Abgabe der Lösungen erfolgt grundsätzlich in schriftlicher Form. Zusätzlich werden die Lösungen der meisten Programmieraufgaben per E-Mail an den zuständigen Tutor abgegeben. Bitte beachten Sie die folgenden Regelungen:

  • Geben Sie Ihre Lösungen (schriftlich sowie elektronisch) am jeweiligen Abgabetag bis spätestens 15:30 Uhr ab. Verspätete Abgaben können nicht berücksichtigt werden!
  • Schriftliche Lösungen werfen Sie bitte in den Lehrstuhlbriefkasten (Verfügungsgebäude 1C, Erdgeschoss, Vordereingang, Briefkasten Nr. 5).
  • Wichtig: Notieren Sie unbedingt gut sichtbar den Namen des Tutors, sowie den eigenen Namen auf Ihrer schriftlichen Lösung.

Ü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, die jeweils 20% der insgesamt erreichbaren Punktzahl ausmachen. Im zweiten Prüfungszeitraum wird eine Endklausur durchgeführt, die den restlichen 60% der insgesamt erreichbaren Punkte entspricht. Aus der Summe der in allen drei Klausuren erreichten Punktzahlen errechnet sich die Prüfungsnote.

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, 15.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 Übungen und Laborübungen finden wöchentlich bis zum Ende der Vorlesung statt.

Übungendasd
WochentagZeitRaumTutor
dienstags15:30–17:00 SR4/ZHGMarc
mittwochs15:30–17:00HG0.18Denny
donnerstags15:30–17:00HG0.17Veronika
freitags11:30–13:00HG0.18Michael

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

Laborübungen
WochentagZeitRaumTutoren
montags15:30–17:00 VG1C/0.03Michael
dienstags09:15-10:45VG1C/0.03Veronika
mittwochs09:15-10:45VG1C/0.03Marc

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

Zwischenklausuren, Endklausur

Die beiden Zwischenklausuren finden zum Vorlesungstermin statt am

  • Freitag, den 13.05.2016, 13:45-15:15, ZHG/HS A und B
  • Bitte seien Sie 13:30 Uhr vor Ort und bringen Sie ihren Studierendenausweis mit.
  • Klausureinsicht: Donnerstag, 19.05.2016 10:30-11:30, Raum 2.12 VG1C

und

  • Freitag, den 24.06.2016, 13:45-15:15, ZHG/HS A und B
  • Bitte seien Sie 13:30 Uhr vor Ort und bringen Sie ihren Studierendenausweis mit.

Die Aufteilung der Studierenden auf die Hörsäle wird in der Vorlesung bekanntgegeben.

Die Endklausur findet am

  • 14.09.2016, 7:30 Uhr, HS B und HS C/ZHG
    Bitte seien sie bereits 7:10 Uhr vor Ort!

statt.

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

  • Der Nachschreibetermin für die AuP-Zwischenklausure ...WIRD NOCH BEKANNTGEGEBEN.

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 2016 (SoSe 2016) an. Die Einschreibung wird am 01.04.2016 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.

Denny Schneeweiß oder Petra Hofstedt