Einführung in die Programmierung (252-0027) [Herbst 2022]

Ankündigungen & aktuelle Informationen

22. Aug. 23  Alle zur Prüfung am 25. Aug. angemeldeten Studierenden haben Mail mit den Hinveisen zur Prüfiung erhalten. Wenn Sie keine Mail bekommen haben (oder mehr als eine ...) melden Sie sich bitte.

1. Mär. 23 Alle Studierenden, die im HS22 an der Prüfung teilgenommen haben, erhielten Mail und finden ihre Lösungen der Programmieraufgaben im git Repository. 

1. Feb. 23  Alle zur Prüfung angemeldeten Studierenden haben Mail mit der Raum- und Zeiteinteilung erhalten. Wenn Sie keine Mail bekommen haben (oder mehr als eine ...) melden Sie sich bitte.   

16. Dez. 2022 Letztes Study Center vor Vorlesungsende.  Kein Study Center am Freitag (17. 12.) oder in der letzten Woche. Evtl. StudyCenter im Januar 2023 -- wird dann hier angekündigt.

23. Nov. 2022 Aufgrund des Feedbacks der Semestersprecher  haben wir das Zeitfenster für die Bonusaufgaben der Wochen 11 und 12 nochmals  geändert:  Neu werden die Aufgaben um 17:00  publiziert und Sie haben von 17:00 bis 19:00 Zeit, die Aufgaben zu bearbeiten. Weitere Informationen folgen.

22. Nov. 2022  An diesem Tag findet keine Vorlesung der "Einführung in die Programmierung" statt. Statt dessen gibt es eine Vorlesung der "Algorithmen und Datenstrukturen" (als Ersatz für den Tausch am Anfang des Semesters).

17. Nov. 2022 Das Study Center ist donnerstags und freitags von 13-14 im CAB G 57 geöffnet.

28. Okt. 2022 Statt Vorlesung bitte weitere Übungsaufgaben lösen.

25. Okt. 2022 Wegen Krankheit keine Vorlesung im ML D28 -- Alternativprogramm wie in EMail beschrieben.

5. Okt. 2022 Wegen Krankheit fällt das Treffen der Gruppe G06 aus.

22. Sept. 2022 Einschreibung in online Übungsgruppen ist jetzt möglich.

20. Sept. 2022 Einschreibung in Übungsgruppen ist jetzt möglich. U0 sowie Slides von heutiger Vorlesung verfügbar.

18. Sept. 2022 Die Information bzgl. der Übungsgruppen wurde aktualisiert.  Die Einschreibung in Übungsgruppen wird nach der 1. Vorlesung (20.9.) möglich sein. In der ersten Vorlesungswoche finden keine Treffen der Übungsgruppen statt.

5. Sept. 2022 Die DownloadHinweise (PDF, 105 KB) zur Installation der Arbeitsumgebung wurden aktualisiert.

27. Juni 2022  Herzlich willkommen.  Dies ist die Web Seite für die Vorlesung im Herbst 2022/23. Informationen über den (freiwilligen) Vorkurs sind auch online.  Die Seiten der  Vorlesung des letzten Jahres (Herbst 2021) finden Sie im Archiv.  

Nach Besuch der Veranstaltung sollen Sie einfache Programme in Java systematisch entwickeln können.  Sie können Programme schreiben und auch lesen.  Sie sollten in der Lage sein, Java Anweisungen zu einer Methode zusammenzufassen,  einen Algorithmus mit Methoden zu implementieren und die dazu benötigten Datenstrukturen mit Klassen in Java zu realisieren. Ihre Programme können Daten aus einer Datei lesen (und ggf. Daten in eine Datei schreiben).  Sie verwenden zweckmässige Basisklassen der Java Umgebung.  Sie wissen wie ein Java Programm entwickelt wird und können Tests erstellen, die demonstrieren wie Ihre Implementation die Anforderungen erfüllt. 


1 Satz: Einführung in grundlegende Konzepte der modernen Programmierung. Vermittlung der Fähigkeit, Programme von höchster Qualität zu entwickeln. Einführung in Prinzipien des Software Engineering mit objekt-orientiertem Ansatz. 

