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

Die Veranstaltung findet im Hybird-Modus statt. Gruppen, die die Vorlesung im Hörsaal verfolgen können, wechseln wöchentlich.

Unter "Online Aspekte" weiter unten erfahren Sie, wie Sie online teilnehmen können.

4. Juni 2021 --  De nächste Prüfung findet am 19. August statt.  Die Termine für das Study Center werden später per eMail an die Studierenden geschickt, die sich zur Prüfung angemeldet haben,

27. Jan. 2021 -- Alle Studierenden sollten die Raumzuteilung erhalten haben. Wenn Sie keine (oder mehrere) bekommen haben, so melden Sie sich bitte.

21. Jan. 2021 -- Alle zur Prüfung angemeldeten Studierenden haben eine EMail mit Hinweisen bekommen. Sollten Sie keine EMail erhalten haben, melden Sie sich bitte.

30. Dez. 2020 -- Die Prüfung findet am 28. 1. statt. Das Study Center ist im Januar dienstags am 5. , 12. und 19. von 15:15 -- 17:00 geöffnet.

21. Dez. 2020 -- DownloadAnweisungen (PDF, 62 KB) zum Download der Programmieraufgaben sind online.

30. Nov. 2020 -- Wir haben noch protected pagemehr Tests für die Pyramidenaufgabe bereitgestellt.

24. Nov. 2020 -- 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. 2020 -- Neuer Link für Zoom (nur für Vorlesung)

27. Okt. 2020 -- Keine Präsenzvorlesungen mehr.  Die Vorlesung wird via Zoom und (bis auf weiteres) als Livestream übertragen.

19. Okt. 2020 -- Study Center montags von 16:15 -- 18:00 geöffnet (siehe Information weiter unten).

29. Sept. 2020 -- Zoom Sprechstunde von 17:30 bis 18:30 (Vorlesungslink). Absolut freiwillig.  

15. Sept. 2020 -- protected pageZoom Aufzeichnung verfügbar (später wird es keine Ankündigung mehr geben wenn die Aufzeichnung verfügbar ist).

11. Sept. 2020 -- Wenn Sie sich für die Vorlesung einschreiben, dann können Sie (evtl) nicht sofort eine Gruppe wählen.  Beachten Sie bitte, dass die Einteilung in Gruppen zentral vorgenommen wird. Auch wenn es so aussieht als ob es keinen Platz gibt: machen Sie sich keine Sorgen, die Zentralen Akademischen Dienste können die Anzahl und Grössen der Gruppen anpassen.

10. Sept. 2020 -- In der ersten Vorlesungswoche finden keine Übungen statt. Wir bieten am Freitag (18. 9.) zwischen 16 und 18 Uhr online Beratung, wenn Sie mit der Installation der Arbeitsumgebung Hilfe brauchen. Details folgen per eMail an eingeschriebene Studierende.

7. Sept. 2020 -- Die Hinweise zur Installation der Arbeitsumgebung sind jetzt online. Sie sollten die Arbeitsumgebung bis zum Ende der 2. Woche (d.h. bis zum 25. Sept.) installiert haben. 

29. Aug. 2020 – Herzlich willkommen.  Bitte registrieren Sie sich unbedingt in "myStudies" wenn Sie diese Vorlesung besuchen möchten. Wir können Sie sonst nicht per eMail erreichen. (Sie können sich später wieder abmelden wenn Sie Ihre Meinung ändern.)   Beachten Sie bitte auch die Hinweise zu den Übungen (die Einteilung in Gruppen erfolgt durch die Akademischen Dienste).

 

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. (Zusätzlich am 17.9. und 24.9. von 14:15 -- 15:00, aber nicht am wird bekannt gegeben.)

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

Die Übungen finden statt

  • Donnerstags, 7:45 9:30  (nur für Studierende Interdisziplinäre Naturwissenschaften) und
  • Freitags, 16:15 – 18  (online, in Bubbles)

Die Vorlesung im D28 wird übertragen  und aufgezeichnet.

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 3032 Folien in einer PDF protected pageDatei (Grösse reduziert). Adobe Acrobat Pro auf dem Mac hat manchmal Probleme mit dieser Datei, aber andere PDF Viewer (z.B. Acrobat Reader oder Preview) funktionieren. Hier sind die protected pageFolien ohne Reduktion/Bearbeitung durch Acrobat.

