====== Kompetenzübersicht ====== Wortlaut gemäss [[.:kompetenzraster|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){{topic>M323-A1B&simplelist}} | **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){{topic>M323-A1I&simplelist}} | **A1A:** Ich kann aufzeigen, wie Probleme in den verschiedenen Konzepten (OO, prozedural und funktional) gelöst werden, und diese miteinander vergleichen{{topic>M323-A1A&simplelist}} | | **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){{topic>M323-B1B&simplelist}} | **B1I:** Ich kann deklarative Anforderungen formulieren und für eine Problemstellung ein Functional Design entwerfen{{topic>M323-B1I&simplelist}} | **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{{topic>M323-B1A&simplelist}} | | **C** – Funktionale Programmierung umsetzen | 2 | **C1B:** Ich kann einen Algorithmus erklären{{topic>M323-C1B&simplelist}} | **C1I:** Ich kann Algorithmen in funktionale Teilstücke aufteilen{{topic>M323-C1I&simplelist}} | **C1A:** Ich kann Funktionen in zusammenhängende Algorithmen implementieren und deren Struktur auf Korrektheit und Lesbarkeit analysieren{{topic>M323-C1A&simplelist}} | | ::: | ::: | **C2B:** Ich kann Funktionen als Objekte behandeln (in Variablen speichern, weitergeben) und die grundlegenden Higher-Order Functions (Map, Filter, Reduce) einzeln auf Listen anwenden{{topic>M323-C2B&simplelist}} | **C2I:** Ich kann Funktionen als Argumente einsetzen, Lambda-Ausdrücke schreiben und Map, Filter sowie Reduce kombiniert verwenden, um komplexere Datentransformationen durchzuführen{{topic>M323-C2I&simplelist}} | **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){{topic>M323-C2A&simplelist}} | | **D** – Refactoring und bestehenden Code optimieren | 3, 4 | **D1B:** Ich kann Refactoring-Techniken sowie Massnahmen zur Leistungsverbesserung aufzählen und deren Zweck erklären{{topic>M323-D1B&simplelist}} | **D1I:** Ich kann Refactoring-Techniken anwenden, um Code lesbarer zu machen, und vorgegebene Massnahmen zur Leistungsverbesserung umsetzen{{topic>M323-D1I&simplelist}} | **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{{topic>M323-D1A&simplelist}} | ---- Quelle des Wortlauts: [[https://www.kompetenzmatrix.ch/informatiker/cluster-api/m323/|Kompetenzmatrizen ZH – M323]], Lizenz [[https://creativecommons.org/licenses/by-nc-sa/4.0/|CC BY-NC-SA 4.0]].