M323 Funktional Programmieren

KompetenzbandHZGrundlagenFortgeschrittenErweitert
A – Unterschiede zwischen funktionaler Programmierung und anderen Programmierparadigmen aufzeigen1A1G: Ich kann die Eigenschaften von Funktionen beschreiben (z.B. pure function) und den Unterschied zu anderen Programmierstrukturen erläutern (z.B. zu Prozedur)A1F: Ich kann das Konzept von immutable values erläutern und dazu Beispiele anwenden sowie dieses Konzept funktionaler Programmierung im Unterschied zu anderen Programmiersprachen erklären (z.B. im Vergleich zu referenzierten Objekten)A1E: Ich kann aufzeigen, wie Probleme in den verschiedenen Konzepten (OO, prozedural und funktional) gelöst werden, und diese miteinander vergleichen
B – Anforderungen und Design der deklarativen Programmierung beschreiben1B1G: Ich kann den Unterschied zwischen imperativer und deklarativer Programmierung erklären und die Elemente des Functional Design benennen (z.B. immutable data types, constructors, composable operators)B1F: Ich kann deklarative Anforderungen formulieren und für eine Problemstellung ein Functional Design entwerfenB1E: Ich kann Anforderungen und Design einer imperativen Lösung in eine deklarative Lösung transferieren und die Vor- und Nachteile beider Ansätze begründet bewerten
C – Funktionale Programmierung umsetzen2C1G: Ich kann einen Algorithmus erklärenC1F: Ich kann Algorithmen in funktionale Teilstücke aufteilenC1E: Ich kann Funktionen in zusammenhängende Algorithmen implementieren und deren Struktur auf Korrektheit und Lesbarkeit analysieren
C2G: Ich kann Funktionen als Objekte behandeln (in Variablen speichern, weitergeben) und die grundlegenden Higher-Order Functions (Map, Filter, Reduce) einzeln auf Listen anwendenC2F: Ich kann Funktionen als Argumente einsetzen, Lambda-Ausdrücke schreiben und Map, Filter sowie Reduce kombiniert verwenden, um komplexere Datentransformationen durchzuführenC2E: Ich kann Higher-Order Functions, Lambda-Ausdrücke und Funktionskomposition einsetzen, um komplexe Datenverarbeitungsaufgaben zu lösen und den Programmfluss zu steuern (z.B. Aggregation, Sortierung nach benutzerdefinierten Kriterien)
D – Refactoring und bestehenden Code optimieren3, 4D1G: Ich kann Refactoring-Techniken sowie Massnahmen zur Leistungsverbesserung aufzählen und deren Zweck erklärenD1F: Ich kann Refactoring-Techniken anwenden, um Code lesbarer zu machen, und vorgegebene Massnahmen zur Leistungsverbesserung umsetzenD1E: Ich kann die Auswirkungen des Refactorings einschätzen, unerwünschte Nebeneffekte vermeiden und geeignete Algorithmen oder Datenstrukturen auswählen, um die Leistung zu verbessern
Änderung vorschlagen GitHub