TU Wien:Einführung in die Programmierung 1 VU (Podlipnig)

From VoWi
Jump to navigation Jump to search

Daten[edit]

Lecturers Markus AngermannNathaniel BoisgardJürgen KoglerMarion MurzekStefan PodlipnigMichael ReiterMartin RienerMauro TempestaSebastian Zambanini
ECTS 5,5
Alias Introduction to Programming 1 (en)
replaces Programmkonstruktion VU (Puntigam)
Department Logic and Computation
When winter semester
Last iteration 2021WS
Language Deutsch
Abbreviation EP1
Mattermost einfuehrung-in-die-programmierung-1RegisterMattermost-Infos
Links tiss:185A91
Zuordnungen
Bachelor Wirtschaftsinformatik Pflichtmodul INT/PRO - Einführung in die Programmierung
Bachelor Medieninformatik und Visual Computing Pflichtmodul Einführung in die Programmierung
Bachelor Medizinische Informatik Pflichtmodul Einführung in die Programmierung
Bachelor Software & Information Engineering Pflichtmodul Einführung in die Programmierung
Bachelor Technische Informatik Pflichtmodul Einführung in die Programmierung


Inhalt[edit]

Die LVA bietet (dem Namen entsprechend) eine Einführung in die Programmierung mit der Programmiersprache Java. Themen:

  • Einleitung
  • Variablen, Datentypen, Operatoren
  • Verzweigungen
  • Eingabe und Ausgabe
  • Schleifen
  • Methoden
  • Zusicherungen (Assertions)
  • Arrays
  • Rekursionen — /Übungen zur Rekursion
  • Algorithmen

Ablauf[edit]

Wer schon Programmiererfahrung hat, kann bei dieser LVA einen freiwilligen Einstufungstest machen:

Stand WS2017:[edit]

  • Einstufungstest online auf TUWEL
  • Der Einstufungstest bestand im WS2017 aus 20 Fragen / 5 Minuten / 60 Minuten pro Versuch, der beste Versuch zählt
  • Erreicht man genug Punkte (im WS2017 15,5 / 20, also 77,5%), wird man in die Kompetenzstufe 2 gereiht, in der man nur 3 Übungen absolvieren muss.
    WS2018: Einstufungstest ab 18/24 Punkten (also 75%) in K2, dann 4 Übungen
  • Erreicht man die benötigte Punkteanzahl nicht, bleibt man in Kompetenzstufe 1 und muss 8 Übungen absolvieren.
  • Macht man den Einstufungstest nicht, kommt man auch in Kompetenzstufe 1.

Stand SS2020:[edit]

  • Man kann nun 25 Punkte erreichen beim Einstufungstest für die Kompetenzstufe K2; sobald man 20 Punkte oder mehr erreicht ist man in Kompetenzstufe 2. Allerdings zählen die Punkte auch für die Endnote. Wer also nur 20 Punkte erreicht sollte sich überlegen ob er vielleicht nicht lieber Kompetenzstufe 1 nehmen möchte, da er/sie dann hier 25 Punkte erreichen könnte, also 5 Punkte mehr. (Man benötigt 60 Punkte für einen positiven Abschluß; erfahrungsgemäß ist der letzte Programmiertest am schwierigsten, zumindest hat das Podlipnig auch so gesagt im Zuge der Vorbesprechung). [Weitere Anmerkung: im Sommersemester 2020 durch die aktuellen Ereignisse, i. e. Covid19, verschieben sich nun einige Termine. Es wurde angekündigt das verstärkt TUWEL genutzt wird; daher ist das Sommersemester 2020 vermutlich nicht 1:1 zu vergleichen mit dem Sommersemester 2021 oder anderen Sommersemestern.]

Stand WS2021:[edit]

Im WS2021 gab es erstmals auch eine dritte Kompetenzstufe (K3). Das Erreichen dieser ermöglicht es, die Vorlesung komplett zu überspringen. Zudem wurden die Einstufungstests vor Ort durchgeführt, anstatt online.

Der K3-Einstufungstest bestand aus einem 45 Minuten langem Theorietest auf TUWEL mit 40% Gewichtung und einem anschließenden 60 Minuten langem Programmiertest mit 60% Gewichtung. Der Theorietest umfasste 10 Fragen, mit je 4 Wahr/Falsch-Teilfragen. Pro Frage waren 4 Punkte erreichbar. Mit einer falsch bentworteten Teilfrage gab es noch 2 Punkte, mit 2 oder mehr falschen Antworten keine Punkte. Die Fragen beschäftigten sich mit der Analyse von Codefragmenten, z.B.:

