Informatik am GA

Informatik-Kurs der S-Stufen am Gymnasium Altona

Liebe S2-/S4-SchülerInnen,
hier die Materialien und unterrichtsbegleitende Links. Der Verlaufsplan dient zur Orientierung. Wir beginnen mit der Programmiersprache Python.
Bei Fragen/Problemen mailen (s. Überblick), eigenes Material ist immer herzlich willkommen und wird hier veröffentlicht.
Dazu haben wir noch ein Blog (Registrieren nicht vergessen ;-)

Verlauf der Reihe

Informatik-Kurs am GA (2019/20)
Datum Reihe Stundenthema Texte/Material
2. HJ Mathematik & Python Materialsammlung aus Edmund Weitz, Konkrete Mathematik (nicht nur) für Informatiker, Hamburg 2018: Stellenwertsystem, modulare Arithmetik, Primzahlen, Neuronale Netze
11.03. - 07.04. - Machine Learning Wer hat Lust auf den Deep Learning-Kurs auf OpenHPI (11.03. - 07.04.)? Löwis-Kurs und Mathekenntnisse auf Abiturniveau sind die Voraussetzungen

Tipp für ML in Python (unabhängig vom Kurs): Importieren der Libraries

für Di 26.05. Kryptographie RSA in a nutshell am Beispiel Dialog der Schwestern
n=681,
e=151.

Gesucht ist: cd mod n

must read: Uni Flensburg, RSA-Verschlüsselung.

Wir brauchen:

  1. Weitz, Primfaktorzerlegung, mit 681 als zu zerlegender Zahl.
  2. Eine zum Eulerschen Phi teilerfremde Zahl e: makePublicPrivateKeys.py, Zeile 24 - 30.
  3. d, das modulare Invers von e, geht im Kopf (d*151%452=1).
Di 14.04. (home office) Data Science Hier eine Einführung in Pandas (aus edx, IBM - Introduction to Data Science): Introduction to Pandas Python.
Für die Data Science-Leute: importiert covid-death.csv und wertet es in Pandas aus. Vergleicht with und without underlying conditions etc.
Hier noch eine von mir geschriebene Einführung: CSV-Dateien in Pandas auswerten
Di 07.04. (home office) Kryptographie Wdh.: Hier siehst du einen verschlüsselten Text. Schreibe eine Funktion (brute force), die den entschlüsselten Text zurückgibt: Station - Kryptoanalyse beim Verschiebeverfahren.
Für die Cracks: importiere Sweigarts detectEnglish.py (s. Anhang auf IServ), adaptiere das Modul für ein deutsches Wörterbuch (oder nimm einen englischen Text - egal)
Mo/Di 30./31.03. (home office) Corona & Python In Pandemien spielt das exponentielle Wachstum eine entscheidende Rolle. In SZ online, Alle Daten zur Pandemie. lest ihr unter "Woran lässt sich erkennen, ob die Trendwende erreicht ist?" über die Verdoppelungsraten in bestimmten Zyklen (3 Tage, 7 Tage). Hier die Aufgabe Verdoppelungszyklen in Pandemien, gefragt ist - you've guessed it - eine Python-Funktion, die tagesgenau angibt, was die Autoren beschreiben.

Lösung: zyklen.ipynb
Zum Editieren entweder in Google Colab öffnen oder in Jupyter Notebook kopieren

Diagramme mit matplotlib.pyplot: Screenshot exp. Wachstum Corona (Klick auf thumb = Vollbild): thumb
23.03. Klausur S4 Corona-bedingt fällt die Klausur aus. Evtl. Ersatzleistungen und Noten werden per Mail und tel. mit jedem Einzelnen besprochen. Dazu wurde Mail an S4 am 18.03., 14:09 Uhr verschickt. Bitte auch in Spam-Folder gucken.
16.-29.03. Corona-bedingt bitte Aufgaben zu Hause erledigen. Bei Fragen mailto:Gebhard Dettmar
Mo/Di 23./24.03. (home office) Kryptographie Modulare Arithmetik: Wende die modulare Arithmetik in Weitz, S. 33 - 38, auf Sweigarts caesarCipher.py an Hier Sweigarts caesarCipher.py: Source Code for the Caesar Cipher Program, Chapter 5. Ab Zeile 32: Handle wraparound, if needed: - mache diesen Abschnitt überflüssig durch entprechende Modifikation der Zeilen 28 und 30.
Mo/Di 16./17.03.(home office) Klausurübung - Wiederhole vom 19.11. an:
  • ggt mit Modulo
  • Konversion binär - dezimal & vice versa
  • Caesar Ver-/Entschlüsselung & Brute Force
  • Transposition Cipher
  • RSA-Algoritmus