Übungen

Die Übungen vertiefen den Stoff der Vorlesung.  Es besteht keine Anwesenheitspflicht für die Übungsstunden. Fragen zu den Übungs- und Bonusaufgaben sollen aber generell dort 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

Das Study Center ist in der vorlesungsfreien Zeit dienstags von 3-5 geöffnet (Link unverändert) am 5. 1., 12. 1., und 19. 1.

Wir bieten ein freiwilliges "Study Center" an, dieses ist montags 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, die keine oder wenig Programmiererfahrung haben.  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.

Das Study Center ist ein Experiment -- bitte geben Sie uns Feedback.

 

Das Schutzkonzept der ETH erfordert eine Beschränkung der Teilnehmerzahl der Präsenzveranstaltung; seit dem 26. Okt. 2020 sind Präsenzvorlesungen eingestellt.  Wenn Sie der Vorlesung online folgen müssen (oder wollen), dann haben Sie zwei Optionen:

  1. Sie verfolgen den Livestream des Raumes (ML D28).  Die Aufzeichung finden Sie dann am Folgetag auf dem Videoportal des Departements Informatik.  (ETH Login erforderlich)
  2. Sie machen bei der Zoom Session mit.  Die Zugangsdaten für Zoom werden per eMail allen eingeschriebenen Studierenden mitgeteilt (d.h., Sie haben die Veranstaltung belegt). Die protected pageZoom Aufzeichnung sollte bald nach der Veranstaltung verfügbar sein.  Bitte geben Sie diese Informationen nicht weiter.

In beiden Fällen empfehlen wir, vor der Vorlesung die (ungefähren) Vorlesungsfolien herunterzuladen. Während der Vorlesung wird bei Bedarf ein 2. Projektor verwendet -- dieser kann nicht übertragen werden. Aber Sie können in den Unterlagen lokal auf Ihrer Platform blättern.

Zoom Hinweise

Sie sollten auf Ihrem System den Zoom Client (5.3) installieren.  Der Zugang zur  Veranstaltung wird erst kurz vor dem Start geöffnet -- bis dann müssen Sie im "Warteraum" bleiben.  Verwenden Sie bitte Ihren richtigen Namen (und ändern diesen nicht während der Session).

Stellen Sie Ihr Mikrofon ab -- es könnten über 400 andere Studierende in der selben Session mitmachen.

Wenn Sie  einen Text Beitrag  (z.B., Antwort oder Frage) machen wollen, so verwenden Sie das Chat Fenster.  Nur der Dozent kann Ihren Text lesen.  Wenn Sie mit dem Dozenten reden wollen, so schicken Sie bitte auch eine Chat Nachricht und eine eMail Nachricht.  Es ist möglich dass der Dozent mit Ihnen erst nach der Vorlesung Kontakt aufnehmen kann.  (Wir müssen den Hörsaal nach der Vorlesung freigeben.)

Bitte beachten Sie, dass der Einsatz von Zoom nicht offiziell unterstützt wird (das "Einführung in die Programmierung" Team macht dies aber weil wir hoffen, Ihnen so das Mitmachen zu erleichtern).

Je nach Ihren lokalen Einstellungen werden die "Participants" und "Chat" Fenster anders plaziert.

Sollten Sie sich nicht mit der Zoom Session verbinden können, so schicken Sie bitte eMail an den Dozenten. (Diese wird aber erst nach der Vorlesuing gelesen.)  

Die Vorlesung benutzt die Programmiersprache Java (Version 11) und die Übungen (wie auch die Prüfung) verwenden Eclipse als Entwicklungsumgebung (IDE). Als Betriebssystem 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, 103 KB) für die Installation der Arbeitsumgebung.  Sie können die Arbeitsumgebung gerne vor Beginn des Semesters installieren.  

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 nur einfache Java/C/C++ Programme ohne Klassen gesehen haben) und vor Beginn des Semesters noch Zeit haben, dann können Sie hier  (folgt)  eine langsame Einführung finden. Bitte installieren Sie Java wie unter (1) beschrieben.

Auch der Inhalt dieses Moduls 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) [nicht in Europa erhältlich]  aber die 4. Auflage (2016) geht auch. 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