Schlagwort-Archiv: Programmierung

[WS14/15] Klausur Datenstrukturen & Algorithmen

Die Klausur Datenstrukturen und Algorithmen stand auf dem Programm. Neben umfangreichen Themen im Fach von Abstrakten Klassen, über Exceptions, Generics, Suchbäumen bis hin zu Sortierverfahren, sicherlich eines der anspruchsvolleren Fächer des Studiums.

Zunächst einmal macht es Sinn sich zunächst mit dem Stoff aus EidP gründlich auseinanderzusetzen, da die Inhalte nahtlos aufeinander aufbauen und die Themen sehr kurz und knackig behandelt werden.

Seitdem Wintersemester 13/14 wurde der Praktomat als Online Testtool für EidP zur Verfügung gestellt. Dieses Tool gibt es auch für die Übungsaufgaben aus AlgoDat (Algorithmen und Datenstrukturen).

Die einzelnen Vorlesungen werden zu Kapiteln zusammengefasst. Pro Kapitel gibt es ein Aufgabenblatt, welches die Themen der Vorlesung abdeckt.

Für eine gründliche Klausurvorbereitung hilft nur Üben, üben, üben. Die einzelnen Übungsaufgaben nach Möglichkeit alleine Lösen, Fragestellung systematisch angehen und in Teilaufgaben zerlegen, um die Lösung umzusetzen.

Für die Klausur ist ein 2-seitig beschriebenes DIN-A4 Blatt zugelassen. Allerdings sollte man sich von dem Blatt nicht zu viel Unterstützung erwarten, für die formale Notation vom Quellcode, den Zeitaufwand der einzelnen Sortierverfahren, Baum-Rotationen usw. ist es schon hilfreich. Praktische Klausuraufgaben mit Coding können stark variieren und da hilft das Blatt nur begrenzt weiter.

Hier eine Themenübersicht aus der Klausur AlgoDat:

  1. Abstrakte Klassen (Code) 20 Punkte
  2. Exceptions (Code) 15 Punkte
  3. Doppelt verkettete Liste (Code) 10 Punkte
  4. Quick Sort (Theorie) 16 Punkte
  5. Suchbaum (Code) 15 Punkte
  6. AVL-Bäume (Theorie) 14 Punkte
  7. Heap Sort (Theorie) 16 Punkte
  8. Hashing (Theorie) 12 Punkte

Zu einigen Aufgaben habe ich in GitHub mögliche Code-Beispiele. Die Aufgaben sind nicht final getestet und sollen lediglich als Beispiel dienen.

Als Buchempfehlung ist sicherlich „Java ist eine Insel“ vom Rheinwerk Verlag erwähnenswert, welches Online kostenlos und ständig aktualisiert, bereitsteht.

Um sich weitergehend mit dem Thema Programmierung auseinanderzusetzen kann ich die Google Code Jam empfehlen, ein Programmierwettbewerb von Google in dem man sich mit Gleichgesinnten messen kann.

Für einen Überblick der AlgoDat Klausur aus dem Sommersemester 2014 hier entlang.

[GitHub] Student Developer Pack

Bei GitHub gibt es schon länger eine kostenlose Micro-Version für Studenten. Sicherlich eine gute Möglichkeit gerade die Aufgaben der Programmierfächer, wie EidP und AlgoDat des 1. und 2. Semester, gemeinsam mit anderen zu bearbeiten. Ihr habt damit die Möglichkeit den Code zentral abzulegen und Änderungen durch dritte nach zu vollziehen.

Um an die Micro-Version zu gelangen, müsst ihr euch lediglich unter education.github.com registrieren und im Anschluß eine Semesterbestätigung versenden. Etwa 1-2 Wochen später erhaltet ihr eine Bestätigungsmail und könnt nun euren GitHub Share für Eclipse und andere Projekte einbinden.

Gestern erreichte mich die Mail, dass es nun einen Developer Pack bei GitHub für Studenten gibt. Das Pack enthält einige, wirklich Interessante Erweiterungen und Freeware-Versionen für euch. Die Highlights habe ich hier zusammengefasst:

  1. Bitnami : Jahreslizenz für downloadfähige Softwareumgebungen für App-Entwicklung
  2. CrowdFlower – Freier Zugang zur Crowdsource-Plattform mit Guthaben
  3. DNSimple – Domainmanagement Plattform, 2 Jahreslizenz Bronze-Edition
  4. Namecheap – Domainmanagement mit freier .me Domain und freiem SSL-Zertifikat
  5. Orchestrate – Datenbank-Service API per REST ansprechbar, Freier Entwickler-Account
  6. Unreal Engine – Komplettes Entwicklungsstudio um Games mit der Unreal Engine zu erstellen, sehr Leistungsfähig und umfangreich, Frei nutzbar
    1. Folgendes Video zeigt die Möglichkeiten der Unreal Engine

Gerade für die, die nun frisch ins Semester starten, als auch für alle anderen Programmierer, sicherlich Interesannt.

Allgemeine Zusammenfassung EidP

Das Semester ist vorrüber, zeit für ein Fazit zu Einführung in die Programmierung des 1. Semesters. Sicherlich eine der Vorlesungen, die einen sehr hohen Zeitaufwand erfordert und bei der aktive Teilnahme unumgänglich ist, um den Stoff zu zu verstehen und die Klausurvorleistung zu erreichen.

