TU Wien:Effiziente Programme VU (Ertl)

Aus VoWi
Wechseln zu: Navigation, Suche

Daten[Bearbeiten]

Inhalt[Bearbeiten]

Ist Effizienz nötig, Arten von Effizienz, Spezifikation und Effizienz, Design fuer Effizienz, die Rolle effizienter Algorithmen (konstante Faktoren), Hardwarecharakteristik (Cache, Blockgroessen, Register, Bandbreite), Mikrooptimierung, Werkzeuge.

Ablauf[Bearbeiten]

Es gibt einige Vorlesungsheiten ohne Anwesenheitspflicht, in denen (sehr grundlegend) einige Richtlinien für effiziente Programme erläutert werden. Diese sind ungefähr nach der Hälfte des Semsters abgeschlossen. Anschließend wird in Kleingruppen (max. 3 Personen) ein Praxisbeispiel durchgeführt, in dem man entweder ein Standardbeispiel (im WS08 einen Löser für Mastermind) oder ein eigenes Programm optimieren und anschließend präsentieren muss.

Benötigte/Empfehlenswerte Vorkenntnisse[Bearbeiten]

C/C++ programmieren (außer man wählt ein eigenes Beispiel für die Übung).

Zumindest im WS2016 ließen sich die benötigten C-Kenntnisse ohne Probleme "on-demand" erlernen.

Vortrag[Bearbeiten]

Viele der vorgestellten Richtlinien und Tips sind imho selbstverständlich, wenn man nicht einfach blauäugig drauflos programmiert; wer also schon etwas erfahrener ist im Programmieren wird sich teilweise langweilen, da der Vortragsstil nicht unbedingt der spannendste ist. Es kommen aber immer wieder auch recht interessante Abschnitte, und wer im Vorlesungsteil halbwegs aufpasst weiß genau, was er im Übungsteil tun soll.

Übungen[Bearbeiten]

Der Übungsteil besteht aus der Optimierung eines Programms. Dazu werden Kleingruppen von max. 3 Personen gebildet. Man kann hier entweder ein Standardprogramm (im WS 08 ein Löser für Mastermind Mastermind) verwenden oder ein eigenes. Wählt man ein eigenes Programm ist man auch frei in der Wahl der Programmiersprache. Es muss nicht C/C++ sein. Die Optimierungen werden anschließend präsentiert.

Es sei hier erwähnt, dass - obwohl die Vorlesungsfolien sich oft auf Low-Level-Optimierungen fokussieren - die Übungsaufgabe auch seitens des Algorithmus verbessert werden kann. In meinem Fall wurden 4 von 5 Optimierungen durch Änderung der Datenstruktur und Abläufe erzielt.

Prüfung, Benotung[Bearbeiten]

Keine schriftliche Prüfung, Benotung erfolgt auf Basis des Übungsteils (gemachte Optimierungen + Präsentation). Die Benotung ist recht fair; meinem Eindruck nach eher etwas zu mild (=> es lohnt sich nicht unbedingt, sich über alle Maßen anzustrengen)

Dauer der Zeugnisausstellung[Bearbeiten]

Sehr schnell (<1 Woche nach den letzten Präsentationen)

Zeitaufwand[Bearbeiten]

Wenn man fit im C/C++ Programmieren ist eher wenig. Eine Handvoll VO-Einheiten á 1,5 Stunden. Für die Übung 1-3 Tage, je nach Ehrgeiz.

WS2016: Der Zeitaufwand hängt vom persönlichen Ehrgeiz ab. Es lässt sich wohl in 1-2 Tagen eine mittelmäßige Optimierung und Präsentation vorbereiten. Wer bessere Ergebnisse erzielen will muss sich aber doch einige Tage mehr Zeit lassen. Das tolle an der Aufgabe ist ja, dass es der Gruppe freisteht, wie viel Aufwand investiert werden soll.

Unterlagen[Bearbeiten]

  • Empfohlenes Buch
  • Etwas gewöhnungsbedürftige, aber ausreichende Notizen (über LVA-Homepage erreichbar)
  • Aufgabe aus WS2016 sowie Links zu Beispielen aus früheren Jahren.

Tipps[Bearbeiten]

  • Wie immer bei Kleingruppen ist etwas Vorsicht bei der Auswahl der Leute geboten - nicht alle machen die LVA wirklich zu Ende oder bringen kaum Coding-Wissen mit.
  • Sich die Notizen einmal durchzublättern, bevor man an die Optimierungen geht lohnt sich. Mit den Tips dort kommt man schon recht weit.

Verbesserungsvorschläge / Kritik[Bearbeiten]

Das Beispiel im WS10 konnte kaum verstanden werden, es war ein Ausschnitt aus einem Compiler in C. Dadurch kann man fast nur Optimierungen auf syntaktischer Ebene machen.