Algorithmieren und Programmieren - Programmierpraktikum - WS 2008/2009

Verantwortlich:

    Mario Schölzel, Dr. rer. nat., LG 1C, Raum 301, Tel.: 2877

Anliegen:

Das Praktikum dient dem Erlernen wichtiger Programmierfertigkeiten, die das "Handwerkszeug" eines Studenten in einem informatiknahen Studiengang darstellen. Diese Fertigkeiten können nur durch üben entwickelt werden. Sie müssen deshalb eine Reihe von Praktikumsaufgaben selbständig bearbeiten. Dabei sollen Sie die folgenden Fertigkeiten erlernen und vertiefen:

  • Sicherer Umgang mit den durch Programmiersprachen bereitgestellten Sprachmitteln am Beispiel zweier konkreter Sprachen: Haskell und C/C++.
  • Implementierung von vorgegebenen oder selbst zu entwickelnden Algorithmen durch diese bereitgestellten Mittel in diesen beiden Sprachen.
  • Erlernen "guter Programmierkultur". Das heißt: schreiben lesbarer und verständlicher Programme, Testen der eigenen Implementierung, Dokumentation/Kommentierung der eigenen Implementierung.
  • Anwendung verschiedener Prinzipien des Algorithmierens, die in der Vorlesung Informatik I vermittelt werden, um vom Problem zum Algorithmus und dann zum Programm zu kommen. Dazu gehören z.B. Teile und Herrsche, Trial And Error (mit Backtracking), Rekursion.

Das bedeutet, dass das Praktikum kein reiner Programmierkurs zum Erlernen der Syntax einer Programmiersprache ist. Syntaktische Grundlagen der Programmiersprachen werden in der Vorlesung Informatik I gelegt. Darüber hinaus wird erwartet, dass Sie durch das Lesen der bereitgestellten Materialien oder weiterer Bücher diese Grundlagen weiter vertiefen, um dann die oben angegebenen Fertigkeiten durch Bearbeitung der Praktikumsaufgaben zu üben und zu festigen. Sie werden bei dem Lernprozess durch die Praktikumsaufgaben unterstützt, die durch ihren Schwierigkeitsgrad eine Orientierung geben, welche Probleme Sie in der Lage sein sollten zu lösen. In den Praktikumsaufgaben werden Sie zu Beginn durch sehr einfache Aufgaben zunächst mit den Mitteln einer Sprache und deren Anwendung vertraut gemacht. Dann müssen Sie einfache vorgegebene Algorithmen implementieren (d.h. die Aufgabe des Algorithmierens wurde Ihnen schon abgenommen). Die Vorgaben und Hinweise zur Lösung eines Problems werden immer geringer, so dass Sie zum Schluss in der Lage sein müssen, aus einer Problemstellung selbständig einen Algorithmus zu entwickeln und diesen dann auch zu implmentieren.

Durchführung

Das Praktikum besteht für Sie aus der Teilnahme an einem wöchentlichen Praktikumsgruppentreffen und der Bearbeitung der Praktikumsaufgaben.

Praktikumsgruppentreffen

Die Einschreibung in eine Praktikumsgruppe erfolgt über  LEHVIS. Damit erfahren Sie auch Ort und Zeit für ihr Praktikumstreffen.

Achtung, Sonderregelung: Die Anmeldung über Lehvis ist die einzige verbindliche Anmeldung zum Modul und damit zur Prüfung. Das betrifft auch den Rücktritt. Eine Anmeldung beim Prüfungsamt ist damit hinfällig und überflüssig und hat für diese Lehrveranstaltung keine Konsequenzen!

Das erste Treffen findet in der zweiten Vorlesungswoche statt. Bei diesen Treffen erhalten Sie vom Tutor Hinweise und Unterstützung zur Bearbeitung der aktuellen Praktikumsaufgaben und Beispiellösungen für bereits abgegebene Praktikumsaufgaben. Außerdem müssen Sie in der Lage sein, Fragen zu Ihren bereits abgegebenen Lösungen zu beantworten. Sollten Sie nicht in der Lage sein Ihre abgegebene Lösung zu erläutern, kann Ihnen der Tutor die Punkte für diese Lösung aberkennen. Das bedeutet für Sie eine implizite Anwesenheitspflicht beim Praktikumstreffen. Sollten Sie nämlich auf Grund unentschuldigten Fehlens keine Fragen beantworten können, werden Ihnen auch die Punkte aberkannt.

