TU Wien:Einführung in die Programmierung 2 VU (Puntigam)
Daten[Bearbeiten | Quelltext bearbeiten]
Vortragende | Martin Ertl• Ulrich Neumerkel• Michael Pollak• Franz Puntigam• Michael Reiter• Dietmar Schreiner• Sebastian Zambanini |
---|---|
ECTS | 4,0 |
Alias | Introduction to Programming 2 (en) |
Ersetzt | Programmkonstruktion VU (Puntigam) |
Letzte Abhaltung | 2024S |
Sprache | Deutsch |
Abkürzung | EP2 |
Mattermost | einfuehrung-in-die-programmierung-2 • Register • Mattermost-Infos |
Links | tiss:185A92, eLearning |
Inhalt[Bearbeiten | Quelltext bearbeiten]
Abstrakte Datentypen, Data Hiding, Datenkapselung, Objekterzeugung, Liste, Baum, Verkettung, dynamisches Binden, Hash Code, Iteratoren, Interfaces, Streams, Fehlerbehandlung, Qualitätstest beim Programmieren
Ablauf[Bearbeiten | Quelltext bearbeiten]
VO geht über das ganze Semester, Besuch ist nicht verpflichtend.
UE gibt es insgesamt 8 Termine mit jeweils AD Hoc Tests und Präsentation, der zuvor ausgearbeiteten Aufgaben.
Es gibt 2 Tests, die positiv zu absolvieren sind (mind 50/100)
Benötigte/Empfehlenswerte Vorkenntnisse[Bearbeiten | Quelltext bearbeiten]
Nach dem TISS wird stark darauf hingewiesen, dass man EP1 Positiv abgeschlossen haben sollte. Für Quereinsteiger gilt EP2 nur besuchen, falls man schon Grundlegende Erfahrung mit Programmieren in Java hat.
Weiters wird in der Vorbesprechung darauf hingewiesen, sich vor den Vorlesungen das Skript zu den jeweiligen Kapiteln zu Gemüte zu führen. Dies kann tatsächlich helfen, einen Überblick schon vorab zu gewinnen und im Rahmen der Vorlesung offene Fragen zu stellen.
Vortrag[Bearbeiten | Quelltext bearbeiten]
Skriptum ist sehr gut, der Vortrag beinhaltet oftmals praktische Beispiele, jedoch finde das Tempo und die Erläuterungen in der Vorlesung nicht so gut.
Andere Meinung: Skriptum ist ein Witz. Mit sowas kann man nicht Programmieren lernen. Ich kann nicht nachvollziehen wie Leute ohne Vorkenntnisse Vererbung mit „BoxedText“ und SetBoxedText“ verstehen können. Am besten lernt man mit Tutorials aus dem Internet!
Puntigam: Der Professor kann die Themen nicht verständlich überbringen. Es werden viele wichtigen Aspekte ignoriert und auf Triviales konzentriert. Ich würde empfehlen das Internet als Unterstützung zu nehmen. Der Vortragende „erklärt“ so als ob er sich selbst nicht sicher wäre. Er baut in seinen Erklärungen immer wieder rhetorische Zwischenfragen ein (nicht die Gruppenfragen), die aber oft verwirren bzw. den Gedankengang auf Umwege führt.
Andere Meinung: Professor kann die Inhalte schon verständlich rüberbringen, jedoch werden die bei der Prüfung bzw bei den Übungsbeispielen relevanten Teile nur kurz angeschnitten, bzw sind im Vortrag gar nicht vorhanden sondern nur im Skriptum. Dieses ist allerdings wirklich schrecklich. Die Beispiele zur Veranschaulichung sind teilweise auch komplett anderen Seiten als die Erklärungen dazu und letztere sind oftmals nicht ausreichend um den Code zu verstehen. Aus dem Internet gelernt habe ich nicht sondern mich durch diverse Whatsappgruppen durchgefragt bzw auf Stackoverflow nachgeschaut oder die besser erklärten Folien von AlgoDat verwendet.
Übungen[Bearbeiten | Quelltext bearbeiten]
Eine Stunde Übung, Ablauf ähnlich wie EP1: besprechen der Aufgaben, dann Ad-Hoc (15 Minuten) Die Ad-Hoc Übungen werden meistens im Team gelöst (einer stellt den Code des Aufgabenblattes bereit, der andere programmiert den Ad-Hoc Task) und waren sehr trivial (nur leichte Abwandlungen von Pflicht-Aufgaben der Übungsblätter). Ad-Hoc 3 war alleine zu lösen. Das 7. Aufgabenblatt war eine Teamaufgabe über mehrere Wochen, bei der es um die Implementierung einer komplexeren Datenstruktur geht.
Bei der Übungsanmeldung ist es komplett egal, in welche Gruppe man geht - hat im Gegensatz zu den Mathe-Übungen keinerlei Einfluss auf die Benotung. Eher auf passenden Ort/Zeit achten.
SS23: 7 Aufgabenblätter mit 6 UE-Tests dazu. 2 UE Termine waren ungewertete Übungstesttermine (Vorbereitung für tatsächliche Prüfungstests). Keine Teamaufgabe!
Achtung beim Übungsleiter Ulrich Neumerkel. Er ist grundsätzlich sehr unfreundlich und eher daran orientiert seine Aufgabe bis zum Minimum zu erfüllen als den Studierenden einen reibungslosen Übungsablauf zu ermöglichen. Auf die Frage ob man Hilfe mit dem SSH Key bekommen könnte hat er zum Beispiel einfach mit "Nein." geantwortet (ähnliche Vorkommnisse waren über das gesamte Semester normal)
Prüfung, Benotung[Bearbeiten | Quelltext bearbeiten]
Es kommen oftmals Teile die in der Vorlesung nur angeschnitten wurden, daher sich am besten alle Datenstrukturen genau anschauen, auch Dinge die absolut unwichtig erscheinen wie etwa Ringlisten. Für die zweite Prüfung auf jeden Fall alle möglichen Arten von Iteratoren einfach auswendig lernen. Besonders wichtig sind auch die MC Fragen, da auf jeden Fall die Fragenkatolge von Test 1 und 2 aus dem Vowi machen. Diese sind sehr angenehm benotet bei der Prüfung und können einen echt vor dem Fetzen bewahren. Auch variiert die Schwierigkeit von Prüfungen sehr stark von den verschiedenen Zeitslots, tendenziell dürften frühere Slots einfacher sein.
SS20: Der Schwierigkeitsgrad ist stark davon abhängig wann man die Prüfung macht. Wer Iteratorn nicht beherrscht wird beim 2. nur schwer positiv werden. Ich würde empfehlen für alle Datenstrukturen einen Iterator zu implementieren. Für den Ersten Test sollte man schon alle Datenstrukturen programmieren können (Binary-Tree, D-/Linked-List, Ringlist, Queue und Stack). Zu den Theoriefragen kann ich nur die MC-Fragen hier empfehlen aber es schadet sicher nicht wenn man sich das Skript mal durchliest oder überfliegt. Zeit sollte beim Test nicht wirklich ein Problem sein. Wer von einer Inf-HTL kommt hat durchaus vorteile aber es wird eigentlich nur Hintergrundwissen geprüft und daher auch für jene nicht easy werden. Zeitaufwand würde ich auf eine Woche (ein paar Stunden pro Tag) schätzen wenn man eine gute Note haben möchte und die Übungen so halbwegs bissl verstanden hat.
SS22: Die Tests werden sehr streng beurteilt. Die Methoden die gegeben werden müssen auch alle benutzt werden, sonst kriegt man Punkteabzüge. Es gibt auch Punkteabzüge für Getter und Setter Methoden. Es lohnt sich den Fragenkatalog für den MC-Teil anzuschauen, denn die meisten davon werden wieder benutzt.
SS23: Das schwierigste ist nicht, das Programm zu implementieren, sondern die kryptischen Aufgabenstellungen bei der Prüfung zu entziffern. Nicht zu sicher fühlen auch wenn man mit diesen Themengebieten schon gearbeitet hat. Deswegen in jedem Fall zügig lesen und schnell versuchen, den Sinn des Programms zu identifizieren.
Dauer der Zeugnisausstellung[Bearbeiten | Quelltext bearbeiten]
Dauert ewig bei mir hat die Auswertung der MC Tests etwa eine Woche gedauert und die praktischen Aufgaben etwas mehr als ein Monat.
SS22: MC Test Ergebnisse ca. 1 1/2 Wochen, restlicher Test ca. 1 Monat
SS24: MC-Test: ca. 1 Woche, Praxisteil: 4 Wochen (Zeugnis war gleich am selben Tag da)
Zeitaufwand[Bearbeiten | Quelltext bearbeiten]
Würde ich recht hoch einschätzen. Die Themen sind zwar an sich nicht schwer, allerdings ist Prof. Puntigam in keinster Weise fähig diese verständlich rüberzubringen. Internet (insbesondere Chat GBT) ist definitiv in diesem Fall dein Freund und Helfer!
Andere Meinung (SS2019): Für Personen die zum ersten Mal in EP1 angefangen haben zu programmieren kann der Aufwand doch im Verlauf des Semesters explodieren. Die Aufgabenblätter wurden immer komplexer und unverständlicher und das Skriptum half einem leider nicht was sehr frustrierend war. Ich persönlich habe einige Aufgabenblätter nicht zeitgerecht lösen können. (+1 von SS2021)
SS2020: Ich fand den Aufwand für die Übungsblätter wirklich sehr hoch. Für die Prüfung ist jedoch nicht so viel zu machen im Vergleich zu diesen.
SS2022: Extrem hoher Zeitaufwand für alle, die erst seit EP1 programmieren. Pro Übungsblatt min. 10h einplanen. Die geplanten 4h/Übung auf der LVA-Seite sind eine Frechheit.
SS2023: Für alle, die bereits Erfahrung mit Java haben abgesehen von EP1, trivial. Übungsblätter sehr schnell zu implementieren, dafür bereiten sie auch einen nicht wirklich auf den Test vor. Andere Meinung: Für alle die das nicht haben Aufwand in NP.
SS2024: Ohne Programmiererfahrung, außer EP1, sehr hoher Zeitaufwand bei den Übungsblättern und zur Testvorbereitung. Mit Programmiererfahrung gehts.
Unterlagen[Bearbeiten | Quelltext bearbeiten]
Auf TISS wird ein Skriptum Angeboten (hier noch ergänzt mit dem aktuellen Sommersemester-Link):
Tipps[Bearbeiten | Quelltext bearbeiten]
bei den Übungen gescheit alle BSP lösen dann ist man gut vorbereitet für die Tests und muss nicht so viel lernen.
sowie
- alte Tests programmieren
- MC-Fragenkataloge zu den jeweiligen Tests durchgehen (die werden recycled!)
- Ü-Aufgaben anderer Studierender anschauen, analysieren und verstehen
- bei Fragen das Skript gemeinsam durchgehen bzw. Google um Hilfe fragen (man darf auch mal etwas nicht verstehen)
- Vorlesungen eignen sich gut, um sie nebenbei in Geschwindigkeit 2 anzuhören, da auf viele für den Theorietest wichtige Inhalte eingegangen wird, die auf den Slides nicht drinstehen - sobald Puntigam Code auspackt, kann man genauso gut weiterskippen, die Implementierungen bringen eigentlich niemandem was bzgl. Verständnis
Highlights / Lob[Bearbeiten | Quelltext bearbeiten]
noch offen
Verbesserungsvorschläge / Kritik[Bearbeiten | Quelltext bearbeiten]
2019S[Bearbeiten | Quelltext bearbeiten]
Puntigams Vorlesung ist ein didaktisches Desaster und in etwa so verständnisfördernd wie das ausgedruckte Skriptum zu verzehren. Anstatt Java Code, könnte Puntigam genauso gut Java Bytecode vorlesen.
- Die Namensgebung der zu implementierenden Klassen ist ein schlechter Witz: Participations, Participations1, Participations2, Participations3 und Participations4. getRacer() und getRace() sind auch stark verwechslungsgefährdet.
- Das Aufbauen der Aufgabenblätter auf vorige Aufgabenblätter stellt ein unnötiges Erschwernis dar, wenn man eine Übung versäumt.
- 20+ Klassen in einem Ordner ist unübersichtlich: ein package per Übung wäre wünschenswert.
Ein paar Verbesserungsvorschläge meinerseits:
- Statt Participations[0-9], lieber die zu implementierenden Datenstrukturen im Klassennamen vermerken, also z.B. ParticipationsBinaryTree oder ParticipationsLinkedList, damit man auch in späteren Übungseinheiten noch weiß, wie die Klassen funktionieren
- Packages im Stoff inkludieren und verwenden, idealerweise um die verschiedenen Funktionen trennen, wie participation.*, participations.*, utils.*, iterator.*, ...
- Ausgeglichenere Tests, beim ersten Test war die Schwierigkeit teilweise stark von dem gewählten Timeslot abhängig
2020S[Bearbeiten | Quelltext bearbeiten]
War angenehmer durch Home Learning, die AD Hoc Aufgaben sind auch weggefallen und man konnte so im eigenen Tempo lernen. Einzig die Testbewertung finde ich etwas fragwürdig. Aussagen wie "sinnlos programmiert" , "nutzloser Code" könnte man schon etwas erwachsener formulieren. (zB: "Nicht zielführend/gefragt")
SS20: Finde den Umgang von Prof. Puntigam mit Studierenden sehr fragwürdig. Bei Fragebeantwortungen im Forum war es ihm scheinbar ein Anliegen den Fragenden klar zu machen, dass sie nichts wissen und er alles, weshalb er viele Erklärungen mit "Sie haben da etwas Grundlegendes nicht verstanden" anfing. Alles in allem war die LVA sicher angenehmer als in einem normalen Semesters, hätte mir jedoch dennoch sinnvolles Feedback für die Übungsbeispiele gewünscht. (Anstelle von irgendwo in der Klasse gibt es einen Fehler)
2021S[Bearbeiten | Quelltext bearbeiten]
Wie in vielen Semestern davor hat sich auch in diesem Semester die Kritik an der LVA bestätigt. Vor allem der Umgang mit Studierenden war etwas fragwürdig, da zuerst die Schuld in die Schuhe der Studierenden geschoben wurde, bevor man nach intensivem Email- bzw. Diskussionsforums-Verkehr interne Missstände aufgedeckt hat (u.a. kamen Aussagen wie "das System" bzw. die "Technik" sei "Schuld, dass das Feedback erst 3 Tage nach der Deadline bei den Studierenden eingetroffen ist" und somit auch die Abgabedeadline überschritten hat. So viel sei gesagt: Dem war dann nicht so, es war ein Fehler des LVA-Teams).
Leider ist die LVA-Leitung auch nach Jahren der Kritik noch immer nicht empfänglich dafür. Ich kann nur raten, sich mit anderen Studierenden zusammenzuschließen und gemeinsam alte Testaufgaben zu üben sowie die MC-Fragen der letzten Jahre durchzugehen. Und bei Problemen, wie beispielsweise keiner angebotenen Testeinsicht, sofort Kontakt zur Fachschaft aufzunehmen. SS22:
2022S[Bearbeiten | Quelltext bearbeiten]
Absolute Chaos-VO. Die Lehrenden (Puntigam) wissen ja selber nicht was sie da erzählen und können es dementsprechend absolut gar nicht rüberbringen. /schauts euch das Skript an. Das hilft. Aber vergessts die Vorlesung. Kaum jemand besucht noch die Vorlesung. Sehr schlecht gestaltet, kann überhaupt nicht mit EP1 verglichen werden.
Andere Meinung: EP2 schafft es den Studierenden die Lust am Programmieren zu nehmen.
2023S[Bearbeiten | Quelltext bearbeiten]
Benennungen und Erklärungen der Methoden sind lächerlich. Man kann kaum erraten was er eigentlich will. Vage Beschreibungen von den Methoden und Klassen in der Angabe machen das ganze noch schwieriger. Die Art und Weise wie es dann gelöst werden soll ist einfach nur hirnzerfetzend.
Zweite Meinung: "Preach water, drink wine" könnte der Untertitel der LVA sein. Verlangen von Studenten irgendwelche arbiträren Merkmale von Code Qualität, während vorgegebener Code nicht nachvollziehbar, lesbar oder wartbar ist. Die Übungsangabe hat gegen Ende 70 Klassen in einem Ordner (Und es heißen alle Klassen fast gleich). Packages werden nicht erstellt, und dürfen nicht erstellt werden, weil das nicht Teil des EP2 Stoffs ist. Wäre auch ein Stretch von Informatik Studenten zu erwarten Ordnerstrukturen zu verstehen. /s
Weiters gibt es jede Übungseinheit einen Test, der 15 Minuten dauert, zu zweit absolviert wird (übrigens oft nur möglich wenn einer der beiden eine korrekte Lösung parat hat) und dann meist mehr Wert ist, als die Abgabe die man über mehrere Stunden erarbeitet hat.
Andere Meinung: Die Lehrveranstaltung und insbesondere der gegebene Code ist ungefähr so hilfreich, wie wenn man sich die entsprechenden Implementierungen in Bytecode zu Gemüte führen würde - nämlich genau gar nicht. Die Übungen kann man sich imo komplett sparen, sie sind nur Zeitverschwendung und man nimmt angesichts der kurzen Zeit genau gar nichts mit, wenn man selbst nichts zu verbessern hat. Kann nur empfehlen, sich einen gemütlichen Spot weiter hinten zu suchen und sich mit anderen Übungsblättern zu beschäftigen oder die Zeit mit einem guten Handyspiel totzuschlagen. (Test)angaben sehr kryptisch und in der gegebenen Zeit praktisch nicht zu schaffen, auch für geübte Programmierer. In der Vorlesung gepredigte Paradigmen, wie kommentiert werden sollte, werden selbst ignoriert. Alttests werden nur in sehr begrenztem Umfang zur Verfügung gestellt. Auf keinen Fall von leichten Probetests täuschen lassen, bei uns hatte es der eigentliche Test in sich, während der Probetest trivial war. Sehr unübersichtliches IntelliJ-Projekt, gegen Ende zahllose Klassen in einem Ordner, kein Mensch blickt mehr durch, selbst Puntigam kommt in der Vorlesung ab und zu ins Stocken weil er seine Klasse nicht mehr findet in dem Salat an Java-Dateien, die alle gefühlt gleich heißen. Schlimmste Vorlesung des ersten und zweiten Semesters, kein Vergleich mit EP1.
Andere Meinung: Ich habe die LVA zweimal machen müssen. Erstes Mal haben mir auf den 2. Nachtest 2 Punkte gefehlt, den regulären zweiten Test habe ich aus zeitlichen Gründen/Überschneidungen mit anderen LVAs nicht gemacht. Bei der Einsichtnahme hat der Professor zu mir gemeint "Viel Glück nächstes Semester und kommen Sie regelmäßig in die Übungen!". Es scheint dem EP2 Team wichtig zu sein, dass man in der UE anwesend war und dass man wirklich mitgearbeitet hat, dann könnte es sein, dass Sie bei den Grenzfällen ein Paar Punkte gönnen. Dieses Mal war ich bei den Übungen immer dabei, habe sie alle selbst gelöst und der LVA wirklich viel Zeit geschenkt, sodass es wenig Zeit für andere Prüfungen am Ende des Semesters geblieben ist und ich sie auf den kommenden Herbst verschoben musste. Ich hatte auf die beiden Tests sehr gute Noten bekommen und musste dieses Mal keine Nachtests machen. Dieses Jahr war der erste Test wirklich machbar und wenn man die Übungsbeispiele selbst gelöst und verstanden hat, war man sicher durch. Es kann alles kommen, was zum Stoff gehört: einfach/doppelt verkettete Listen, Ringlisten, Bäume. Bei dem zweiten Test wars aber bisschen anders, da man sich von der Angabe verwirren lassen konnte. Bei mir hats wenigstens ziemlich lange gedauert bis ich wirklich mal verstanden habe, was zu tun war, dann war es keine große Hürde die Methoden zu implementieren. Ich würde allen die zum ersten Mal EP2 machen empfehlen, die Übungen selbständig zu machen und sich für den ersten Test anzuschauen wie man die Methoden (besonders bei den Listen) rekursiv implementiert ohne irgendwelche unnötige Getter und Setter zu verwenden (wofür es auch Punktabzüge geben kann). Für den zweiten Test ist es wichtig zu wissen, wie man einen Iterator für eine "tree like/rekursive data structure" schreibt, da das sehr oft kommt. Mir hat auch geholfen, dass ich alle Test aus dem Vorjahr von meinen Kollegen gesammelt habe (also alle Zeitslots) und sie als Testvorbereitung gemacht habe. Unten in Materialien ist auch ein Link zu GIT Repo wo viele Tests bis 2021 gesammelt wurden, auch mit Lösungen, kann sicher nicht schaden wenn man sich das anschaut. Manchmal kommen zum Test ähnliche Sachen mit etwas anderer Angabe. Für den ersten Test könnt ihr im schlimmsten Fall einige basic Methoden auswendig lernen, wenns nicht anders geht: add, poll, size, put, wie man einen Baut traversiert usw...
2024S[Bearbeiten | Quelltext bearbeiten]
Die bisherigen Warnungen haben sich bestätigt.
Andere Meinung: die Übungen sind teilweise extrem aufwändig, bringen sich meiner Meinung aber zumindest meistens etwas. Die Tests dagegen sind sehr schwierig und es war bei den meisten eine Methode dabei, die fast nicht schaffbar ist. Wenn man das jedoch im Hinterkopf behält und genügend Alttests macht, um sich mit der wundervollen Angabe vertraut zu machen, ist es möglich positiv zu sein. Es ist jedoch ganz sicher ein Horrorfach, vorallem wenn man davor keine Programmiererfahrung hat.
Materialien
Neues Material hinzufügenA
- Alle Prüfungen + Lösungen bis 2021S (details)
- An EP2 Approach.pdf (details)
- Anki-Fragenkatalog 1. Test.zip (details)
- Anki-Fragenkatalog 2. Test.zip (details)
- Aufgaben 2019SS (details)
- Aufgabenblatt 1.pdf (details)
- Aufgabenblatt 2.pdf (details)
- Aufgabenblatt 3.pdf (details)
- Aufgabenblatt 4.pdf (details)
- Aufgabenblatt 5.pdf (details)
- Aufgabenblatt 6 (Teamarbeit) - Vorlage.zip (details)
- Aufgabenblatt 6 (Teamarbeit).pdf (details)
- Aufgabenblatt 7.pdf (details)
- Aufgabenblatt 8.pdf (details)
E
I
T
- T1SlotC-PraxisAufgabe.java (details)
- Teamaufgabe SS20.pdf (details)
- Test 1 2024S Slot 1 (Lösungen).zip (details)
- Test 1 2022S.zip (details)
- Test 1 2019S
- Test 1 2018S
- Test 1 2018S.zip (details)
- Test 2 2024S Slot 1 without solution.zip (details)
- Test 2 2024S Slot 9 15.zip (details)
- Test 2 2023S Slot 11 15.zip (details)
- Test 2 2023S Slot 3 (12.45).zip (details)
- Test 2 2022S Nachtragstest.zip (details)
- Test 2 2022S.zip (details)
- Test 2 2019S (Slot 1 und 2)
- Test 2 2019S (Slot 1 und 2).zip (details)
- Test 2 2019S (Slot 1).zip (details)
- Test 2 2018S
- Test 2 2018S a.pdf (details)
- Test1 2023 slot 3.zip (details)
- Test2 2024S Slot1 solution.zip (details)
- Theorie fragen.txt (details)