N Sätze: Viele Menschen können Programme schreiben. Die Ziele der Vorlesung "Einführung in die Programmierung" gehen aber darüber hinaus: sie lehrt die fundamentalen Konzepte und Fertigkeiten, die nötig sind, um professionelle Programme zu erstellen. Nach erfolgreichem Abschluss der Vorlesung beherrschen Studenten die fundamentalen Kontrollstrukturen, Datenstrukturen, die Verfahren zur Problemlösung und Mechanismen von Programmiersprachen, die die moderne Programmierung auszeichnen. Sie kennen die Grundregeln für die Produktion von Software in hoher Qualität. Sie haben die nötigen Vorkenntnisse für weiterführende Vorlesungen, die das Programmieren in spezialisierten Anwendungsgebieten vorstellen.

Inhalt: Grundlagen der objekt-orientierten Programmierung. Objekte und Klassen. Vor- und Nachbedingungen, Invarianten. Elementare Kontrollstrukturen. Zuweisungen und Referenzierung. Elementare Datenstrukturen und Algorithmen. Rekursion. Vererbung und Interfaces. Collections und generische Typen.  Grundkonzepte aus Software Engineering wie dem Softwareprozess, Spezifikation und Dokumentation, Reuse und Quality Assurance.

Die Vorlesungen finden statt

  • Dienstag 10:15 – 12:00 und
  • Freitag 8:15 – 10:00

im ML D 28   mit Übertragung in den ML E12. Ausserdem wird die Vorlesung per LiveStream (siehe Online Aspekte weiter unten) übertragen falls Sie nicht in einem Hörsaal der Übertragung folgen wollen oder können. Die Vorlesung im D28 wird aufgezeichnet.

Zusätzlich findet die Vorlesung am 29. 9.  und am 6. 10. um 14:15  im ETA F5 statt, als Ersatz für eine "Algorithmen und Datenstrukturen" Vorlesung. Am 22. 11. findet dafür eine "Algorithmen und Datenstrukturen"  Vorlesung anstelle dieser Vorlesung statt.

Die Übungen finden statt

  • Mittwoch 8:15 – 10:00

Die Vorlesung stellt Konzepte vor.  Aber Programmieren erfordert Übung. Daher bieten wir Übungsgruppen an. Der/die Assistent/in Ihrer Übungsgruppe ist Ihr erster Anlaufpunkt für Fragen zur Vorlesung. Haben Sie jedoch ernstere Probleme oder/und wissen nicht, wie weiter, dann können Sie sich per E-Mail an die folgende Adresse wenden: . Sie können auch auf diese Weise einen Termin mit dem Dozenten vereinbaren (eine Sprechstunde findet nur nach Bedarf statt).

Hauptassistent der Vorlesung: Felix Wolf

Dies ist der Plan ...    

Wenn mögich finden Sie hier vor der Vorlesung die ungefähren Folien der Vorlesung.  1-2 Tage nach der Vorlesung finden Sie hier die nachbearbeiteten Folien.

Alle  Folien des Semesters in einer protected pagePDF Datei.

Übungen

Die Übungen vertiefen den Stoff der Vorlesung. Sie können sich ab Dienstag (20.9.) nachmittags in eine Übungsgruppe einschreiben. Wir bieten 2 Arten von Gruppen an:  "Fokusgruppen" mit Fokus auf  Studierende ohne Vorkenntnisse und ohne vorherige Programmiererfahrung (egal welche Programmiersprache) und  "Gemischte Gruppen" (für alle  Vorkenntnisstufen). Wenn Sie Downloaddiese Aufgaben (PDF, 117 KB) lösen können, dann richtet sich die Fokusgruppe nicht an Sie. Alle Gruppen behandeln den selben Stoff und bereiten Sie gleich auf die Prüfung vor. 

  1. Bitte schreiben Sie sich in die gewünschte Art von Gruppe ein. 
  2. Wenn alle Gruppen der von Ihnen gewünschten  Art voll sind, dann warten Sie bitte etwas. Wir passen die Gruppenarten an die Nachfrage an.
  3. Wenn Sie mit anderen Studierenden in der selben Gruppe sein wollen, dann melden Sie sich bitte zusammen (zeitgleich) an.

Übungen und Prüfungsaufgaben sind auf Deutsch.  Sprache D/E heisst, dass auch Englisch verwendet wird. Diese Gruppe(n) sind nur für Studierende mit sehr guten Deutsch Kenntnissen geeignet, die Ihre Englisch Kenntnisse (z.B. für einen Austausch mit einer anderen Universität) verbessern wollen. Wir können nicht Übungen und Prüfungen auf Englisch anzubieten.  Online Gruppen finden via Zoom statt.  

Bonusaufgaben

