252-0027 Einführung in die Programmierung - Herbstsemester 2021/22 Department Informatik ETH Zürich - ETH Zürich

Die Seite wird erstellt Melanie Keller
 
WEITER LESEN
252-0027 Einführung in die Programmierung - Herbstsemester 2021/22 Department Informatik ETH Zürich - ETH Zürich
252-0027
Einführung in die Programmierung
Herbstsemester 2021/22

Thomas R. Gross

Department Informatik
ETH Zürich
©Thomas Gross 2020, 2021
252-0027 Einführung in die Programmierung - Herbstsemester 2021/22 Department Informatik ETH Zürich - ETH Zürich
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
252-0027 Einführung in die Programmierung - Herbstsemester 2021/22 Department Informatik ETH Zürich - ETH Zürich
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
252-0027 Einführung in die Programmierung - Herbstsemester 2021/22 Department Informatik ETH Zürich - ETH Zürich
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
252-0027 Einführung in die Programmierung - Herbstsemester 2021/22 Department Informatik ETH Zürich - ETH Zürich
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
252-0027 Einführung in die Programmierung - Herbstsemester 2021/22 Department Informatik ETH Zürich - ETH Zürich
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
252-0027 Einführung in die Programmierung - Herbstsemester 2021/22 Department Informatik ETH Zürich - ETH Zürich
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