Praktikumsaufgaben

In der unten stehenden Tabelle werden jeden Montag Praktikumsaufgaben veröffentlicht. Die Lösung zu diesen Aufgaben ist bis zum darauf folgenden Montag abzugeben. Das umfasst

  • die Abgabe der angefertigten Quelltexte über LEHVIS,
  • die Abgabe einer schriftlichen Dokumentation zu den Programmen mit den ausgedruckten Quelltexten im HG2.21 (bei Frau Pehle) oder im Briefkasten des Lehrstuhls "Programmiersprachen und Compilerbau" (Nr. 25) von 9:00 bis 15:30 Uhr. Der Briefkasten befindet sich im Erdgeschoss des Hauptgebäudes unmittelbar am Eingang gegenüber des Großen Hörsaals. Verspätet abgegebene Lösungen werden in der Regel nicht berücksichtigt.

Die Prüfung zum Programmierpraktium besteht aus dem erfolgreichen Bearbeiten der Praktikumsaufgaben. Die Praktikumsaufgaben sind erfolgreich bearbeitet, wenn 75% der erreichbaren Punkte erreicht wurden. Eine Aufgabe bzw. Teilaufgabe wird mit 0, 1 oder 2 Punkten bewertet. 2 Punkte werden vergeben, wenn die Aufgabe im wesentlichen korrekt bearbeitet wurde. 1 Punkt, wenn größere Mängel vorhanden, aber noch richtige Lösungsansätze erkennbar sind. In den übrigen Fällen werden 0 Punkte vergeben. Die Aufgaben sind in Einzelarbeit zu lösen. Bei offensichtlich kopierten/abgeschriebenen Lösungen wird das gesamte Aufgabenblatt mit 0 Punkten bewertet. Sollten die 75% der Punkte nicht erreicht werden, wird eine Wiederholungsmöglichkeit am Ende des Semsters angeboten.

Wiederholung des Programmierpraktimus

In den 13 Praktikumsblättern waren 158 Punkte (+2 Zusatzpunkte) erreichbar. Das Programmierpraktikum ist ab 118 Punkten (75%) bestanden. An der Wiederholungsprüfung zum Programmierpraktikum dürfen nur Studenten teilnehmen, die für das Programmierpraktikum angemeldet waren und durchgefallen sind (also weniger als 118 Punkte erreicht haben). Es wird am 20. Februar ein Wiederholungsblatt auf dieser Webseite veröffentlicht, das Haskell und C/C++ Aufgaben (insgesamt 40 bis 50 Aufgaben) enthält und in der vorlesungsfreien Zeit bearbeitet werden muss.

Studierende, die in den 13 Praktikumsblättern mindestens 62 Punkte (40% der erreichbaren Gesamtpunktzahl) erreicht haben, können die Wiederholung nutzen, um ihre bisher erreichte Punktzahl auf mindestens 118 aufzufüllen. Gelingt das, dann ist die Wiederholungsprüfung bestanden.

Studierende, die weniger als 62 Punkte in den 13 Praktikumsblättern erreicht haben, müssen 75% der Punkte des Wiederholungsblattes erreichen, um die Wiederholungsprüfung zu bestehen.

Zur Teilnahme an der Wiederholungsprüfung ist eine erneute Prüfungsanmeldung erforderlich. Diese erfolgt im Sekretariat des Lehrstuhls für Programmiersprachen und Compilerbau (HG2.21) durch eine Unterschrift. Die Anmeldung ist nur in der Woche vom 16.2.2009 bis 20.2.2009 möglich!

Haskell-Aufgabenteil

Nr.

Ausgabe

Blatt  

Vorgaben                

1

