Was genau soll man bei Alogrithmen & Datenstrukturen lernen, bzw. was genau kommt in der Prüfung vor?

4 Antworten

Naja. In der Regel bekommt man da doch wohl Übungsaufgaben, die man in den entsprechenden Übungsstunden bespricht. Daran kannst du dich doch etwas orientieren.

Evtl. haben auch andere Studierende, die das Modul bereits absolviert haben, noch Kopien von alten Klausuren. Die Fachschaft bzw. Fachschaftsinitiative kann dir da bestimmt weiterhelfen.

Für die Lernziele des Moduls würde evtl. auch ein Blick ins Modulhandbuch helfen. Hier beispielsweise bei der FAU Erlangen-Nürnberg. [Ich weiß ja nicht, wo du studierst. Bedenke, dass sich die Studieninhalte von Uni zu Uni unterscheiden können.]

https://www.informatik.studium.fau.de/studierende/rechtliches/

https://www.apps.tf.fau.de/remoter//data/DepINF/INF/BSc/Aktuell/Informatik,%20Abschluss%20B.Sc.,%20PO-Version%2020092,%20Wintersemester%202022_23,%20deutsch,%20Stand%20vom%2014.10.2022.pdf

======Beginn des Auszugs aus dem Modulhandbuch (S. 284ff)======

Lernziele und Kompetenzen

A - Fachkompetenz:

Die Studierenden...

1.) Grundlagen der Programmierung in Java

  • interpretieren Syntaxdiagramme für grundlegende Programmstrukturen und übertragen diese in entsprechenden Java-Code
  • deklarieren und verwenden Variablen mit adäquatem Java-Datentyp (primitive Typen, Reihungen, Zeichenketten)
  • überprüfen die Zulässigkeit der Variablendeklaration und -Wertzuweisung nach Java-Typ-Regeln
  • bestimmen den Datentyp und den Wert eines Java-Ausdrucks mit primitivem Datentyp und zugehörigen Operatoren
  • überführen einfache mathematische Ausdrücke in Java-Code
  • werten zusammengesetzte Bedingungen nach den Regeln der strikten bzw. faulen Auswertung für Java aus
  • konzipieren zu einer gegebenen Aufgabenstellung einen Algorithmus
  • implementieren einfache Algorithmen in Java unter Verwendung verschiedener Kontrollstrukturen
  • bestimmen die Gültigkeitsbereiche der Variablen anhand der Blockstruktur eines Java-Programms
  • strukturieren Java-Code in Methoden und entwickeln wiederverwendbare Funktionen

2.) Rekursion

  • beurteilen den Typ der Rekursion für gegebene Java-Methoden
  • entwerfen rekursive Algorithmen zu einer gegebenen Problemstellung unter Anwendung des Induktionsprinzips, des Teile-und-Herrsche-Prinzips sowie des Rücksetzverfahrens und implementieren diese jeweils in Java
  • entwickeln effizientere Lösungen, indem sie rekursive Methoden in endrekursive bzw. iterative Methoden umwandeln, implementieren diese jeweils in Java-Code und bewerten deren Laufzeit- und Speicherverbrauch
  • bewerten und verbessern rekursive Lösungen unter Verwendung von Dynamischer Programmierung und implementieren diese in Java-Code

3.) Aufwandsanalyse

  • analysieren den Laufzeitaufwand und den Speicherbedarf verschiedener Implementierungen
  • klassifizieren den asymptotischen Laufzeitaufwand anhand der Komplexitätsklassen des O-Kalküls
  • unterscheiden verschiedene Sortierverfahren (Blasensortierung, Sortieren durch Auswählen/Einfügen, Haldensortierung, Sortieren durch Verschmelzen/Zerlegen/Fachverteilen) hinsichtlich ihres Laufzeit- und Speicherplatzbedarfs

4.) Objekt-Orientierte Programmierung in Java

  • implementieren Java-Klassen gemäß textueller oder graphischer (UML) Spezifikation
  • wenden Verfahren zur systematischen Ableitung von Klassen und Attributen (Hauptwortextraktion), ihren statischen Beziehungen (Vererbung, Polymorphie, Assoziationen) und ihrem dynamischen Zusammenspiel (CRC, Kollaboration) aus einer textuellen Problemstellung an und entwickeln so kleine objekt-orientierte Java-Programme
  • instantiieren Klassen und verwenden Objektvariablen sachgerecht
  • unterscheiden statische und dynamische Bindung gemäß Polymorphie-Konzept von Java und wenden die Erkenntnisse sachgerecht bei der Entwicklung eigener Applikationen an

