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

25. Jan. 2022 -- Alle Studierenden, die sich für die Prüfung angemeldet hatten, erhielten eMail mit Angabe des Raumes und der Zeit. Alle Prüfungen finden im ONA Gebäude statt, welches nur einen Eingang hat. Kommen Sie bitte zum ONA Gebäude erst in den 30 Minuten vor der Prüfung.  Beachten Sie die Regeln des Schutzkonzeptes während Sie das Gebäude betreten: Abstand && Maske.

14. Jan. 2022 -- Alle Studierenden, die sich für die Prüfung angemeldet hatten, erhielten eMail. Bitte stellen Sie sicher, dass eMail Sie erreicht.

27. Dez. 2021 --Alle Folien in einer DownloadDatei (PDF, 48.1 MB) sind jetzt online (50MB).  Ebenso ist die Vorlesung vom 24. 12. im Videoarchiv der ETH verfügbar. 

24. Dez. 2021 -- Vorlesung per Zoom.  Alle eingeschriebenen Studierenden haben den Zoom Link per Mail erhalten.

16. Dez. 2021 -- Bonusaufgaben aus früheren Semestern sind in der Community Solution VIS platform publiziert.

14. Dez. 2021 -- In der Umfrage hat sich eine Mehrheit dafür ausgesprochen, dass die Vorlesung am 24. 12. stattfindet. (Sollten Vorgaben der ETH zu einer Änderung führen so kündigen wir das hier an.)

23. Nov. 2021 -- 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).

08. Nov. 2021 -- Study Center freitags von 16:15 -- 18:00 geöffnet (siehe Information weiter unten).

26. Okt. 2021 Regeln für Bonuspunkte auf der Web Seite  publiziert.

30. Sept. 2021 Vorlesung von 14:15 -- 15:00 im ETA F5.   Livestream und Aufzeichung in diesem Raum resp. in "Algorithmen und Datenstrukturen".  Auch am 7. 10.  

22. Sept. 2021 Videoaufzeichnung ab jetzt online im Videoportal (ungefähr 1-2 Tage nach der Vorlesung sollten die Aufzeichnungen  verfügbar sein).

16. Sept. 2021 Einschreibung in Übungsgruppen ist ab Freitag, 17. 9., möglich. Sollten Gruppen voll sein, so werden wir weitere Plätze freischalten. Bitte kommen Sie später wieder. Beachten Sie bitte die Hinweise in myStudies.  In der 1. Woche findet kein Treffen der Übungsgruppen statt.

15. Sept. 2021 Die Vorlesung wird vor Ort durchgeführt und gleichzeitig als LiveStream übertragen.  Ausserdem wird die Vorlesung aufgezeichnet.

15. Sept. 2021  Bitte registrieren Sie sich unbedingt in "myStudies" für die Vorlesung wenn Sie diese Veranstaltung besuchen möchten. Wir können Sie sonst nicht per eMail erreichen. In die Übungen können Sie sich bis zum 27. 9. einschreiben.  (Sie können sich auch nach Vorlesungsbeginn wieder abmelden wenn Sie Ihre Meinung ändern.)   

01. Sept. 2021 Die Hinweise für die Installation der DownloadArbeitsumgebung (PDF, 105 KB) wurden angepasst. Sie können die Arbeitsumgebung gerne vor Beginn des Semesters installieren.

31. Aug. 2021 Für neu eintretende Studierende, die keine (oder fast keine) Vorkenntnisse im Programmieren haben, bieten wir einen Vorkurs an. 

30. Aug. 2021  Viele Details sind noch unbestimmt (wir warten auf den ETH Masterplan für die Zeit nach dem 6. Sept. 2021.) Bitte kommen Sie wieder auf diese Web Seite.