Ab der 5. Woche bieten wir Bonusaufgaben (im Sinne der WEISUNG: Anwendung von Leistungselementen in der Lehre vom 22.12.2017) als Lernelemente an. Die Bonusaufgaben Lernelemente sind klar markierter Teil der wöchentlichen Aufgabensammlung. Die durch diese Lernelemente erworbenen Punkte verbessern das Ergebnis der schriftlichen Prüfung um maximal 0.25 Notenpunkte, wobei für dieses Maximum 80% der Maximalpunktzahl der im Semester angebotenen Punkte erforderlich sind. Wenn Sie weniger als 80% der Maximalpunktzahl erworben haben, dann verringert sich der Bonus proportional. Dieser Bonus erhöht Ihre Note in der Sessionsprüfung am Ende dieses Semesters oder in der Sessionsprüfung am Ende des nächsten (Frühjahrs)Semesters.  Der Bonus verfällt wenn die Vorlesung neu gelesen wird. 

Die Lernelemente müssen selbstständig bearbeitet werden. Sie dürfen mit Ihren Kolleginnen und Kollegen über die Bonusaufgaben reden,  aber Sie dürfen dabei keine Notizen machen (weder auf Papier noch elektronisch).  Nachdem Sie mit einer anderen Person über eine Bonusaufgabe geredet haben, müssen Sie mindestens 1 Stunde warten, bevor Sie an der Lösung (weiter)arbeiben. Unehrliches Verhalten bei der Bearbeitung der Lernelemente (z.B. Kopieren von Lösungen, Lösungsansätzen, Skizzen, oder Datensätzen von Kommilitonen oder anderen Quellen, oder die Zurverfügungstellung solchen Materials zum Kopieren) haben ernste Konsequenzen inklusive der Aberkennung aller Bonuspunkte dieser Veranstaltung.

Ablauf

Im Normalfall publizieren wir die Übungs- und Bonusaufgaben am Dienstag Nachmittag.  Im Treffen der Übungsgruppe am Mittwoch werden die Aufgaben ggf. besprochen, und die Lösungen müssen bis zum Dienstag Mittag der Folgewoche  via git abgegeben werden. Am 29. 11. und 6. 12. werden die Bonusaufgaben erst am Mittwoch Abend (30. 11. bzw. 7. 12.) publiziert und Sie haben dann 2 Stunden Zeit, diese Aufgaben zu lösen.  Weitere Informationen erfolgen später in den Übungsgruppen und in der Vorlesung. Reservieren Sie aber bei Interesse Mittwoch 30. 11. und 7. 12. von 17:00 -- 19:00 für das Lösen dieser Bonusaufgaben.

Fragen zu den Übungs- und Bonusaufgaben sollen generell im Treffen der Übungsgruppe gestellt werden (das gilt für Präsenzübungen wie für online Übungen) und nicht per E-Mail an den/die Leiter/in der Gruppe. Das Bearbeiten von Übungs- und Bonusaufgaben ist freiwillig aber empfohlen.  Es besteht keine Anwesenheitspflicht für die Übungsstunden.

Study Center

Das Study Center begleitet die regulären Übungen und bietet eine weitere Möglichkeit, Fragen zu stellen, auch zu früheren Übungen. Das Study Center findet im HS2022 "in-person" statt.

  • Donnerstag von 13-14,  CAB G 57

Das Study Center richtet sich besonders an Studierende, deren Fragen oder Lücken nicht im Rahmen einer Übungsstunde beantwortet werden können. Das Study Center ist kein Ersatz für die Übungsgruppen.  Die Coaches des Study Centers sind Assistierende, die auch eine Übungsgruppe leiten. Im Study Center können sie noch mehr auf individuelle Fragen eingehen und/oder in kleinen Gruppen Anleitungen geben.

Sie können das Study Center zu jeder Zeit besuchen während es geöffnet ist, aber je nach Andrang müssen Sie etwas warten. Da wir die Nachfrage (z.Zt.) schlecht abschätzen können, bitten wir Sie bei Verzögerungen um Nachsicht.

Wir wollen allen Studierenden die Möglichkeit bieten, die Vorlesung zu verfolgen. Da der Platz im ML D28 beschränkt ist, können Sie die Vorlesung auch als  Livestream des Raumes (ML D28) verfolgen.  Die Aufzeichung finden Sie dann am Folgetag (oder früher ...) auf dem Videoportal des Departements Informatik.  (ETH Login erforderlich)

Wir werden in der Vorlesung erklären, wie Sie in der Vorlesung Fragen stellen können oder an einem (freiwilligen) Quiz teilnehmen können. Dazu brauchen Sie die EduApp (die Sie am besten vor dem ersten Vorlesungstag herunterladen).

 