5.) Robustes Programmieren

  • wenden Checklisten an, um typische Programmierfehler im Vorfeld zu vermeiden oder nach der Programmierung zu identifizieren
  • benutzen verschieden Möglichkeiten zur Absicherung gegen Fehlersituationen und zur Fehlerrückmeldung (Rückgabewert, Ausnahmebehandlung)
  • wenden Junit zum Testen von Java-Programmen an
  • setzen Verfahren und Werkzeuge zur systematischen Lokalisierung und Behebung von Programmfehlern an (Debugging) und verbessern ihre Lösungen auf diese Weise iterativ

6.) Elementare Datentypen

  • übertragen eine Spezifikation in Form eines Abstrakten Datentyps (ADT) in ein gleichwertiges Java-Modul
  • erstellen eine formale Spezifikation eines Datentyps in Form eines Abstrakten Datentyps (ADT) aus einer gegebenen textuellen Beschreibung
  • verstehen die grundlegende Behälterdatentypen (Liste, Stapel, Schlange, Streutabelle) und deren Eigenschaften (insbesondere Laufzeit- und Speicherplatzbedarf ihrer Operationen)
  • verwenden generische Behälterdatentypen sachgerecht in eigenen Programmen
  • kennen die Verfügbarkeit generischer Behälterdatentypen in der Java-API und erschließen sich bei Bedarf selbst neue Datentypen sowie deren Funktionen aus der zugehörigen API-Spezifikation für die Verwendung in eigenen Programmen

7.) Bäume und Graphen

  • bewerten verschiedene Baum- und Graphdarstellungen hinsichtlich Zeitaufwand und Speicherbedarf
  • unterscheiden und klassifizieren die grundlegenden Baum-Arten (Suchbaum, AVL-Baum, Halde)
  • wenden die Grundoperationen (Einfügen, Suchen, Löschen, ggf. Restrukturieren) anhand von Beispieldaten auf gegebene Bäume artgerecht an
  • implementieren und verwenden verschiedene Baumstrukturen sachgerecht in eigenen Java-Programmen
  • führen verschiedene Durchlaufmöglichkeiten (Tiefensuche (DFS), Breitensuche (BFS)) für Graphen und Bäume auf Beispieldaten aus und setzen diese zielführend in eigenen Java-Programmen ein
  • wenden grundlegende Graphalgorithmen (Dijkstra, Floyd, Prim, Kruskal) auf Beispieldaten an und implementieren diese Verfahren in Java-Code

B - Selbst- und Sozialkompetenz:

Die Studierenden...

  • organisieren sich selbständig zu Gruppen und koordinieren in gegenseitiger Absprache den organisatorischen und technischen Ablauf der Gruppenarbeiten
  • kommunizieren und erarbeiten gemeinsam Lösungen für theoretische Fragestellungen und praktische Programmieraufgaben in Rahmen von Gruppenaufgaben
  • planen und wenden zielgerichtet Maßnahmen zu gegenseitigen Qualitätssicherung der eingereichten Lösungen an (prüfen wechselseitig die Gruppenabgaben)
  • verantworten gemeinsam das Ergebnis ihrer Gruppenarbeit, deren Bewertung für beide Gruppenpartner gleichermaßen gilt

[...]

Literaturhinweise

Lehrbuch: Saake, Sattler: Algorithmen und Datenstrukturen - Eine Einführung mit JAVA

======Ende des Auszugs======

Was genau soll man bei Alogrithmen & Datenstrukturen lernen, bzw. was genau kommt in der Prüfung vor?

Einfach mal das Skript (und die Literaturangaben?) lesen?

Woher ich das weiß:Studium / Ausbildung – Informatikstudent
MegaMann1234 
Fragesteller
 06.07.2023, 19:54

Öhm ja das wäre ne gute Idee

3

Das, was in der Übung und der Vorlesung dran kam ist am wichtigsten. Du kannst auch Altklausuren anschauen, den Dozenten fragen, die Fachschaft fragen, etc.

Das Ziel ist, einen Baukasten von Verfahrensweisen zu haben und den einsetzen zu können. Wie funktionieren Algorithmen für wichtige, häufig wiederkehrende Probleme? Welche Eigenschaften haben sie?