Mo/Di 24./25.02. Kryptographie Forts. Transposition Cipher: Hier The Shorter Sweigart ;-)
Mo/Di 17./18.02. (18. leider Uni-Tag) Kryptographie Transposition Cipher: Schreibe ein Programm, das einen Text auf eine bestimmte Anzahl von Spalten verteilt und spaltenweise zusammensetzt Hier die Erläuterungen von Sweigart: Cracking Codes with Python, Chapter 7
Mo/Di 10./11.02. Kryptographie Caesar Cipher: Schreibe ein Programm, das einen Brut-Force-Angriff auf einen mit einem Dir unbekannten Schlüssel verschobenen Text startet Tipp: Beginne mit
for i in range(1, len(alphabet)):
Das i liefert Dir die möglichen Verschiebeschlüssel.
Vergleiche mit CaesarCipher.py von Al Sweigart: crypto.7z.
Mo/Di 27./28.01. Mathematik & Python Wiederhole Cäsar-Verschlüsselung. Ver- und entschlüssele beliebige Sätze mit beliebigen Vielfachen von 26 (27 mit Leerzeichen) Weiter mit Kapitel "Modulare Arithmetik" im Weitz

Für Dictionaries mit Buchstaben-/Worthäufigkeit schaut Euch defaultdict an:
from collections import defaultdict
d=defaultdict(int)
(=die values sind Integers)

Mo 20.01 (Sek I-Konferenzen)/21.01. Mathematik & Python Zufallszahlen für die Verschlüsselung von Sätzen s.u.
Mo 13.01 (14.01. fällt aus) Mathematik & Python Zunächst mal die "Schwestern": wenn satz='ichbinbianca' -> zahlen='139 289 112 496 1335 612 80 2063 365 508 133 53'.split(), dann schreibe das Programm für satz = ' ', das satz='ichbinbianca' zurückgibt.
Carsten Elsner, Der Dialog der Schwestern
Mo/Di, 06./07.01. Mathematik & Python Wir machen jetzt Mathe ;-)
Stellenwertsystem: Schreibe ein Programm, das Dezimalzahlen in Dual-, bzw. jede beliebige andere Basis umrechnet.
Algorithmus für Dualzahlen: Dezimalzahl = 19
19 / 2 = 9, Rest 1
9 / 2 = 4, Rest 1
...
Letzter Teiler ist immer 1, Rest 1
Ergebnis invertieren, Ansatz wieder einmal hier: Sequentielle Datentypen
Mo/Di, 16./17.12. Kryptographie Asymmetrische Verschlüsselung
Frage: Bei Hempel ist d der private Schlüssel. Was ist das d bei Elsner?
Ansonsten: Programm für die letzte Chiffre schreiben.
Carsten Elsner, Der Dialog der Schwestern
Timo Hempel, Einführung Kryptologie
Mo/Di, 09./10.12. Python Textdateien einlesen, Zufallsnoten vergeben
Wörter aus Textdateien zählen (cf., wie Prof. Löwis in 3.4.1 Zufallswürfe zählt)
with open('/...path_to_file/namen.csv', 'r') as f:
        namen=f.read()
        namen=namen.split()

Python Doc: 7.2. Reading and Writing Files
Mo/Di, 02./03.12. Kryptographie mit Python Caesar-Cipher:
  • Alphabet als String importieren mit from string import *,
  • String erstellen mit alphabet=ascii_lowercase+' ',
  • Index finden mit alphabet.find('d') --> 3,
  • Buchstaben finden mit alphabet[3] --> 'd'.
