Kompetenzübersicht

Wortlaut gemäss Kompetenzraster (offizielle Kompetenzmatrix ZH). Unter jeder Kompetenz sind die Wiki-Seiten verlinkt, die sie abdecken.

Kompetenzband HZ Beginner (B) Intermediate (I) Advanced (A)
A – Unterschiede zwischen funktionaler Programmierung und anderen Programmierparadigmen aufzeigen 1 A1B: Ich kann die Eigenschaften von Funktionen beschreiben (z.B. pure function) und den Unterschied zu anderen Programmierstrukturen erläutern (z.B. zu Prozedur) A1I: 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) A1A: 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 beschreiben 1 B1B: 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) B1I: Ich kann deklarative Anforderungen formulieren und für eine Problemstellung ein Functional Design entwerfen B1A: 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 umsetzen 2 C1B: Ich kann einen Algorithmus erklären C1I: Ich kann Algorithmen in funktionale Teilstücke aufteilen C1A: Ich kann Funktionen in zusammenhängende Algorithmen implementieren und deren Struktur auf Korrektheit und Lesbarkeit analysieren
C2B: Ich kann Funktionen als Objekte behandeln (in Variablen speichern, weitergeben) und die grundlegenden Higher-Order Functions (Map, Filter, Reduce) einzeln auf Listen anwenden C2I: Ich kann Funktionen als Argumente einsetzen, Lambda-Ausdrücke schreiben und Map, Filter sowie Reduce kombiniert verwenden, um komplexere Datentransformationen durchzuführen C2A: 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 optimieren 3, 4 D1B: Ich kann Refactoring-Techniken sowie Massnahmen zur Leistungsverbesserung aufzählen und deren Zweck erklären D1I: Ich kann Refactoring-Techniken anwenden, um Code lesbarer zu machen, und vorgegebene Massnahmen zur Leistungsverbesserung umsetzen D1A: Ich kann die Auswirkungen des Refactorings einschätzen, unerwünschte Nebeneffekte vermeiden und geeignete Algorithmen oder Datenstrukturen auswählen, um die Leistung zu verbessern

Quelle des Wortlauts: Kompetenzmatrizen ZH – M323, Lizenz CC BY-NC-SA 4.0.