Die Vorlesung benutzt die Programmiersprache Java (Version 17) und die Übungen (wie auch die Prüfung) verwenden Eclipse als Entwicklungsumgebung (IDE). Als Betriebssystem für die Übungen können Sie Windows, MacOS oder Linux verwenden. Es gibt an der ETH Computerräume für Studierende, oder Sie können Ihren eigenen Computer verwenden. Das external pageProjekt Neptun bietet Studierenden mobile Rechner zu günstigen Konditionen an. (Sie müssen eingeschrieben sein, um dort bestellen zu können.)  In den ersten Wochen des Semesters bieten wir Hilfe bei der Installation der Arbeitsumgebung auf MacOS, Linux und Windows an (Sprechstunden, 1:1 Meetings, Übungsgruppen).

1) Installation der Arbeitsumgebung

Hier ist die DownloadAnleitung (PDF, 105 KB) für die Installation der Arbeitsumgebung (MacOS, Linux, Windows).  Sie können die Arbeitsumgebung gerne vor Beginn des Semesters installieren.  (Dies ist auch die erste Übung zur Vorlesung.)

2) E.Tutorials des Departements Informatik

Das Departement Informatik bietet diverse Module für individualisierten Informatik Grundlagen Unterricht an. Der Inhalt dieser Module wird nicht in der Vorlesung vorausgesetzt.  Wenn Sie noch nie programmierten und vor Beginn des Semesters noch Zeit haben, dann können Sie das Modul "Programmiergrundlagen Java 1" der E.Tutorials bearbeiten. Das Tutorial erklärt auch, wie Sie Java und Eclipse installieren aber bitte folgen Sie der Anleitung oben.  Für die Tutorials brauchen Sie eine SWITCH Edu-ID.

3) Weiteres Lernmaterial

Wenn Sie noch nie programmierten (oder Sie nur mit MathLab, Scratch, oder ähnlichen Umgebungen programmierten), dann könnte Sie der Vorkurs interessieren. Die Unterlagen und Aufzeichnungen sind mit ETH Login verfügbar.

Der Inhalt dieses Vorkurses wird nicht in der Vorlesung vorausgesetzt.

4) Prüfungsvorbereitung

Hier finden Sie weiteres Übungsmaterial, welches von verschiedenen Übungsgruppenleitern zur Verfügung gestellt wurde. Sie können es für die Prüfungsvorbereitung nützen, aber es wird nicht erwartet, dass Sie das Material bearbeitet haben.  Die Aufgabensammlung des VIS enthält frühere Prüfungen (tlw. mit Lösungen).

Lehrbücher:

Es gibt eine grosse Anzahl von Lehrbüchern die Java als Programmiersprache verwenden. Sie können auf solche Bücher zugreifen, wenn Sie z.B. ein Thema nachbearbeiten oder vertiefen wollen.  Auch die Java Tutorials (siehe unten) sind evtl. hilfreich.  Die Vorlesung orientiert sich an zwei Lehrbüchern,  aber es steht Ihnen frei, andere Bücher zu konsultieren. Wir verwenden Java (Version 17). Ein Buch, das auf Java (Version 8) basiert, sollte gehen, nicht aber eines, das auf Java (Version 7) oder älteren Versionen basiert. 

S. Reges und M. Stepp, "Building Java Programs",  Pearson.  5. Auflage (2019) aber die 4. Auflage (2016) geht genauso gut. Einige Beispiele aus der Vorlesung finden Sie auch in diesem Buch. Die Informatik Bibilothek hat Exemplare.

R. Sedgewick und K. Wayne, "Einführung in die Programmierung mit Java", 2011, Pearson Higher Education, ISBN 978-3-86894-0476-3. Deutsche Übersetzung, auch auf Englisch (neuere Ausgabe!) erhältlich.  Enthält viele interessante Beispiele von Programmen die Anwendungsprobleme lösen. Auch in der Informatik Bibliothek vorhanden.

Dokumentation:

Sie finden auf dem Web die vollständige external pageSpezifikation der Programmiersprache Java. Diese ist allerdings auf Englisch. Es gibt diese auch in Buchform, aber vermutlich finden Sie die Online-Version praktischer.

Die external pageJava Web Seiten von Oracle enthalten Tutorials, API Dokumentation und vieles mehr, auch für frühere Versionen von Java.  

JavaScript has been disabled in your browser