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 Link zu einer externen Seite Modulbeschreibung


 

 

Aktuelles

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

  • Die Ergebnisse der Endklausur und die Gesamtnoten sind nun im Moodle-System einsehbar.
  • Der Termin zur Klausureinsicht ist Donnerstag, der 15.10.2015 13:30 - 14:00 Uhr.
  • Die Endklausur wird am Mittwoch, den 16.09.2015 von 8:30 - 10:30 Uhr in HS B / ZHG geschrieben. Bitte erscheinen Sie rechtzeitig (8:15 Uhr) und denken Sie an ihren Studierendenausweis.
  • Wiederholung Zwischenklausuren, 14.09.2015, 9:00-11:00 Uhr: Bitte melden Sie Sich rechtzeitig im Raum 2.06 / VG1C.
  • Die erste Vorlesung findet statt am Freitag, den 10.04.2015 statt.
  • Die Link zu einer externen Seite MOODLE-Anmeldung zur Lehrveranstaltung wird nach der ersten Vorlesung am 10.04.2015 freigeschaltet. Bei Bedarf werden weitere Teilnahmeplätze freigegeben.
  • Die ersten Übungen und Laborübungen finden in der zweiten Vorlesungswoche 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. 

Im wöchentlichem Rhythmus werden auf dieser Webseite Übungsblätter 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. Mit blindem Abschreiben wird daher niemanden 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 einiger der Programmieraufgaben per E-Mail an den zuständigen Tutor abgegeben. Bitte beachten Sie die folgenden Regelungen:

  • Geben Sie Ihre Lösungen (schriftlich und ggf. 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

Übungsblatt 01


Übungsblatt 02

 


Übungsblatt 03

 


Übungsblatt 04

 


Übungsblatt 05

 


Übungsblatt 06

 


Übungsblatt 07

 


Übungsblatt 08

 


Übungsblatt 09

 


Übungsblatt 10

 


Übungsblatt 11

 


Übungsblatt 12

 


Übungsblatt 13

 


Übungsblatt 14

 


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 empfehlen die Nutzung der Haskell Platform, welche den Glasgow Haskell Compiler (GHC) einschließlich der interaktiven Umgebung GHCi enthält.

Laborübung

Die Laborübungen finden imLink zu einer externen Seite  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, 18.07.2015, 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/ZHGVeronika
mittwochs15:30–17:00HG0.18Denny
donnerstags15:30–17:00HG0.17Eric

Einschreibung in die Übungsgruppen ist über das Link zu einer externen Seite Moodle-System möglich.

Laborübungen
WochentagZeitRaumTutoren
montags15:30–17:00 VG1C/0.03Eric, Denny
mittwochs09:15-10:45G1C/0.03Veronika, Denny

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

  • Dienstag, den 19.05.2015, 13:45-15:15, LG1c, Hörsaal 3
  • Bitte seien Sie 13:30 Uhr vor Ort und bringen Sie ihren Studierendenausweis mit.

und

  • Freitag, den 26.06.2015, 13:45-15:15, Hörsaal 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

  • 16. September 2015 von 8:30 - 10:30 Uhr in HS B / ZHG

statt.

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

  • Der Nachschreibetermin für die AuP-Zwischenklausuren findet am 14. September 2015 von 9:00 - 11:00 Uhr statt. Bitte melden Sie Sich rechtzeitig im Raum 2.06 / VG1C.

 

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 Link zu einer externen Seite 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 Link zu einer externen Seite 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 2015 (SoSe 2015) an.
  • Treten Sie einer Übungsgruppe Ihrer Wahl bei.

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.

Wiederholungsmöglichkeiten

Die Teilnahme an der Lehrveranstaltung und der zugehörigen Prüfung setzt eine fristgemäße Prüfungsanmeldung sowie eine Anmeldung im Lehrveranstaltungsinformationssystem Link zu einer externen Seite 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 2015 (SoSe 2015) an.
  • Treten Sie einer Übungsgruppe Ihrer Wahl bei.

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

  • Haskell-Tutorials
  • Haskell-API Suchmaschine Hoogle

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