Schreibe ein Programm, das einen von Caesar einzugebenden Text mit dem Verschiebungswert S codiert, e.g. "gallia est omnis divisa in partes tres" ;-) Lies dazu:
must read: Sequentielle Datentypen
Di, 26.11. Python Mauseingaben, OpenHPI 4.4.1 - 3; Verschlüsselung Hinweis: onclick() in CodeOcean --> onscreenclick() in Idle
Verschlüsselung: Die Caesar-Chiffre
Di, 19.11. Python ggt mit Modulo Erweiterter euklidischer Algorithmus (aus der Reihe Zahlentheoretische Algorithmen der Kryptografie)
Mo, 04.11. Python Klausurrückgabe S3 Klausur
Lösungsblatt
Di, 29.10. Python Klausurrückgabe S1 Klausur
Lösungsblatt
Mo, 30.09. / Di, 01.10. Python Klausurtraining. Tipp: Für Turtlegraphik -> Logo mit Python (s. rechte Spalte) OpenHPI: Fragen Woche 2 und 3 (halb),
Für die Klausur: Fragen und Antworten Woche 2 und 3 (halb),
Turtlegraphik: Logo mit Python.
Für Klausur: Python portable auf USB-Stick mithaben
Mo, 12. / Di, 13.08. Python MOOC: Prof. Dr. Martin v. Löwis, Spielend Programmieren lernen. OpenHPI-Kurs von 2015. Python runterladen (Link s.u.), Aufgaben aus Woche 1 bis 1.4.3 in Python schreiben, auf USB-Stick / Code Ocean parat haben und vorne am Rechner mit Beamer dem Kurs vorstellen können.
Informatik-Kurs am HSG (2013/14)
Mi, 07.08. Think Python How to Think Like a Computer Scientist: Python. Alte Ausgabe mit interaktiver python-shell, leider alte Python-Version. Python runterladen (Link s.u.), Aufgaben aus Downey, Think Python, Chapter 2, Variables, expressions and statments, 2.12 Exercises lösen, in Python schreiben, auf USB-Stick o.ä. parat haben und vorne am Rechner mit Beamer dem Kurs vorstellen können.
Mi, 14.08. Think Python Stunden addieren mit Modulus: Problemlösen mit Python Programm aus Aufg. 3 mit korrekter Addition und Stundenausgabe (mit print) zu Ende schreiben. Für die Cracks: Schreibe das Programm so, dass ich beliebige Werte für Stunde und Minute eingeben kann. Tipp: raw_input() ist dein Freund, hier die Beschreibung
Mi, 21.08. Think Python vorauss.: Stunden addieren mit: raw_input(); Think Python, Chapter 3, Functions 3.16 Exercises 3.3 (alle), + 3.4 (die Guten :p)
guckt mal, was ich gemacht habe (3.3): def rechts(s):
    print s
rechts('_'*(70-len('allen')) + 'allen')

So ist das aber nicht gemeint ;-)
Mi, 28.08. Think Python HA besprechen; Think Python, Chapter 4, Functions Exercises 4.3, 1-5
Mi, 04.09. Think Python Das Haus vom Nikolaus (mit Pythagoras); Einstieg Chapter 5 macht was mit "conditional statements"
Mi, 11.09. Think Python (Stunde fällt aus wg. Klassenfahrt) Chapter 5, 5.8 Recursion Exercise 5.3. Fermat's Last Theorem
Mi, 18.09. Think Python Wdh. Chapter 5, 5.8 Recursion; Rekursion mit TurtleWorld s.o.
Mi, 25.09. Think Python Fruitful functions, Factorials + Recursion Gesamtes Kapitel durcharbeiten, inkl. Code-Schreiben; erholen :)
Mi, 16.10. S1 erscheint nicht!
Mi, 23.10. S1 erscheint nicht!

relevante Links (wird fortgesetzt):

Viel Erfolg und viel Spaß im Kurs

Zurück zu Überblick und zu Start

Valid HTML 4.01 Transitional     CSS ist valide!