Uni Wien:Programmiersprachen und -konzepte VU (Benkner)

Aus VoWi
Zur Navigation springen Zur Suche springen

Daten[Bearbeiten | Quelltext bearbeiten]

Vortragende Siegfried Benkner, Martin Vasko
ECTS 6,00 / 4,00
Aufgezeichnet Nein
Sprache English
Links ufind:051030 , Homepage
Zuordnungen
Bachelor Lehramt Informatik Wahlmodul INF 12 Wahlpflichtbereich
Master Lehramt Informatik Wahlmodul MA INF 01 Wahlpflichtbereich Masterstudium UF Informatik
Bachelor Wirtschaftsinformatik Wahlmodul Wirtschaftsinformatik Wahlfach
Master Computational Science
Bachelor Informatik Pflichtmodul Informatik


Inhalt[Bearbeiten | Quelltext bearbeiten]

Es werden verschieden Konzepte durchgemacht, wobei ein Muster nicht erkennbar war. Gefühlt hat man einfach Konzepte ausgewählt, die man vielleicht kennen sollte, aber sonst wohl nirgends reingepasst haben.

Man beginnt mit Java, quasi als Fortsetzung von Programmierung 2, und geht die Besonderheiten nochmal durch. Dazu kommen noch ein paar neue Informationen, vor allem Serialization und den DAO Pattern, inklusive Dependency Injection. Danach folgen u.a. Generics und Type Erasure. Abschließend zum Java Teil folgt dann Einheiten zu Concurrent Programming, was die Themen Multithreading, Java Memory Model, Synchronization, Monitors und Locks beinhaltet. Darauf folgen Functional Interfaces, Lambda Expressions und Streams.

Danach gibt es eine Einführung in die Programmiersprache Rust, für zwei Einheiten (das erste Mal, davor wurde Scala unterrichtet).

Es folgt eine Einheit über Compiler und ANTLR. Es geht um das Erstellen von Grammatiken (siehe THI), und entsprechende Java-Programme, die diese "parsen" können.

Danach wurde AOP (Aspect-Oriented Programming behandelt. Der Abschluss ist dann eine Einheit über Prolog.

Ablauf[Bearbeiten | Quelltext bearbeiten]

WS23: Es gibt keine Anwesenheitspflicht. Man konnte in der ersten Einheit sich auf die Anwesenheitsliste unterschreiben oder auf Moodle anklicken, dass man den Kurs machen will. Ansonsten gibt es nur die zwei Testtermine, wo man anwesend sein muss.

Benötigte/Empfehlenswerte Vorkenntnisse[Bearbeiten | Quelltext bearbeiten]

Java zu beherrschen ist sicher sehr hilfreich, aber nicht zwingend nötig. Die nötigen Fähigkeiten kann man sich vermutlich auch während des Semesters aneignen, was aber den Aufwand wohl ein gutes Stück erhöht.

Man sollte auf jeden Fall schon grundlegend programmieren können, aber dazu sollte wohl PR1 ausreichen.

Vortrag[Bearbeiten | Quelltext bearbeiten]

Von den paar Malen die ich dort war wirkt er recht nutzlos. Die Folien werden praktisch vorgelesen, man bekommt keine Zusatzinformationen, nur halt eine Erklärung. Man kommt sehr gut durch, ohne die Vorlesung zu besuchen.

Übungen[Bearbeiten | Quelltext bearbeiten]

Eine Übung an sich gibt es nicht, aber man muss während des Semesters vier Assignments ausarbeiten. Drei davon sind Minimum, vier sind Bedingung um einen Einser oder Zweier zu bekommen.

Die Assignments waren:

1) Article Management - Java Grundlagen, erstellen von Klassen, Vererbung, Exception Handling. Dazu die neuen Konzepte Serialization und DAO Pattern. Zu diesen beiden Punkten findet man aber den relevanten Code in den Folien, er muss nur leicht abgeändert werden. Nicht schwer, nur viele Kleinigkeiten zu bedenken. Geschätzter Aufwand: 3 Tage

