Thomas Gassmann
Einführung in die Programmierung HS23
Allgemeine Informationen
IFW A 34, Mittwoch 16:15 - 18:00
Bei Fragen sind wir per Mail oder Discord erreichbar.
- Mail: tgassmann@student.ethz.ch, atodorov@student.ethz.ch
- Discord: thomasgassmann#8024, donentseto#2867
Die Übungen müssen jeweils bis Dienstag Abend 23:59 (Zeitpunkt von push
, nicht commit
) abgegeben werden.
Die Prüfung findet am 05.02.2024 von 09:30 - 12:10 statt. Weitere Informationen folgen von offizieller Seite.
Links
- Vorlesungswebseite
- EBNF (fullpage)
- Regeln zu den Bonusaufgaben
- eprog.ch von Aaron Zeller und Cédric Déteindre
- Recordings der Vorlesung
- ETH D-INFK Discord
- Eclipse Cheatsheet (Credits: Jonas Blank)
- VIS Community Solutions
- Advent of Code, ab Dezember
- Git book, Git branching
- Advanced Java by Finlay
Weitere Links finden sich hier.
Agenda
Woche | Slides | Links | Inhalt |
---|---|---|---|
KW38 | - | - | keine Übungsstunde, es findet aber ein Study Center statt für Probleme mit der Installation/Umgebung |
KW39 |
| ||
KW40 |
| ||
KW41 |
| ||
KW42 |
| ||
KW43 |
| ||
KW44 |
| ||
KW45 |
| ||
KW46 |
| ||
KW47 |
| ||
KW48 |
| ||
KW49 |
| ||
KW50 |
| ||
KW51 |
|
Tipps zu den Übungen
Serie 0
keine Tipps
Serie 1
- Aufgabe 1: Wichtig, dass ihr alle das Git-Repository einrichtet (ihr dürft gerne auch die Commandline verwenden, in den letzten Jahren wurde Git an der Prüfung nicht verwendet)
- Aufgabe 2: -
- Aufgabe 3: -
- Aufgabe 4: Gute EBNF Aufgaben zum Üben, wir schauen uns Beispiele in der Übungsstunde an
Serie 2
- Aufgabe 1: Mit den Fehlermeldungen arbeiten.
- Aufgabe 2: Versucht Teile des Programmes wiederzuverwenden.
- Aufgabe 3: Gute Übung zum Einstieg.
- Aufgabe 4: Wie besprochen. Beliebter Aufgabentyp an der theoretischen Prüfung.
Serie 3
- Aufgabe 1: Überlegt euch wie man algorithmisch eine Dezimalzahl in eine Binärzahl konvertieren kann
- Aufgabe 2: Euklidischer Algorithmus (versucht das Problem iterativ und rekursiv zu lösen)
- Aufgabe 3: Versucht hier die verschiedenen Fälle gut zu unterscheiden, so dass der Entscheidungsbaum übersichtlich bleibt
- Aufgabe 4: Rekursion
- Aufgabe 5: ähnliche wie bei Schweizerfahne Aufgabe, versucht Dinge wiederzuverwenden
- Aufgabe 6: -
Serie 4
- Aufgabe 1: Gute Beschreibung auf Wikipedia
- Aufgabe 2: -
- Aufgabe 3: -
- Aufgabe 4: Loop Invariante:
1. { precondition } => { loop invariant } 2. { loop invariant } and { loop condition } => { loop invariant after loop body } 3. { loop invariant } and not { loop condition } => { post condition }
- Aufgabe 5: -
- Aufgabe 6: Bonus
Serie 5
- Aufgabe 1: Gute Übung, Textdatei wie in der Übung besprochen lesen
- Aufgabe 2: -
- Aufgabe 3: Bonusaufgabe von letztem Jahr, gute Prüfungsvorbereitung
- Aufgabe 4: -
- Aufgabe 5: Beispiele auf den Slides, letztjährige Prüfungsaufgabe
Serie 6
- Aufgabe 1: -
- Aufgabe 2: wie besprochen
- Aufgabe 3: versucht alle Cases abzudecken
- Aufgabe 4: Denkt an die Bedingungen die eure Loop Invariante erfüllen muss:
1. { precondition } => { loop invariant } 2. { loop invariant } and { loop condition } => { loop invariant after loop body } 3. { loop invariant } and not { loop condition } => { post condition }
- Aufgabe 5: -
- Aufgabe 6: -
Serie 7
- Aufgabe 1: EBNF.
- Aufgabe 2: Wie besprochen, versucht alle Fälle abzudecken. Überlegt euch zu Beginn, was eure Methode tun soll.
- Aufgabe 3: Gleiches Prinzip.
- Aufgabe 4: Bonus.
- Aufgabe 5: Template in den Slides. Nicht prüfungsrelevant, aber gute Übung.
Serie 8
- Aufgabe 1: Klassische Übung zu Loop Invarianten.
- Aufgabe 2: Ehemalige Prüfungsaufgabe, überlegt euch zuerst alle Fälle gut und beginnt erst dann mit der Implementation. Verwendet Rekursion.
- Aufgabe 3: -
- Aufgabe 4: Gute Übung, GUI-Teil nicht prüfungsrelevant.
Serie 9
- Aufgabe 1: Bonus, versucht das Problem in einzelne Teilprobleme zu zerlegen
- Aufgabe 2: Gute Übung für den Umgang mit Referenzen
- Aufgabe 3: 7.272 gilt es zu schlagen.
- Aufgabe 4: Interessante Aufgabe, evt. aber weniger prüfungsrelevant
- Aufgabe 5: -
Serie 10
- Aufgabe 1: Loop Invariante zur Übung
- Aufgabe 2: Gute Übung, vor allem wenn man Probleme bei den Linked-List Aufgaben hatte
- Aufgabe 3: -
- Aufgabe 4: GUI Teil weniger relevant, aber gute Übung im Umgang mit Vererbung
Serie 11
- Aufgabe 1: Einfache Übung mit Maps
- Aufgabe 2: Interessante Übung, aufwändig, aber lohnt sich
- Aufgabe 3: wie Aufgabe 2
- Aufgabe 4: Gute Übung im Umgang mit Interfaces
- Aufgabe 5: -
Serie 12
- Aufgabe 1: Gute Vorbereitung auf die schriftliche Prüfung
- Aufgabe 2: Gute Übung für Iterators/Generics
- Aufgabe 3: -
- Aufgabe 4: basiert auf Übung der letzten Woche, interessante Übung, wenn man die Zeit investiert
- Aufgabe 5: -
- Aufgabe 6: wie Aufgabe 4
- Aufgabe 7: Bonus