1.2 Algorithmische Problemlösung – Unterrichtsmaterial
Sorting Networks (Netzwerk-Sortieren) – Unplugged Informatikunterricht
Eine klassische Unplugged-Unterrichtseinheit zum Thema Sortiernetzwerke und parallele Algorithmen, bei der Schülerinnen und Schüler physisch auf einem mit Kreide gezeichneten Netzwerk Algorithmen ausführen. Dabei werden grundlegende Konzepte wie algorithmisches Denken, Abstraktion, Zerlegung und parallele Verarbeitung anschaulich vermittelt.
Graphentheorie und Algorithmen: Tiefensuche, Breitensuche und Dijkstra
Das Lehrmaterial behandelt grundlegende Konzepte der Graphentheorie wie Adjazenzlisten und Graphendarstellungen. Es führt praxisnah durch wichtige Algorithmen wie Tiefensuche (DFS), Breitensuche (BFS) und Dijkstras Algorithmus zur Bestimmung kürzester Wege.
Algorithmen und Datenstrukturen: Sortieren und Suchbäume
Ausführliche Vorlesungsnotizen und Erklärungen zu klassischen Sortieralgorithmen wie Bubblesort, Selection Sort, Insertion Sort und Heapsort sowie zu binären Suchbäumen und deren Traversierung. Das Material vermittelt die theoretischen Grundlagen und Laufzeitanalysen (O-Notation) für effiziente Datenverarbeitung.
Imperative Programmierung und Algorithmisches Problemlösen mit Python und Scratch
Umfassendes Unterrichts- und Lehrmaterial zur imperativen Programmierung und algorithmischen Problemlösung. Es deckt sowohl grundlegende Konzepte wie Variablen, Kontrollstrukturen und Funktionen mit Python als auch visuelles Programmieren mit Scratch ab.
Einführung in die Informatik für das Gymnasium
Dieses umfassende Dokument bietet eine strukturierte Einführung in grundlegende Informatikthemen für das Gymnasium, einschliesslich algorithmischer Problemlösung, Datendarstellung und Systemarchitektur. Es enthält verschiedene theoretische Erklärungen sowie anschauliche Beispiele.
DynaTraffic: Einstiegs-, Fortgeschrittene und Weiterführende Aufgaben
Umfassendes Aufgabenblatt zur Simulation von Markov-Ketten und dynamischen Systemen mit dem Programm DynaTraffic. Die Schülerinnen und Schüler analysieren Übergangswahrscheinlichkeiten, stationäre sowie periodische Zustände und das Verhalten von Verkehrssystemen.
Simulationen: Game of Life
Dieses Unterrichtsmaterial führt Schülerinnen und Schüler anhand des berühmten 'Game of Life' von John Conway in das Konzept von Simulationen, Verhaltensregeln und Populationsentwicklungen ein. Die Lernenden experimentieren mit verschiedenen Startmustern im Webbrowser, dokumentieren ihre Beobachtungen und präsentieren ihre Erkenntnisse in der Gruppe.
MultiKara: Programmieren lernen mit Objekten und Robotern
MultiKara ist eine erweiterte Java-Lernumgebung (basierend auf dem bekannten Kara-Robotersystem), die spielerisch die objektorientierte Programmierung vermittelt. Lernende steuern Marienkäfer durch verschiedene Aufgabenwelten und lernen dabei Algorithmen, Kontrollstrukturen und objektorientierte Konzepte anzuwenden.
Tic Tac Toe in Java
Ein umfassendes Unterrichtsmaterial zur objektorientierten Programmierung in Java anhand des Spiels Tic Tac Toe. Es behandelt schrittweise Themen wie AWT-GUIs, Interfaces, Event Handling, Exceptions und File I/O durch praktische Programmierübungen.
Ein Kartentrick – was steckt dahinter? Unterrichtseinheit zur algorithmischen Problemlösung
Diese Unterrichtseinheit für das Gymnasium untersucht einen klassischen Kartentrick aus mathematischer und informatorischer Sicht. Die Lernenden erlernen den Trick, nutzen ein Java-basiertes Simulationsprogramm zum Experimentieren und analysieren die zugrundeliegenden Codierungs- und Problemlösungsprinzipien.
Turtle Invaders: Spiel-Programmierung in Python
Dieses Unterrichtsmaterial führt Schritt für Schritt in die Entwicklung eines Arcade-Spiels im Stil von Space Invaders mit Python und dem Turtle-Modul ein. Dabei werden grundlegende Programmierkonzepte wie Ereignissteuerung, Animationen, das global-Keyword sowie die Unterscheidung zwischen immutablen primitiven Datentypen und mutablen Listen behandelt.
Multi-Modus Roboter mit BBC micro:bit und Maqueen
Dieses Projektmaterial führt Schritt für Schritt durch den Bau eines intelligenten, ferngesteuerten Roboters mit zwei micro:bit-Mikrocontrollern. Die Schülerinnen und Schüler lernen anhand von Challenges, wie man Zustandsmaschinen, Event-Loops, Funkkommunikation und Sensorik in Python kombiniert.
Das Monty-Hall-Problem
Das Material stellt das berühmte Ziegenproblem anschaulich vor, erklärt die mathematische Logik dahinter mit Tabellen und intuitiven Beispielen und fordert die Lernenden auf, die Strategie durch eine Computersimulation in Python zu überprüfen.
Solange-Schleifen: while
Dieses umfassende Unterrichtsmaterial führt anschaulich in die Verwendung von while-Schleifen in Python ein. Es behandelt Themen wie bedingte Wiederholungen, Endlosschleifen, break-Anweisungen und typische Stolpersteine wie Off-by-one-Fehler anhand von Alltagsbeispielen und Programmierübungen mit Lösungen.
Objektorientierte Programmierung (OOP) Grundprinzipien in Python
Dieses Unterrichtsmaterial führt anhand eines durchgehenden Geometrie-Projekts in Python in die vier Grundprinzipien der objektorientierten Programmierung ein: Abstraktion, Vererbung, Datenkapselung und Polymorphie. Es enthält Definitionen, Analogien, Programmieraufgaben und vollständige Code-Lösungen.
Funktionen in Python definieren und anwenden
Dieses Unterrichtsmaterial führt in die Erstellung und den Aufruf von Funktionen in Python ein. Anhand konkreter Beispiele wie dem Satz des Pythagoras und der Lösung quadratischer Gleichungen wird gelehrt, wie Argumente, Keyword-Argumente und Rückgabewerte sinnvoll eingesetzt werden.
Space Police (Advent of Code)
Eine Programmieraufgabe im Rahmen des Advent of Code, bei der ein Roboter gesteuert und simuliert werden muss, der mittels eines Intcode-Programms Rasterfelder auf einem Raumschiff einfärbt und sich darauf bewegt.
Advent of Code - Day 6: Lanternfish
Eine klassische Programmieraufgabe aus dem Advent of Code, bei der das exponentielle Bevölkerungswachstum von Laternenfischen simuliert werden muss. Die Aufgabe eignet sich hervorragend zur praktischen Problemlösung und dem effizienten Design von Algorithmen in der Informatik.
Aufwandsanalyse von Sortieralgorithmen
Das Unterrichtsmaterial führt in die Aufwandsanalyse von klassischen Sortieralgorithmen wie Selectionsort, Insertionsort, Bubblesort und Quicksort ein. Die Lernenden zählen Vergleiche, betrachten Best- und Worst-Case-Szenarien und analysieren die Kostenfunktionen in Abhängigkeit von der Problemgröße.
Laufzeitverhalten von Sortieralgorithmen
Das Material führt experimentell in die Laufzeitanalyse verschiedener Sortieralgorithmen (wie Selection Sort, Insertion Sort, Bubble Sort und Quicksort) mithilfe von Python ein. Die Lernenden messen systematisch Rechenzeiten, analysieren Gesetzmäßigkeiten und untersuchen den Einfluss verschiedener Implementierungen.
Sortieren durch Zerlegen / Quicksort
Das Unterrichtsmaterial führt den Quicksort-Algorithmus schrittweise ein, beginnend mit einem kooperativen Rollenspiel über die formale Beschreibung als informeller Algorithmus bis hin zur Implementierung und Analyse.
Sortieren durch Aufsteigen / Bubblesort
Das Unterrichtsmaterial führt in das klassische Sortierverfahren Bubblesort ein. Die Lernenden analysieren die Grundidee anhand von Beispielen, beschreiben den Algorithmus, erstellen ein Struktogramm und implementieren den Algorithmus schliesslich selbst.
Umwandlung iterativer Algorithmen in rekursive Algorithmen
Dieses Unterrichtsmaterial behandelt detailliert die Umwandlung von iterativen Algorithmen in rekursive Algorithmen am Beispiel der Potenzfunktion. Es enthält Programmierbeispiele in Python, Analysen von Ablaufprotokollen sowie praktische Programmieraufgaben zur Simulation von Programmausführungen.
Operationen auf natürlichen Zahlen
Dieses Unterrichtsmaterial behandelt die Konstruktion arithmetischer Operationen auf natürlichen Zahlen allein basierend auf der Nachfolger-Operation und rekursiven Reduktionsregeln. Die Lernenden analysieren, erweitern und implementieren diese Funktionen in Python.
Übungen zur Rekursion und Programmentwicklung in Python
Eine Sammlung von Programmieraufgaben und Übungen, bei denen rekursive Algorithmen in Python analysiert, angewendet, schrittweise entwickelt und getestet werden. Die Lernenden nutzen problemreduzierende Ansätze und visualisierende Hilfsmittel wie Aufrufbäume, um rekursive Funktionen für Listenoperationen zu verstehen und zu programmieren.
Der Turm von Hanoi: Strategien und Implementierung
Dieses Unterrichtsmaterial führt Lernende durch die Analyse und algorithmische Lösung des Klassikers 'Turm von Hanoi'. Die Schülerinnen und Schüler erarbeiten rekursive und generalisierte Strategien für mehrere Scheiben und implementieren diese in Code.
Verzweigungen für Grafikkompositionen in Python
Dieses Unterrichtsmaterial führt in die Nutzung von if-else und if-elif-else Verzweigungen zur Erstellung von Grafiken und Mustern in Python ein. Lernende wenden Kontrollstrukturen an, experimentieren mit Lambda-Ausdrücken und üben systematisches Testen und Fehlerbeheben in partnerbasierten Aufgaben.
Sortiernetzwerke als unplugged Parallelaralgoritmus
Dieses Unterrichtsmaterial führt Schülerinnen und Schüler spielerisch und ohne Computer an das Konzept von Sortiernetzwerken und paralleler Algorithmen herankommen. Durch das physische Durchlaufen eines auf den Boden gezeichneten Netzwerks erleben sie algorithmisches Denken, Abstraktion und Deaktivierung hautnah.
Parallel Sorting Networks Unterrichtseinheit
Dieses Unterrichtsmaterial beschreibt eine anschauliche, körperliche Aktivität zur Erkundung von parallelen Algorithmen und Sortiernetzwerken. Die Schülerinnen und Schüler lernen dabei spielerisch und ohne Computer, wie durch gleichzeitige Vergleiche von Werten die Effizienz von Datenverarbeitung gesteigert werden kann.
Binary Search unplugged
Dieses Unterrichtsmaterial beschreibt ein interaktives, physisches Spiel (Unplugged-Aktivität) zum Kennenlernen der binären Suche und der Strategie 'Teile und Herrsche' (Divide and Conquer). Schülerinnen und Schüler lernen durch das Suchen von Zahlen auf Karten, wie man durch Halbierung des Suchraums effizient vorgeht.
Binäre Suche spielerisch entdecken
Dieses Unterrichtsmaterial für eine spielerische Unplugged-Aktivität führt Schülerinnen und Schüler an die binäre Suche und das Prinzip von 'Teile und Herrsche' heran. Anhand von sortierten Karten lernen sie, wie durch geschicktes Halbieren des Suchraums Probleme effizient gelöst werden können.
Sequenziellen Suchalgorithmus spielerisch entdecken
Dieses Unterrichtsmaterial führt Schülerinnen und Schüler anhand eines physischen Suchspiels mit verdeckten Karten in das Konzept der sequenziellen Suche ein. Dabei werden grundlegende Aspekte des algorithmischen Denkens wie Abstraktion, Dekomposition und die Analyse des Worst-Case-Verhaltens erarbeitet.
Little Red Riding Hood Algorithmen und Debugging (CS Unplugged)
Dieses praxisnahe Unterrichtsmaterial vermittelt spielerisch und ohne Computer (Unplugged) grundlegende Konzepte der Programmierung, des Testens und des Debuggings. Anhand eines physischen Rasters und Rollenspielen (Programmierer, Tester, Roboter) lernen die Schülerinnen und Schüler, Algorithmen zu erstellen, Fehler zu identifizieren und inkrementell vorzugehen.
Swiss Olympiad in Informatics 2024 - Second Round Tasks
Eine Sammlung von fortgeschrittenen algorithmischen Programmieraufgaben und Rätseln aus der zweiten Runde der Schweizer Informatik-Olympiade, die sich mit Themen wie Graphentheorie, dynamischer Programmierung und Datenstrukturen befassen.
Accumulators in Recursive Function Design (HtDP)
Dieses Lehrmaterial behandelt das Konzept von Akkumulatoren zur Optimierung und Ermöglichung rekursiver Funktionen. Es zeigt anhand von Beispielen wie Distanzberechnungen und Graphentraversierung, wie der Verlust von Kontextwissen vermieden und die Leistung gesteigert werden kann.
Arbitrarily Large Data and Lists in Programming
Dieses Lehrmaterial behandelt die Verarbeitung von Daten beliebiger Größe mithilfe von Listen und selbstbezüglichen Datenstrukturen. Anhand von Beispielen wird das Entwurfsrezept für rekursive Programme (Templates, Basisfälle, natürliche Rekursion) in einer funktionalen Programmiersprache eingeführt.
How to Design Programs: Arithmetic, Functions and Programs
Dieses Lehrmittel führt grundlegend in die Programmierung mit Racket (BSL) ein. Es behandelt elementare Datentypen, Ausdrücke, Funktionsdefinitionen und das Entwerfen von Programmen anhand praktischer Beispiele wie der Berechnung von Kino-Gewinnen.
Einführung in Python: Grundlagen, Datentypen und erste Programme
Dieses offizielle Python-Tutorial führt in die Grundlagen der Programmiersprache ein. Es behandelt die Nutzung als Taschenrechner, Operationen mit Zeichenketten (Strings), den Umgang mit Listen sowie erste Programmierschritte inklusive Schleifen.
Lesson 6: While-Schleifen und Kontrollstrukturen in Python
Dieses Unterrichtsmaterial erklärt anhand von Codebeispielen und Erklärungen die Verwendung von While-Schleifen, Schleifenkontrollstrukturen wie break und continue sowie Mehrfachzuweisungen in Python.
Prüfung Programming, Automation, Computation
Eine schriftliche Informatikprüfung für Gymnasien, die praxisnahe Aufgaben zu den Themenbereichen Programmierung (Visualisierung mit Google Code Playground), Automatentheorie (KARA und Mustererkennung) sowie Projektmanagement (Marshmallow Challenge) abdeckt.
Backtracking mit Heuristiken
Dieses Unterrichtsmaterial führt anhand eines alltäglichen Beispiels (Websuchen) in das Konzept des Backtrackings ein und vertieft das Thema mit Algorithmen, Laufzeitbetrachtungen und Anwendungsbeispielen wie Labyrinthen und Springerwegen. Dabei werden auch Heuristiken zur Optimierung der Suche, insbesondere die Warnsdorf-Heuristik, besprochen.
Schwierige Probleme in der Informatik: Graphentheorie mit GraphBench
Das Unterrichtsmaterial führt anhand des Plans für ein Stadtfest in Bern in komplexe graphentheoretische Probleme ein. Die Lernenden nutzen die Software GraphBench, um NP-schwere Probleme wie das Hamilton-Kreis-Problem oder Graphenfärbbarkeit zu untersuchen, zu experimentieren und ihre Erkenntnisse zu präsentieren.
JavaKara: Lösungen zu Rekursions-Aufgaben
Das Material enthält kommentierte Programmierlösungen in Java für JavaKara, die sich gezielt mit rekursiven Algorithmen und Problemstellungen wie Labyrinthen, Treppensteigen und dem Durchsuchen von Wegen befassen.
Turing Kara - Lernumgebung zu Turingmaschinen und Algorithmen
Diese interaktive Programmierumgebung (Turing Kara) lässt Lernende den Begriff des Algorithmus und Turingmaschinen spielerisch und praxisnah erarbeiten. Anhand verschiedener Aufgaben wie binärer Addition, Palindromprüfung oder Backtracking schreiben und testen sie schrittweise Befehlsfolgen. Das Material vermittelt fundamentale Konzepte der theoretischen Informatik und des algorithmischen Denkens auf anschauliche Art.
Kara – Programmieren lernen mit der programmierbaren Marienkäfer-Welt
Dieses Materialpaket zum Lernprogramm 'Kara' führt spielerisch in die Grundlagen der Programmierung ein. Schülerinnen und Schüler lernen, den Marienkäfer durch das Ausführen von Befehlssequenzen und das Erstellen eigener Programme (z.B. in Java oder via grafischer Programmierung) über das Spielfeld zu steuern.
Roboter-Programmierung: Aus der Box und durch das Labyrinth
Dieses Unterrichtsmaterial führt Schülerinnen und Schüler schrittweise dazu, reale Probleme in Teilprobleme zu zerlegen und physische Roboter (micro:bit) mithilfe von Programmen und Sensoren durch eine Box und ein Labyrinth zu steuern. Dabei werden Planungsphasen, Block- bzw. Textprogrammierung und Fehleranalysen kombiniert.
Einstieg in SQL mit praktischen Abfragen
Dieses Lehrmaterial bietet eine Einführung in SQL anhand konkreter Praxisbeispiele und Übungen. Behandelt werden grundlegende Befehle wie SELECT, WHERE, ORDER BY, LIMIT, DISTINCT sowie logische Operatoren, Mustervergleiche und Textfunktionen.
Labyrinth und Tiefensuche
Dieses Unterrichtsmaterial führt spielerisch und handorientiert in das Konzept der Tiefensuche sowie des Backtrackings ein. Anhand von Labyrinthen, Rollenspielen und analogen Modellen wie der Lochblende erarbeiten sich die Lernenden algorithmische Problemlösungsstrategien.
Erdbeben weltweit — eine Live-Karte aus echten Daten
In diesem interaktiven Programmierprojekt erstellen Schülerinnen und Schüler eine weltweite Erdbebenkarte mit echtem Datenbezug. Dabei lernen sie, GeoJSON-Daten via API abzufragen, mit Python zu filtern und mithilfe von matplotlib zu visualisieren.