Einführung in die Programmierung (252-0027)

Ankündigungen & aktuelle Informationen

28. März 2024 Alle Studierenden, die sich für die  Prüfungseinsicht gemeldet haben, sind kontaktiert worden. Wenn Sie keine eMail bekommen haben, so melden Sie sich bitte direkt  beim Dozenten.

1. Feb. 2024  Alle zur Prüfung angemeldeten Studierenden haben per eMail Raum und Startzeit der Prüfung zugeschickt bekommen. Sollten Sie keine (oder mehr als eine) eMail Nachricht bekommen haben, so melden Sie sich bitte beim Dozenten.  (Auch alle Anmeldungen für ein US Keyboard Layout wurden bestätigt.

26. Jan. 2024 Alle zur Prüfung angemeldeten Studierenden haben per eMail Informationen bzgl. US Keyboards und Study Center erhalten.

15. Dez. 2023 Das Study Center findet heute (und auch nächste Woche) nicht statt. 

14. Nov. 2023 Ab dieser Woche ist das Study Center freitags von 16:15 -- 18:00 im CAB H 52 geöffnet.  Kommen Sie mit Fragen und Programmierproblemen ... eine Anmeldung ist nicht nötig (und auch nicht möglich). Weitere Informationen finden Sie im Tab "Übungen und Study Center".

17. Okt. 2023 Die DownloadRegeln für die Bonusaufgaben (PDF, 119 KB) (Aufgaben durch deren Bearbeitung Sie einen Bonus für die Prüfung erwerben können, siehe Vorlesungsverzeichnis)  wurden an alle eingeschriebenen Studierenden verschickt.  Mit dem Einreichen der Lösung einer Bonusaufgabe erklären Sie, dass Sie diese Regeln zur Kenntnis genommen und befolgt haben.

29. Sept. 2023 Am 24. Okt. findet keine Vorlesung der "Einführung in die Programmierung" statt. Statt dessen gibt es im ML D28/E12 eine Vorlesung der "Algorithmen und Datenstrukturen" (als Ersatz für den Tausch am Anfang des Semesters).

22. Sept. 2023 Die Vorlesung wird per Livestream nur im Gebäude in den ML E12 übertragen. Die Deadline für das Eintragen/Wechseln von Übungsgruppen ist bis Sonntag 24. Sept. verlängert. Machen Sie (in Ihrem Interesse) "Load Balancing" für die Assistierenden. Die Raumangaben können sich noch ändern, abhängig von Einschreibungen und Platz/Raum Verfügbarkeit.

18. Sept. 2023 Erstes Aufgabenblatt (U0) hochgeladen (Einrichten der Arbeitsumgebung). Falls Sie damit Probleme haben, so können Sie im Study Center am Mittwoch 20.9. 16:15--18:00 [CAB H53] oder Freitag 22. 9. 12:15--14:00 [CAB H52] Hilfe bekommen. 

17. Sept. 2023 Bitte schreiben Sie sich in myStudies für die Vorlesung ein. Wir können Sie sonst nicht  erreichen.

13. Sept. 2023  Die Übungen finden zum ersten Mal am 27. Sept. statt.  Es gibt in der ersten Semesterwoche kein Treffen der Übungsgruppen.  Einschreibung in eine Übungsgruppe ist ab dem 19. Sept. Nachmittag möglich.  Beachten Sie  die Hinweise unter "Übungen und Study Center" weiter unten.

1. Juni 2023  Herzlich willkommen.  Dies ist die Web Seite für die Vorlesung im Herbst 2023/24.  

Hier finden Sie Informationen über den (freiwilligen) Vorkurs.  Die Seiten der  Vorlesung des letzten Jahres (Herbst 2022) 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. Die Vorlesung im D28 wird aufgezeichnet.

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

Die Übungen finden statt

  • Mittwoch 16:15 – 18: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: . Bitte geben sie die eMail Adresse an, über die wir Sie am besten erreichen können. Sie können auf diese Weise auch einen Termin mit dem Dozenten vereinbaren (eine Sprechstunde findet nur nach Bedarf statt).

Hauptassistent der Vorlesung: ???

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.

protected pageAlle Folien dese Semesters (protected pagekomprimiert) in einer PDF Datei.

Übungen

Die Übungen vertiefen den Stoff der Vorlesung. Sie können sich ab Dienstag (19.9.) Nachmittag in eine Übungsgruppe einschreiben. Wir bieten verschiedene Arten von Gruppen an: 

  • "Fokusgruppen" mit Fokus auf  Studierende ohne Vorkenntnisse und ohne vorherige Programmiererfahrung (egal welche Programmiersprache). 
  • "Gemischte Gruppen" (für alle  Vorkenntnisstufen).
  • "Repetierenden Gruppe"  für repetierende Studierende, die weniger Zeit auf einfache Übungen verwenden wollen.  Diese Gruppe ist ein Experiment und kommt nur zustande, wenn sich genügend Studierende in diese Gruppe einschreiben. Falls es nicht genügend Studierende gibt, dann wird diese Gruppe als gemischte Gruppe geführt.

Alle Gruppen behandeln den selben Stoff (und auch die selben Bonusaufgaben -- siehe weiter unten) und bereiten Sie gleich auf die Prüfung vor. In einer Fokusgruppe sollten alle Studierenden davon ausgehen, dass alle Gruppenmitglieder ebenso  wenig oder keine  Programmiererfahrung haben.

  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.  Schreiben Sie sich nicht in eine andere Gruppe ein nur weil die gewünschte Art z.Zt. voll ist.  Versuchen Sie es etwas später noch einmal.
  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.   

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 Mitstudierenden 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 Mittwoch Morgen und die Lösungen müssen bis zum Dienstag Abend (23:59) der Folgewoche via git abgegeben werden. Im Treffen der Übungsgruppe am Mittwoch Nachmittag werden die Aufgaben ggf. besprochen oder Fragen beantwortet.  Am 15. 11. und 29. 11. werden die Bonusaufgaben erst am Dienstag Abend der Folgewoche  (also am 21.  11. bzw. am 5. 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 Dienstag 21. 11. und 5. 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 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.  Sie können das Study Center auch besuchen um dort vor Ort die Übungsaufgaben zu lösen und sich bei Schwierigkeiten Hilfe holen.

 

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 im ML E12 verfolgen.  Eine Übertragung ausserhalb dieser Räume wird leider nicht unterstützt, aber die Vorlesung wird aufgezeichnet.  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