27.10.

f Praktikumsblatt 1

f Abgaben über LEHVIS für Aufgaben 3, 4 und 6.

f Musterdokumentation

f Vorgaben

2

03.11.

f Praktikumsblatt 2

Bitte geben Sie auf der abzugebenden Dokumentation unbedingt den Namen Ihres Tutors und den Zeitpunkt Ihres Praktikums an.

f Vorgaben

3

10.11.

f Praktikumsblatt 3

f Vorgaben

4

17.11.

f Praktikumsblatt 4

f Vorgaben

5

24.11.

f Praktikumsblatt 5

f Vorgaben

6

28.11.

f Praktikumsblatt 6

f Vorgaben

7

05.12.

f Praktikumsblatt 7

f Vorgaben

C/C++-Aufgabenteil

8

12.12.

f Praktikumsblatt 8

f Vorgaben

9

19.12.

f Praktikumsblatt 9

Ab diesem Praktikumsblatt sollten Sie versuchen sich auch eine gute Programmierkultur anzugewöhnen. Dazu gehört vor allem, dass Sie sich an einige Regeln zur Formatierung des Quelltextes halten, die ich in diesem f Styleguide kurz zusammengefasst habe.

f Vorgaben

10

09.01.

f Praktikumsblatt 10

f Vorgaben

11

16.01

f Praktikumsblatt 11

(Wurde am 19.1.09 noch einmal aktualisiert.)

f Vorgaben

12

23.01.

f Praktikumsblatt 12

(Aufgabe 2 und 4 wurde am 26.1.09 noch einmal aktualisiert)

f Vorgaben

13

31.01.

f Praktikumsblatt 13

Bitte beachten Sie: Praktikumsblatt 13 ist ein reguläres Praktikumsblatt und noch nicht das Wiederholungsblatt. Aktualisierte Hinweise zur Wiederholung finden Sie weiter oben.

f Vorgaben

Wiederholungsblatt

20.02.

f Wiederholungsblatt

Bitte beachten Sie die folgenden Hinweise:

  • Die Abgabe Ihrer Lösungen muss bis zum 22.3.09 erfolgen. Sie können auch schon früher Lösungen abgeben. Ergebnisse werden aber erst nach dem 22.3. bekannt gegeben.
  • Die Abgabe hat in derselben Form wie im Semester zu erfolgen (Quelltexte über LEHVIS, Doku und ausgedruckte Quelltexte im Sekretariat des Lehrstuhls von Prof. Bachmann oder im Briefkasten)
  • Am 6.3.09 biete ich eine erste Konsultation von 10:00 bis 12:00 Uhr im Raum HG0.16 an. Da ich bis dahin im Urlaub bin, können Sie in der Zwischenzeit Fragen an ihren bisherigen Tutor mailen.
  • Wir behalten uns vor, individuelle Termine zwischen dem 30.3. und 9.4. zur Verteidigung Ihrer Abgaben zu vereinbaren. 

f Vorgaben

Form der Abgabe

Wenn in der oben angegebenen Tabelle Vorgaben (Quelltextfragmente) enthalten sind, dann müssen diese verwendet und dürfen nicht verändert werden. In der Regel werden diese Vorgaben den Typ einer Funktion in Haskell oder das Ein-/Ausgabeverhalten eines C/C++-Programms festlegen. Bei der Bearbeitung der Aufgaben sind dann diese Vorgaben zu ergänzen. Die fertigen Programmquelltexte sind über LEHVIS abzugeben. Dafür nach dem Einloggen auf Programmabgabe klicken und das Programmierpraktikum auswählen. In der angezeigten Tabelle das abzugebende Programm auswählen. Es wird ein Formular angezeigt, in dem der Pfad zu den abzugebenden Quelltexten angegeben werden muss. Diese werden auf einen Server geladen, automatisch übersetzt und mit Testfällen überprüft. Nur bei syntaktisch korrekten Programmen (Testfälle dürfen fehlschlagen), werden diese an Ihren Tutor zur Korrektur weitergeleitet.