- Kann der gegebene Code Exceptions auslösen?
- Mit welcher minimalen oberen Schranke kann der Algorithmus beschrieben werden?
- Terminiert der Code noch, wenn eine Zeile verändert wird? Ist der Sortieralgorithmus noch stabil? (Veränderung beschrieben)
- Wie oft wird eine bestimmte Zeile mit bestimmten Übergabeparametern aufgerufen (insb. mit rekursiven Algorithmen)?

Zur Beantwortung der Fragen durften alle Unterlagen und Onlineressourcen verwendet werden, ebenso wie IntelliJ. Allerdings wurde Code als Bild zur Verfügung gestellt und nicht in Textform. Abtippen war aufgrund der knapp ausgelegten Zeit kaum sinnvoll. Zur Programmierübung wurden 2 Beispiele mit mehrdimensionalen Arrays und 1 Beispiel mit Rekursion gefordert. Die Lösung der Beispiele war prinzipiell trivial, jedoch teilweise mit so unkonventionellen Forderungen, dass die Angabe sehr genau gelesen werden musste.

Andere Meinung: Abtippen der Codesnippets des TUWEL-Tests kann insbesondere bei Fragen, bei denen man sich unsicher ist und die durch den Compiler wirklich einfach werden hilfreich sein. Wenn man einigermaßen tippen kann, sollte es kein Problem sein, bis zu 4 Fragen auf diese Art zu lösen.

Kompetenzstufen[edit]

K1

Das ist der Standard. Wird kein Einstufungstest durchgeführt, dann wird man automatisch dieser Kompetenzstufe zugewiesen. Auf diese Kompetenzstufe wurde die LVA entworfen. Sie ist auf Studierende mit wenig bis keine Programmiererfahrung ausgelegt. Es bleiben anscheinend aber auch Studierende in dieser Kompetenzstufe, die mit der Programmiersprache Java noch wenig vertraut sind. Personen in K1 müssen die gesamte LVA besuchen und somit auch an allen Übungen teilnehmen.

K2

In K2 wird etwa die erste Hälfte der LVA übersprungen. Für weiter Infos siehe 'Stand SS2020'.

K3

Dies ist eine Neuerung im WS2021. Hierbei kann die gesamte LVA übersprungen werden. Um in diese Kompetenzstufe zu gelangen, muss aber zuerst der K2-Einstufungstest und daraufhin auch der K3-Einstufungstest positiv abgeschlossen werden. Die Endnote der LVA ergibt sich aus dem Ergebnis beim K3-Einstufungstest. Man konnte aber nach Bekanntgabe der Note auch entscheiden (wenn man mit seiner Note nicht zufrieden war), doch auf K2 zu bleiben, um eine bessere Note bekommen zu können.

Benötigte/Empfehlenswerte Vorkenntnisse[edit]

Grundsätzlich wirklich keine! Erfahrungswerte in einer beliebigen objektorientierten Programmiersprache würden aber nicht schaden.

Vortrag[edit]

Im Vergleich zu EP2, didaktisch ausgezeichnet.

Übungen[edit]

Allgemeines[edit]

Die K1-Übungen beginnen Mitte Oktober, die K2-Übungen Mitte November (für das Wintersemester; die VU wird jedoch auch im Sommersemester angeboten).

Im ersten Teil jeder Übung wird für jede Aufgabe ein_e Student_in zufällig (z.T. auch alphabetisch) ausgewählt, um seine Lösung zu präsentieren und zu erklären.

Im zweiten Teil wird entweder eine Ad-Hoc-Übung durchgeführt oder ein TUWEL-Test ist zu lösen.

Die beiden ersten Übungen der Kompetenzstufe 1 sind davon ausgenommen, die dienen nur zum "freien Üben", werden jedoch auch mit 1 Punkt beziehungsweise 2 Punkten "belohnt" - daher sollte man diese unbedingt besuchen wenn man in K1 beginnt.

Ad-Hoc-Aufgaben[edit]