04. Juni 2021  Herzlich willkommen.  Dies ist die Web Seite für die Vorlesung im Herbst 2021/22. Die Seiten der  Vorlesung des letzten Jahres (Herbst 2020) finden Sie im Archiv.  Diese Seiten sind noch "im Umbau".

 

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

  • Dienstags 10:15 – 12:00 und
  • Freitags 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 sondern Ihren persönlichen Computer bevorzugen. Die Vorlesung im D28 wird aufgezeichnet.

Zusätzlich findet die Vorlesung  am 30. 9.  und am 7. 10. um 14:15  im ETA F5 statt, als Ersatz für eine "Algorithmen und Datenstrukturen" Vorlesung. Am -- wird noch  bekannt gegeben -- findet dafür eine "Algorithmen und Datenstrukturen"  Vorlesung anstelle dieser Vorlesung statt.

Bis auf weiteres wird die Pause in der Mitte verkürzt.

Die Übungen finden statt

  • Mittwochs, 8:15 – 10:00
  • Donnerstags, 7:45 9:30  (nur für Studierende Interdisziplinäre Naturwissenschaften)   

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, ggf. mit den in der Vorlesung gemachten Annotationen.

Alle 3104 Folie des Semesters in einer DownloadPDF Datei.

Übungen

Die Übungen vertiefen den Stoff der Vorlesung.  Es besteht keine Anwesenheitspflicht für die Übungsstunden.

Übungen und Prüfungsaufgaben sind auf Deutsch. Ohne weitere Angaben finden Treffen vor Ort in den angegebenen Räumen auf Deutsch statt.  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 haben nicht die Ressourcen, Übungen und Prüfungen auf Englisch anzubieten.

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.

Sollten Sie Bonuspunkte in einem früheren Semester erworben haben und aus Gründen, die Sie nicht zu vertreten haben (z.B., Krankheit, Schwangerschaft, Unfall)  die Prüfung nicht ablegen konnten, so können Sie diese Bonuspunkte aktivieren. Schicken Sie bitte eine Mail an den Dozenten mit entsprechender Dokumentation.  (Ein Abbruch, z.B. wegen Nicht-Erscheinens, berechtigt nicht zur Aktivierung der alten Bonuspunkte.) In diesem Fall können Sie in diesem Semester keine Bonuspunkte erwerben und dürfen insbesondere auch keine Bonusaufgaben abgeben.  Eine erneute Abgabe hat zur Folge, dass die in diesem Semester erworbenen Bonuspunkte angerechnet werden.

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.

Study Center

Wir bieten ein freiwilliges "Study Center" an, dieses ist freitags von 16:15 -- 18:00 geöffnet. Das Study Center findet bis auf weiteres per Zoom statt (der Link und weitere Informationen werden allen eingeschriebenen Studierenden zugeschickt).

Das Study Center begleitet die regulären Übungen und bietet eine weitere Möglichkeit, Fragen zu stellen, auch zu früheren Übungen. Es 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önnem das Study Center zu jeder Zeit besuchen während es geöffnet ist, aber je nach Andrang müssen Sie etwas warten bis Sie aus dem "Waiting Room" ins Hauptmeeting hereingelassen werden. Wenn Sie dann den Hauptraum des Study Center "betreten" haben, so schreiben Sie bitte ihr momentanes Anliegen in den Chat (sichtbar für alle), so dass wir Ihnen weiterhelfen können. (Nur so können alle Coaches sehen, welche Fragen Sie haben.) Dies kann z.B. ein Thema sein, dass Sie gerne erklärt bekommen würden, eine Aufgabe, bei der Sie Hilfe brauchen, etc. Falls Sie kein spezifisches Anliegen haben, sondern einfach gerne zuhören würden, so lassen Sie uns dies wissen. Wir versuchen dann, Gruppen ("Breakout Rooms") mit ähnlichen Fragen zusammenzustellen.

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 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.

 

Die Vorlesung benutzt die Programmiersprache Java (Version 11) 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 nur eine EMail Adresse (ein Benutzerkonto der ETH Zürich ist nicht erforderlich).

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 11). 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