Zu allen Quelltexten gehört auch eine kurze Dokumentation, die in schriftlicher Form abzugeben ist. Darin ist kurz der verwendete Algorithmus zu beschreiben (sofern dieser nicht schon in der Aufgabenstellung vorgegeben war) und dessen Implementierung.

Bei der Beschreibung des Algorithmus muss das prinzipielle Vorgehen beschrieben werden, wie das gegebene Problem gelöst wird. Falls dies getan wurde, muss auch beschrieben werden, in welche Teilprobleme das Gesamtproblem zerlegt wurde und wie Teillösungen zu einer Lösung des Gesamtproblems zusammengesetzt werden.

Zur Beschreibung der Implementierung gehört eine Auflistung der Funktion(en) und, falls verwendet, der Datenstruktur(en). Dabei ist insbesondere die Beziehung herzustellen, welche Funktion welches Teilproblem löst, wie die Ein- und Ausgaben dieser Funktion zu interpretieren sind und, falls vorhanden, wie die verwendeten Datenstrukturen zu interpretieren sind. Eine Beispieldokumentation wird mit dem ersten Aufgabenblatt veröffentlicht.

Prüfungsanmeldung

Achtung, Sonderregelung: Die Anmeldung über Lehvis ist die einzige verbindliche Anmeldung zum Modul und damit zur Prüfung. Das betrifft auch den Rücktritt. Eine Anmeldung beim Prüfungsamt ist damit hinfällig und überflüssig und hat für diese Lehrveranstaltung keine Konsequenzen!

Die Anmeldung muss in der achten Vorlesungswoche in den Praktikumsgruppen durch eine Unterschrift bestätigt werden und wird dann von uns ans Prüfungsamt weitergeleitet. Innerhalb der ersten sieben Vorlesungswochen kann der Rücktritt von der Prüfung erklärt werden. Dies muss ebenfalls über LEHVIS erfolgen (Einloggen -> Übersicht). Die Unterschrift in der achten Vorlesungswoche entfällt in diesem Fall.

Bitte beachten Sie, dass die Anmeldung zur Prüfung Informatik I nicht als Anmeldung zum Programmierpraktium gilt und umgekehrt!

Materialien

Haskell-Interpreter WinHugs ( Donwnloadseite)

Dokumentationen zu Haskell:  Links im Web

MinGW Paket mit GNU C++ Compiler als Kommandozeilenwerkzeug ( Downloadseite)

Integrierte Entwicklungsumgebung Dev-C++ mit GNU C++ Compiler ( Downloadseite).

Links zu C/C++:

05.03.2009 Fehler in Beispiel auf Wiederholungsblatt

Aufgabe 7[mehr]

Kategorie: Algorithmieren_Programmieren_Praktikum

30.01.2009 Blatt 12

In Aufgabe 1 ist die überflüssige Funktion zifferLinks angegeben.[mehr]

Kategorie: Algorithmieren_Programmieren_Praktikum

23.01.2009 Fehler in Praktikumsblatt 11

Fehlerhafte Spezifikation in Aufgabe 2[mehr]

Kategorie: Algorithmieren_Programmieren_Praktikum

15.12.2008 Programmabgabe Blatt 7

Abgabe wieder möglich.[mehr]

Kategorie: Algorithmieren_Programmieren_Praktikum

13.12.2008 Programmabgabe Blatt 7

Verlängerung der Programmabgabe über LEHVIS[mehr]

Kategorie: Algorithmieren_Programmieren_Praktikum

03.12.2008 Hinweis zu Aufgabe 5 auf Blatt 6

Hinweis betrifft Teilaufgaben (d) und (e)[mehr]

Kategorie: Algorithmieren_Programmieren_Praktikum

27.11.2008 Aufgabe 1 von Blatt 5

Verschiebung des Abgabetermins für Aufgabe 1 von Praktikumsblatt 5[mehr]

Kategorie: Algorithmieren_Programmieren_Praktikum

Treffer 1 bis 7 von 16
<< Erste < Vorherige 1-7 8-14 15-16 Nächste > Letzte >>