Durch den doppelten Studienjahrgang ist auch bei unserer Hochschule ein deutlicher Anstieg an Studenten festzustellen. Die Reaktion der Hochschule war eine Anpassung des Curriculums.  In Fächern mit einer, vergleichsweisen, hohen Durchfallquote wurden, durch die Professoren, einige Änderungen bzgl. der Anforderungen eingeführt. Bisher waren die Übungen zu EidP freiwillig, was zur Folge hatte, dass zur Mitte des Semesters die Übung und Vorlesung von weniger, als der Hälfte, der angemeldeteten Kommiltionnen besucht wurde. Mit dem neuen Semester wurde eine zweiteilige Klausurvorleistung eingeführt. In beiden Teilen müssen min. 50% der möglichen Punkte erreicht werden, um die Klausurzulassung zu erhalten.

In den Präsenzübungen gibt es insgesamt 6 Testaufgaben. Die Aufgaben verteilen sich über das Semester und setzen sich aus einer oder mehreren Übungsaufgaben des aktuellen Übungsblatts zusammen. Regelmäßige Bearbeitung der Übungsblätter ist zwingend notwendig, um in den Kurztests (10-15 Minuten) eine Lösung niederzuschreiben.

Neben den Präsenzübungen wurde mit diesem Semester der Praktomat eingeführt. Dieses System nimmt Programmieraufgaben entgegen. Auf den Übungsblättern sind diese Aufgabentypen entsprechend gekennzeichnet. Die Aufgaben werden zu einem festgelegten Zeitpunkt im Praktomaten „hochgeladen“. Nach Ablauf des Termins werden die abgegebenen Aufgaben automatisch auf Korrektheit und Funktionalität geprüft. Bei korrektem Ergebnis wird ein Punkt gutgeschrieben.

Wie bereits erwähnt setzt dies eine aktive und regelmäßige Auseinandersetzung mit dem Stoff vorraus. Gerade der Zeitaufwand sollte dabei nicht unterschätzt werden. Die Vorlesung setzt sich aus vielfältigen Theoretischen und Praktischen Inhalten zusammen. In der Vorlesung werden die einzelnen Themenbereiche nur sehr knapp vorgestellt. Diese Themen werden danach als bekannt und anwendbar vorrausgesetzt. Da alle Themen aufeinander aufbauen, ist eine regelmäßige Auseinandersetzung mit dem Stoff pflicht, um die nachfolgenden Themen zu verstehen und die Inhalte in der Klausur anwenden zu können.

Nachfolgend noch ein paar hilfreiche Links um sich optimal mit dem Stoff auseinander zu setzen.

Java Programmierrichtlinien Prof. Dr. Pape Hochschule Karlsruhe

Java Tutorial.org

Java Operatoren

Galileo Openbook Java ist eine Insel (hilfreich fürs 1. und 2. Semester)

Aufgabensammlung Frau Weil H-BRS

EidP Klausur WS13/14

Am vergangenen Freitag wurde die Klausur „Einführung in die Programmierung“ aus dem 1. Semester angeboten. Bisher bestand die Klausur aus einem 50%/50%-Mix aus Theorie und Praxis. Dies war diesmal allerdings nicht der Fall. Und die Klausur bestand zu 80% aus praktischen Aufgaben und einigen Theoriefragen, die in Richtung Java Objektorientierung gingen.

Aufgaben vom Typ Zahlenumrechnung (Binär, Dezimal), Fließkommazahlen, Hoaresches Kalkül oder Komplexität waren diesmal kein Bestandteil der Klausur.

Im folgenden eine kleine Zusammenfassung der Aufgabentypen:

  • Logikausdrücke (z.B. ((i++<6)&(i–<6)) Auswerten des Ergebnis und des Inhalts der Variablen) 12 Punkte
  • Allgemeine Multiple-Choice Fragen zu Java (Vererbung, Programmauswertung, etc.) Bei falschen Antworten 1 Punkt Abzug, negative Punktzahl war nicht möglich
  • EBNF-Aufgabe
  • OOP-Aufgabe bei der die Programmausgabe zu ermitteln ist, in Anlehnung an Übungsblatt 11 Aufgabe
  • Korrigieren eines fehlerhaften Programms (korrekte Notation neben den fehlerhaften Zeilen schreiben), Fehler Beispielsweise: Punkt durch Komma ersetzt, ^ als Hochzeichen, etc.
  • Programm schreiben, welches aus übergebene Zahlen der Kommandozeile ermittelt, ob diese Aufsteigend, Absteigend oder unsortiert vorliegen
  • Eine Methode die ein Array, nach bestimmten Kriterien sortiert und als Rückgabewert ein Array liefert, welches die Kriterien erfüllt
  • Automatenzähler, der eine 3-stellige Ganzzahl im Interval von 000-999 hochzählt, dabei darf keine Zahl doppelt vorkommen (122)
  • Umfangreiche OOP-Aufgabe: Erstellen eines Kalender, mit verschiedenen Klassen und Funktionen. Die Aufgabe war mit 27Punkten fast 1/4 der Klausur wert.

Zusammenfassend lässt sich feststellen, dass die Klausur durchaus realisierbar ist, wenn während des Semesters aktiv an den Vorlesungen und Übungen teilgenommen wird. Dazu gehört auch die regelmäßige Bearbeitung der Übungsblätter, welches durch die neu eingeführte Anforderung an eine Klausurzulassung, zwingend notwendig ist. Wie ich auch selbst feststellen musste 😉