2) Traffic Controller - Multithreading, Synchronization, Monitors, Locks. Nicht viel, nur verwirrend. Geschätzer Aufwand: 1 Tag

3) Mandelbrot - Rust Grundlagen, ähnlicher Aufwand wie für Article Management, nur in einer neuen Programmiersprache. Nicht schwer, man muss halt die neuen Konzepte verstehen. Geschätzter Aufwand: 3 Tage

4) Interpreter - Erstellung einer regulären Grammatik, und Abarbeitung dieser mit ein paar vorgegebenen Mini-Programmen, mittels ANTLR. Ein Grundprogramm ist vorgegeben, man muss es nur erweitern. Am Anfang sehr verwirrend, danach recht gut machbar. Geschätzter Aufwand: 1 Tag (mit starker Variation, manche brauchen auch nur zwei Stunden, manche ein paar Tage)

Für alles wird MOPED verwendet, man braucht also weder etwas für Rust noch für ANTLR zu installieren. Im Endeffekt sind die Assignments wie leichte PR2 Projekte.

Prüfung, Benotung[Bearbeiten | Quelltext bearbeiten]

Es gibt zwei Prüfungen zu je 50 Punkten. Man muss damit irgendwie >= 50 Punkte erreichen, wie ist egal. Man kann bei der ersten Prüfung 10, und bei der zweiten Prüfung 45 Punkte haben, und ist positiv.

Beide Prüfungen bestehen aus einem Theorie- und einem Programmierteil. Beides passiert am PC, und man kann die Reihenfolge selbst wählen. Theorie besteht aus Multiple Choice Fragen verschiedener Art, oft (aber nicht immer) gibt es Code-Beispiele, und man soll wählen was rauskommt.

Der Programmierteil wird in MOPED gemacht. Dort hat man ein paar kleinere Aufgaben (3 und 5 in meinem Fall), und muss diese lösen. Angeblich gibt es auch Teilpunkte, falls man halt kein Match hat. Beim ersten Test waren die Assignments zu erweitern (ohne diese kann man also gewisse Aufgaben nicht machen), bzw. gab es ein kleinere Aufgabe zu Lambda Expressions bzw. Streams. Beim zweiten Test kamen kleinere Einzelaufgaben, wo man noch ein bisschen was implementieren musste. Kann einfach nur eine Zeile sein, kann aber auch ein neuer Teil einer Grammatik sein.

Vor der Prüfung gibt der Professor gute Tipps für den Inhalt der Prüfung, damit man weiß worauf man sich vorbereiten muss.

Es gibt keine Nachtermine! (Nur für welche mit einer ärztlichen Bestätigung)

Dauer der Zeugnisausstellung[Bearbeiten | Quelltext bearbeiten]

WS23: Zweiter/Letzter Test war am 31.1. und die Punkte wurden in Moodle am 10.2. und die Note in usapce am 14.02. eingetragen.

Zeitaufwand[Bearbeiten | Quelltext bearbeiten]

Gering. 10 - 20 Stunden für die Assignments, ähnlich viel für die Prüfungsvorbereitung. Sehr einfach, im Vergleich zu PR2.

Unterlagen[Bearbeiten | Quelltext bearbeiten]

Foliensätze von mäßiger Qualität. Gerade neue Konzepte, wie Aspect-Oriented Programming, werden darin nicht besonders gut erklärt.

Auf MOPED hat man auch Zugriff auf Beispiele, wo man etwas mit Code rumspielen kann. Sehr praktisch, und war auch verfügbar für die Prüfungen. Gerade Rust kann man damit recht gut lernen.

Tipps[Bearbeiten | Quelltext bearbeiten]

Die Assignments früh machen, und diese aber wirklich verstehen. Damit hat man eine sehr gute Grundlage für die Prüfungen, und muss dafür nicht mehr viel machen. Altfragen anschauen, weil die Tests sehr ähnlich, wenn nicht gleich sind!

Verbesserungsvorschläge / Kritik[Bearbeiten | Quelltext bearbeiten]

noch offen

Materialien

Diese Seite hat noch keine Anhänge, du kannst aber neue hinzufügen.