Ad-Hoc-Aufgaben sind praktische Programmieraufgaben, die ohne Zuhilfenahme von Unterlagen oder Websites (kein Google, kein StackOverflow) gelöst werden müssen. Für die Ad-Hoc-Übung hat man 45 Minuten Zeit. Für richtige Ansätze bekommt man Teilpunkte. Ad-Hoc-Aufgaben orientieren sich außerdem stark an den Aufgaben der jeweiligen Übungswoche.

TUWEL-Tests[edit]

TUWEL-Tests sind Theorietests, man muss also keinen Code schreiben. Es wird aber gefordert, dass man Java-Code lesen, verstehen und auf Fehler überprüfen kann. Die Fragen sind alle aus dem Fragenkatalog der TUWEL-Tests, die man vorab zuhause üben kann.

Die TUWEL-Tests sind außerdem jederzeit zum Üben zugänglich, die tatsächlichen Fragen kommen dann aus demselben Fragenpool. Bei der Lösung der Aufgaben ist ausschließlich TUWEL zugänglich, eine Nutzung der IDE oder von Unterlagen ist nicht möglich bzw. erlaubt. Papier für Notizen/Skizzen/Überlegungen wird zur Verfügung gestellt.

Der TUWEL Test ist zum Beispiel unter folgender URL zu finden (für registrierte Benutzer), 2019S:

https://tuwel.tuwien.ac.at/course/view.php?id=17119

Für registrierte Benutzer 2020S:

https://tuwel.tuwien.ac.at/course/view.php?id=21169

Prüfung, Benotung[edit]

Geprüft wird mittels der TUWEL-Tests und Programmiertest. Es gibt in den 6 Übungen jeweils 3 TUWEL-Tests und 3 (ehem. AdHoc) Programmiertests zu lösen, für die man jeweils 30 bis 45 Minuten Zeit hat. Mit diesen und den Übungsaufgaben sind maximal 100 Punkte zu erreichen. Für eine positive Note benötigt man 60.

1. TUWEL-Test   5 Punkte zu erreichen
1. Programmiertest 10 Punkte zu erreichen
2. TUWEL-Test 10 Punkte zu erreichen
2. Programmiertest 15 Punkte zu erreichen
3. TUWEL-Test 15 Punkte zu erreichen
3. Programmiertest 20 Punkte zu erreichen

Also insgesamt 75 durch die Tests plus 25 durch die Aufgabenblätter.

Anmerkung: mit Sommersemester 2020 hat sich das ganze ein wenig geändert, auch die Punkte. Es scheint nur noch einen TUWEL-Test zu geben, der jedoch 20 Punkte bringt.

WS 2020: Im Wintersemester 2020 konnten durch die Aufgabenblätter 40 Punkte, durch eine Online-Programmieraufgabe 10 Punkte, durch einen TUWEL-Test 20 Punkte und durch einen Programmiertest am Ende des Semesters 30 Punkte erreicht werden. Der Notenschlüssel sieht wie folgt aus:

Note Punkte
Sehr gut 100 - 90
Gut 89 - 80
Befriedigend 79 - 70
Genügend 69 - 60
Nicht genügend 59 - 0

Dauer der Zeugnisausstellung[edit]

Semester Letzte Leistung Zeugnis Dauer
2019W 23.01.2020 03.02.2020 11 Tage
2020W 28.01.2021 19.02.2021 22 Tage

Zeitaufwand[edit]

In Kompetenzstufe 1:

  • stark abhängig von der Programmiererfahrung
  • mit Programmiererfahrung (kein Java zuvor) ~2-3h pro Übungsblatt (6 Übungsblätter)
  • ohne Programmiererfahrung (noch nie programmiert) ~ 8 - 10h pro Übungsblatt

In Kompetenzstufe 2:

  • ca. 10 Stunden pro Übungsblatt
  • mit guter Programmiererfahrung: ca. 1,5h pro Blatt.

Unterlagen[edit]

noch offen

  • Übungsblätter samt Lösungen, WS2018: Siehe Materialien
  • Materialien
  • [Todo: Bitte noch einen Fragenkatalog aus TUWEL hier zur Verfügung stellen, und diesen Eintrag dann entfernen; dies mag künftigen Studierenden helfen sich auf den TUWEL Test vorzubereiten, auch wenn dann andere Fragen kommen. Man kann zumindest grob abschätzen in welche Richtung diese Theorie-Fragen gehen. Sobald der für das Sommersemester 2020 veröffentlicht wird werde ich dies tun, und das hier entfernen; mit Stand 07.03.2020 gibt es jedoch auf TUWEL noch keinen TUWEL-Fragenkatalog. Leider gibt es auch hier bei den Materialien noch keinen alten Katalog.]

