252-0027 Einführung in die Programmierung - Herbstsemester 2021/22 Department Informatik ETH Zürich - ETH Zürich
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
252-0027 Einführung in die Programmierung Herbstsemester 2021/22 Thomas R. Gross Department Informatik ETH Zürich ©Thomas Gross 2020, 2021
Vorlesung Logistik § Im Hörsaal Präsensvorlesung Mit Übertragung in ML E12 Mit Übertragung im LiveStream § LiveStream Übertragung § www.lst.inf.ethz.ch für Details (für alles!) § Übungen Präsenzveranstaltung § Online Gruppe(n) 2
Hybrid Vorlesung § Im Hörsaal Präsensvorlesung § Stellen Sie Fragen! § Bitte eine persönlichen Gespräche § Remote Übertragung § Fragen via Chat § Quiz – noch offen 3
Hybrid Vorlesung § Im Hörsaal Präsensvorlesung § Stellen Sie Fragen! § Bitte eine persönlichen Gespräche § Remote Übertragung § Fragen via Chat § Quiz – noch offen § Hybrid lectures: schwierig für Dozent und Studierende § Gründe +: Schutz und Präsens bereichert 4
Hybrid Vorlesung § Im Hörsaal Präsensvorlesung § Stellen Sie Fragen! § Bitte eine persönlichen Gespräche § Remote Übertragung § Fragen via Chat § Quiz – noch offen § Hybrid lectures: schwierig für Dozent und Studierende § Gründe -: Half the fun for twice the pain 5
Eine (persönliche) Bitte § Eingeschriebene Studierende: 506 (16.9., 17:00) § Videoübertragung vom D28 à E 12 § Aufzeichnung § Im D 28/E 12 keine Gespräche! § Wenn Sie SMS/Omlet/Threema/WhatsApp/Messenger nutzen: § Leise o.k. 6
Das Programm für heute «Educators, generals, dieticians, psychologists, and parents program. Armies, students, and some societies are programmed.» Alan Perlis (Foreword to «Structure and Interpretation of Computer Programs», H. Abelson and G. J. Sussman, 1985) Für uns: Allgemeinste Form des Programmieren: «Computer Programming» 7
Das Programm für heute § Warum Programmieren lernen? § Bezug zum Informatikstudium an der ETH § Praktische Aspekte § Übungen § Computer(räume) § Wie wir die Lernziele erreichen ... 8
Warum Programmieren lernen? 9
10
11
Warum Programmieren lernen? § Was ist überhaupt «Programmieren» § Programmieren –> Programm § Programm: griechisch prógramma = schriftliche Bekanntmachung, Aufruf; Tagesordnung [Duden] § Programm(ausführung) manipuliert Symbole § Text, Zahlen, Bilder, … 13
Warum Programmieren lernen? § Was ist überhaupt «Programmieren» § Programmieren –> Programm § Programm: griechisch prógramma = schriftliche Bekanntmachung, Aufruf; Tagesordnung [Duden] § Programmieren (Zusammenfassend): Software Entwicklung § Programmierung behandelt alle Aspekte – von Entwurf bis Installation 15
Tag des Programmierers [from Wikipedia] Der Tag des Programmierers (russisch День программиста) ist ein russischer Gedenktag, der am 256. Tag des Jahres begangen wird.[1] Das ist der 13. September; in Schaltjahren jedoch der 12. September. [..] Der Tag des Programmierers ist ein „beruflicher Gedenktag“. Russland hat einige dieser Gedenktage, an denen jeweils die Spezialisten eines bestimmten Berufes geehrt werden. Diese sind aber keine arbeitsfreien Tage.[2] 16
Programmieren § Erstellen eines Programms § Programm: Folge von Anweisungen, die von einem Computer ausgeführt werden (können) § Programm realisiert einen Algorithmus § Algorithmus: beschreibt Schritt-für-Schritt wie eine Aufgabe gelöst wird 17
Programmierung und Informatik § Ein Thema der Informatik – es gibt auch andere § Zentral wenn Sie lernen wollen, wie die Informatik ein Problem angeht § Fokus auf «Möglichkeiten und Grenzen der maschinellen Informationsverarbeitung» § Es gibt «unmögliche» Probleme § Kosten der Berechnung (einer Lösung) sind sehr wichtig 18
Programmierung «Programming as universal activity» by Vinton Cerf, CACM March 2016, vol 59(3) p 7 § analyzing problems § breaking them down into manageable parts § finding solutions § integrating the results 19
Programmierung «Programming as universal activity» by Vinton Cerf, CACM March 2016, vol 59(3) p 7 § Probleme analysieren § Probleme in (beherrschbare) Teilprobleme zerlegen § Lösungen finden § Ergebnisse zusammenfügen/kombinieren 20
Vinton Cerf (*1943) Ph.D. UCLA (1972) Assistant Professor Stanford (1972-76) Program Manager (D)ARPA (1976-82) Zusammen mit Bob Kahn massgeblich an der Entwicklung von TCP/IP beteiligt (Internet Protokoll) Nach 1982 diverse Positionen in Industrie & Verbänden, seit 2005 VP Google Dr. h.c. ETH 1998 Schlagfertig beantwortete Vint Cerf die teilweise ziemlich kritischen Fragen des ETH-Publikums.(2006) http://web.ethlife.ethz.ch/articles/campuslife/vintcerf.html 21
Programmierung § Lösungen finden: für andere Menschen § Beschreiben wie eine Lösung aussehen soll § Lösungen finden: für eine Maschine § Anweisungen für eine Maschine/Computer § Beschreibung, Anweisung: in einer «Sprache» 23
Wie Programmieren lernen? § Programm: Folge von Anweisungen, die von einem Computer ausgeführt werden (können) § Wir müssen verstehen welche Anweisungen der Computer ausführen kann § Dann Erstellen der Folge von Anweisungen § Mögliche Anweisungen: Programmiersprache 24
Einführung in die Programmierung § Müssen eine Programmiersprache verwenden § Sprache für Computer (führt aus) § ... schreibt § Sprache für Menschen (schreibt, liest) § ... selten führt aus (heute) 25
Einführung in die Programmierung § Müssen eine Programmiersprache verwenden § Sprache für Computer (führt aus) § ... schreibt Heute: Maschine Früher: § Sprache für Menschen (schreibt, liest) Berufsbezeichnung § ... selten führt aus (heute) § Charles [Peirce] was appointed to his first official position in the Coast Guard Survey [..] in July 1861, as an assistant computer at $ 35 per month. (J. Brent, Charles Sanders Peirce: A Life. 1993. p 61) 26
Einführung in die Programmierung § Müssen eine Programmiersprache verwenden § Wir verwenden Java™ § «Industrial strength» Sprache § Viele Konzepte § Nicht alle werden in «Einf. in die Programmierung» vorgestellt/verwendet § … diese werden auch nicht für die Prüfung erwartet § Mehr Themen/Konzepte in weiteren Vorlesungen 28
Programmieren § Wie kann man Programmieren lernen? § Braucht man eine besondere Begabung? § Gibt es nur Naturtalente (und der Rest kann zuschauen)? § Wie kann man XXXX lernen? 29
Jede(r) kann programmieren lernen § Ziel der Vorlesung: Kompetenz § Lernziel: Sie können korrekte Programme systematisch erstellen § Programmieren ist zentrales Thema der Informatik § Aber nicht das einzige! § Wichtig sind: § Aufmerksamkeit § Imagination, Phantasie § Übung 33
Diese Veranstaltung § Vorlesungen (ML D 28) § Dienstag 10 – 12 § Freitag 8 – 10 (ausserdem Do 30. 9. & ?? 1. 10. 14 – 15, ETF F5) § Übungen (diverse Räume) § Mittwoch 8 – 10 § Donnerstag 8 – 10 (nur für Interdisziplinäre Naturwissenschaften) 35
Informationen § Web Seiten der Gruppe (Laboratory for Software Technology) www.lst.inf.ethz.ch § Im ETH Corporate Design – nicht immer sofort online § Manchmal auch gar nicht erreichbar 36
Auf unserer Web Seite finden Sie § Folien (wenn möglich vor der Vorlesung aber keine Garantie) § Achtung: 1 Seite/Slide § Drucken Sie 2, 4, 6 Seiten pro Blatt A4 Papier § Besser: drucken Sie nicht … § In der Vorlesung geschriebene Folien (Auswahl) § Vielleicht 24h-48h nach der Vorlesung § Diverse Links (zu Video Portal, Material der Übungsgruppen, Aufgabenstellungen) 37
Informationen § Auf dem Videoportal der ETH § Aufzeichnung des übertragenen Livestreams § Nur Hauptprojektor § Die Vorlesung wird aufgezeichnet § Daher … 38
Veranstaltung = Vorlesung + Übung § Programmieren erfordert Übung § Nur Übung macht den Meister … § Sie lernen nicht programmieren wenn Sie sich nur die Vorlesung anhören § Sie müssen die Übungsaufgaben lösen (oder es zumindest versuchen) 40
Visionen Dez 2020 42
Visionen Dez 2020 45
Übungen § Aufgabenblätter § Werden über Web Seite publiziert § In der Übungsgruppe vor-besprochen § Eine Gelegenheit zu lernen! § Praxis Übungen § Bonus Übungen § Teilnahme an Übungsgruppe nicht verbindlich aber sehr empfohlen § Es gibt selten nur eine Lösung § Üben Sie das Diskutieren und Vergleichen verschiedener Lösungen 46
Praxis und Bonus Übungen § Werden teilweise automatisch korrigiert § «Automatisch» – durch einen Computer § d.h. durch ein Programm, das von einem Computer ausgeführt wird § Hinweis: Ihr Java Programm wird nicht direkt ausgeführt, die Java Anweisungen werden übersetzt (durch einen Compiler) § Analyse des Programms § Selbe Technologie hilft bei der Bewertung von Programmen § Thema der Forschung 47
Praxis Übungen § Sie können die Lösungen im Internet (wahrscheinlich) finden § Musterlösung aus früheren Jahren § Langweilen die Assistierenden § Eine Gelegenheit zu lernen! § Besprechung in der Gruppe, Feedback, Überarbeiten 48
Bonus Übungen § Sie können (ab 4. oder 5. Aufgabenblatt) «Bonuspunkte» für die Basisprüfung sammeln § Bonuspunkte helfen die Note anzuheben § Maximalnote auch ohne Bonus erreichbar § Programmieren ist Teil der Basisprüfung § Details später. 49
Übungen vs. Prüfungserfolg (WS 19/20) 7.0 6.0 Course grade 5.0 4.0 3.0 2.0 1.0 0.0 0.00 0.05 0.10 0.15 Bonus 0.20 0.25 53
Dank an R Meier & M Faes für die Graphik. (Session Herbst 16/17) Übungen vs Prüfungserfolg (WS16/17) 54
[REP] Bonus vs. Programmierteil der Prüfung (WS19/20) 7.000 6.000 5.000 Programming 4.000 3.000 2.000 1.000 0.000 0.000 0.050 0.100 0.150 0.200 0.250 0.300 BP Fail BP Success Bonus 55
Brauchen Sie einen Computer ? § Im Prinzip nein (Sie können die Systeme im CAB H56/57 oder im HG benutzen) § Irgendwann vielleicht schon … § Das Projekt Neptun bietet diverse Notebooks / Laptops zu günstigen Konditionen http://www.projektneptun.ch § Fenster bis 4. Oktober § Nächstes Fenster Anfang Frühjahrsemester 56
Diese Veranstaltung § Fragen (an den Dozenten) sind immer erlaubt und erwünscht § Fragen Sie nicht die Nachbarin/den Nachbar § Wie kann ich wissen was Ihnen Schwierigkeiten macht (oder was Sie nicht lesen können)?? § Chat besser als Hand heben: der Text muss nicht perfekt sein § Auch off-line sind Fragen möglich § eMail -- aber bitte mit Ihrer student.ethz.ch Adresse! § Online Sprechstunde bei Interesse 57
Informationen § Wir benutzen verschiedene Systeme, Ihnen Informationen (insbesondere Programmfragmente o. ä.) zukommen zu lassen. § Daher müssen wir wissen wer Sie sind …. 58
Wichtig: Bitte belegen Sie die Vorlesung in myStudies. Sonst können wir Sie nicht erreichen und Sie haben nicht Zugang zu Aufgaben, usw. Unbedingt bis Freitag den 24. 9., 12 Uhr mittags! 60
Wieviel müssen Sie im 1. Semester arbeiten? 65
1 ECTS Kredit = 30 Std/Semester 7 Kredits = 210 Std/Semester 1 Sem = 23 Wochen 210 Std/23 Wochen = 9 Std/Woche 30 Kredits = 900 Std/Semester …. 39 Std/Woche Hmmm -- 39 Std/Woche?? Vielleicht im Film. Oder an der XXX Universität. Erwarten Sie mehr Arbeit an der ETH!! 67
Wie Programmieren lernen? § Programm: § Folge von Anweisungen, die von einem Computer ausgeführt werden (können) § Folge von Anweisungen, die von einem Menschen gelesen werden § Mögliche Anweisungen: Programmiersprache § Sprache: erlaubte Folge von Anweisungen, Werten (Zahlen), … 69
0027 "Einführung in die Programmierung" § Wir verwenden Java™ § “Industrial strength” Sprache § Fangen wir also an ... § Aufgabe: Berechnen Sie den Durchschnitt von 2 Messwerten § Algorithmus (wenn wir den Ausdruck verwenden wollen): § Addiere die Messwerte § Dividiere die Summe durch 2 71
Sensor1 Sensor2 Durchschnitt D = Calibration + (Sensor1 + Sensor2)/2 Steuerung Ariane-5 © DLR German Aerospace Center / CC BY (https://creativecommons.org/licenses/by/2.0) 72
0027 "Einführung in die Programmierung" § Wir verwenden Java™ § “Industrial strength” Sprache § Fangen wir also an ... § Aufgabe: Berechnen Sie den Durchschnitt von 2 Messwerten § Algorithmus (wenn wir den Ausdruck verwenden wollen): § Addiere die Messwerte § Dividiere Messwerte durch 2 § Dividiere die Summe durch 2 § Addiere die Hälften 73
Sensor1 Sensor2 Durchschnitt D = Calibration + (Sensor1/2 + Sensor2/2) Steuerung Ariane-5 © DLR German Aerospace Center / CC BY (https://creativecommons.org/licenses/by/2.0) 75
Unterschiedliche Formate schaffen Sensor1 Sensor2 weitere Probleme Ariane-5: Details sind etwas Durchschnitt komplizierter aber der 1. Testflug war nicht erfolgreich: Steuerung Ariane-5 © DLR German Aerospace Center / CC BY (https://creativecommons.org/licenses/by/2.0) https://www.youtube.com/watch?v=5tJPXYA0Nec 77
Ein trivialer Algorithmus § … und trotzdem einige Probleme beim Programmieren § Müssen genau festlegen, welche Formate (und Wertebereiche) erwartet werden § Erstes Thema: Wie können wir Formate beschreiben? § Dazu im Hintergrund: Arbeitsumgebung einrichten 78
80
82
Weiterer Ablauf (Plan) § 24. 9.: 8:15 (Fr): Vorlesung § 28. 9.: 10:15 (Di): Vorlesung § 30. 9.: 14:15 (Do): Vorlesung [ETA F5, Keine «Algorithmen und Datenstrukturen» zu dieser Zeit] § 1. 10.: 8:15 (Fr): Vorlesung § 7. 10.: Vielleicht 14:15 (Do): Vorlesung § Mittwoch/Donnerstag nächste Woche: 1. Treffen der Gruppen § Thema: Arbeitsumgebung einrichten 83
Vorschau § 1. Übung (21. 9. -> 29. 9.): Einrichten der Arbeitsumgebung § Keine Abgabe – wir wollen Ihnen helfen schnell arbeiten zu können § Bei Problemen ggf. in der Gruppe einrichten § Sprechstunde am 22. 9. nutzen § 2. Übung (29. 9. -> 6. 10.): «Abgabe» durchspielen, einfache Aufgabe § So erhalten Sie auch Feedback § 3. Übung (6. 10. -> 13. 10.): einfachste Programme § 4. oder 5. Übung: Bonuspunkte möglich (später mehr) 84
Sie können auch lesen