GymInf Modul "Programmiersprachenkonzepte"

Start Date End Date
03 August 2020 05 August 2020

External Link

GymInf program

Participants

  • Matthias Hauswirth

Programmiersprachenkonzepte

Monday, August 3 to Saturday, August 8, we will host the Swiss German high school informatics teachers in the "Programming Language Concepts" module of the GymInf program at USI in Lugano.

This course is part of the GymInf program for future high school informatics teachers.

Description (German)

Es gibt eine unglaubliche Vielfalt von Programmiersprachen. Diese Sprachen bauen auf einigen fundamentalen Konzepte auf deren Verständnis für die Programmierung—und besonders für den Programmierunterricht—von grosser Bedeutung ist.

Nachdem die Module «Programmierung 1» und «Programmierung 2» die Imperative Programmierung—basierend auf der Idee der Turing-Maschinen—und die darauf aufbauende Objekt-Orientierte Programmierung behandeln, führt dieses Modul die komplementäre Funktionale Programmierung—basierend auf der Idee des Lambda-Kalküls—ein und behandelt Konzepte wie Reinheit, Funktionen als Werte, Lambdas, Komposition, Continuations, und Monade. Wir behandeln danach das sprachübergreifende Konzept der Typen (Statische und Dynamische Typensysteme; Algebraische Datentypen: Summen-, Produkt-, und Exponential-Typen; Vererbungs- und Parametrische Polymorphie) und generell die Idee einer Formalen Semantik für Programmiersprachen und die didaktische Idee der Notionalen Maschinen.

Learning Objectives (German)

Implementation einfacher Programme in funktionalem Stil; Refaktorisierung zwischen imperativen und funktionalen Programmen Unterscheidung zwischen statischen und dynamischen Typsystemen; Identifikation und Programmierung mit algebraischen Datentypen; Programmierung mit Parametrischer und Vererbungs-Polymorphie Interpretation fundamentaler Sprachkonzepte mit formellen Semantik-Regeln; Verwendung von Notionalen Maschinen zur Erklärung von Sprachkonzepten

Prerequisites / Dependencies (German)

Das Modul setzt grundsätzliche Programmierkenntnisse (z.B. aus dem Modul «Programmierung 1») voraus. Es baut im zweiten Teil auch auf Kenntnissen der objekt-orientierten Programmierung (z.B. aus dem Modul «Programmierung 2») auf.