Tipps[edit]

  • Mit etwas Programmiererfahrung (z.B. HTL) ist es auf jeden Fall möglich die schwere Kompetenzstufe K2 zu machen, die TUWEL-Tests sind exakt gleich. Die Aufgabenblätter und Ad-Hoc-Übungen sind jedoch um einiges schwerer. Wenn du also schon Ahnung hast musst du entscheiden was dir lieber ist: eine gute Note ohne viel Arbeitsaufwand dafür 5 extra Übungen oder etwas schwerere Aufgaben & höheres Übungsniveau
  • Die K2-Übungsblätter stellen teilweise komplexere Aufgaben, zum Teil aber auch idente zu jenen der K1, allerdings zu früheren Zeitpunkten. K2-Aufgaben der ersten Übungsblätter können also auch einige Wochen später in ähnlicher Form bei K1-Blättern auftauchen. (Stand erstes Semester der LV WS2017)
    WS2018: Kompetenzstufe 1 und 2 unterscheiden sich nur dadurch, dass man in Stufe 2 die ersten beiden Übungsblätter nicht macht und stattdessen die Punkte des Einstufungstests zählen.
  • Bei den TUWEL-Tests ist genaues Hinschauen gefragt - oft scheint Code auf den ersten Blick korrekt, ist aber aufgrund von Kleinigkeiten die leicht übersehen werden können falsch (bspw Semikolon statt Doppelpunkt, ...). Wer die Tests zuvor häufig durchprobiert hat die meisten Fragen bereits gesehen und kann die Fallstricke beim Test schnell erkennen und Schlampigkeitsfehler vermeiden.
  • Programmiertests unbedingt zuvor ausprogrammieren, oft gibt es ein paar Eigenheiten, welche im Teststress mühsam zum Überlegen sind.
  • Zum Einstufungstest für K2: der ist meistens etwas schwieriger als beim "Beispielstest" angegeben. So mussten wir heute (06.03.2020) auch drei Strings miteinander vergleichen; und den String der anders ist, sofern er anders ist, zurückgeben. Das ist auch lösbar, jedoch war der Beispielstest deutlich einfacher. Vor allem da man auch nur 40 Minuten Zeit hat, und die Angabe zum Teil etwas konfus ist (mir hat es zum Beispiel mehr geholfen, die input → output Angabe am Ende durchzusehen; da war es dann klar was die Methode können musste) Bei der Benotung sind die Tutoren jedoch recht freundlich und vergeben auch durchaus Teilpunkte, so das man eigentlich 20 Punkte erreichen kann wenn man programmieren kann, selbst wenn man nicht alles richtig hat. Man sollte sich dann jedoch auch vorbereiten, das vor Ort zu erklären; oft erhält man dadurch dann noch die Teilpunkte (kommt wohl auch auf die Tutoren selbst an wie streng diese den Quelltext beurteilen aber mein Eindruck war das sie versuchen möglichst fair zu bewerten, und eher schauen ob der Studierende auch wirklich programmieren kann; und das kann man recht gut erkennen, auch wenn jemand Fehler macht).
  • Vielleicht üben unter "Zeitdruck" zu programmieren.

Verbesserungsvorschläge / Kritik[edit]

Meiner Ansicht nach sollten die TUWEL-Tests weniger gewichtet werden, da sie teilweise Fragen stellen die eher die Konzentrationsfähigkeit abtesten, als Wissen oder Verständnis.

Anmerkung: Ab Sommersemester 2020 hat sich das ganze etwas geändert. Es gibt, sofern ich dies richtig verstanden habe, nur noch einen einzigen TUWEL Test der 20 Punkte bringt (also 1/5 der Gesamtpunktezahl). (Und das wurde dann nochmals geändert, da durch die covid-19 Thematik keine Lehrveranstaltungen mit physischer Präsenz möglich sind - ist alles gerade ein ziemliches Chaos.)

Attachments

Add new attachment