Programming for prospective educators (using Scratch) - unit 4

Aus ZUM-Unterrichten
Version vom 19. Juni 2023, 08:54 Uhr von WenkBruno (Diskussion | Beiträge) (Erstellt)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)


| ⇠ back to main page | ⇠ unit 1 | ⇠ unit 2 | ⇠ unit 3 | unit 4 |


==Guidance for students (Open Document Format ODF)==

Handout for teachers

Objectives
  • The students shall understand a simulation as a way of searching a solution for a problem.

They will analyse and test the provided example of the simulation of a robotic lawnmower.

The students supplement the simulation example with an algorithm that they will develop on their own.

They shall understand the block concept which is used for a clear outline of programs.

Introduction

A computer simulation is a program that models a system (e.g. the streets in a neighbourhood with high traffic volumes) and shows (often with a visualisation) how the simulated system behaves under different conditions (e.g. if speed limit 30 was introduced, or if some streets were converted to one-way streets). Computer simulations are useful, for example, when experiments with the real system of interest are too costly, too dangerous or even impossible. And even when experiments are possible, comparison with simulations often helps to better understand the behaviour of the individual components of a system.
In this lesson, the students analyse the example of a simulation program for a lawn mowing robot. They supplement the program with a self-developed algorithm that causes the robotic lawnmower to "return" to its box at the end of the simulation. The students learn about and apply the concept of structuring programs with blocks.
The sequence of lessons might be started with an advance organiser: Who knows of robotic lawnmowers or hoovers from experience (at home, from neighbours, etc.)? Do these robots mow or hoover the lawn or room completely, right down to the last corner around all obstacles? Can this be proven, estimated or verified? What do you think about a simulation?


Getting familiar with the example program

BildschirmaufnahmeMähroboterSimulation.png


For this lesson, the students need the program (project) "RobotLawnMowerSimulation-Template". It is published on the Scratch platform and can be downloaded from there to one´s own computer: https://scratch.mit.edu/projects/694607927
The program simulates a robotic lawnmower on a plot of land with shrubs. When the lawnmower touches an obstacle (a shrub, the edge of the plot), it backs up a bit and then rotates through a random angle between 15 and 30 degrees. Then the lawnmower continues straight ahead until it touches another obstacle.
The students should start the program several times and take a screenshot of the simulation result. When the students compare the paths of the lawnmower, they should realise that the results differ and understand why this is so.
Although the simulation always ends after the same number of steps (the algorithm is terminating), the result of the program is always different. The result of the program execution is non-determined: In each simulation, the paths are different and the robotic lawnmower ends up in a different place.
But is the algorithm at least robust, i.e. does it still work reliably when the execution conditions change?
The students must understand what an algorithm is. They need to take note of the terms terminating, non-determined and robust. Thus they should become aware of the fact that an algorithm does not necessarily always give exactly the same solution when one runs it several times.
The students should modify the program in order to assess the results of the simulation under different conditions. For this purpose, they place an additional obstacle (house) on the "plot" .
The students must adjust the relevant execution condition in the block "Mowing" so that the robotic lawnmower recognises the house as an obstacle.


CodeSequenzHindernisErkennen.png


Perhaps the students need support in this step. They should make sure that the robotic lawnmower doesn't "mow through the house".


Das Blockkonzept zur Gliederung von Programmen

Das Skript des Simulationsprogramms ist sehr einfach.


SkriptSimulationsprogramm.png


Das Skript umfasst zwei Blöcke: «initialization» und «mowing». Die einzelnen Befehle für die Initialisierung bzw. die Steuerung des Mähroboters sind als eigene Blöcke definiert. Die Gliederung in Blöcke macht das Programm übersichtlich.
Die SuS sollen erkennen, dass mit (Skript-) Blöcken gegliederte Programme übersichtlicher und leichter zu verstehen sind. Sie sollen deshalb die nachfolgende Erweiterung des Simulationsprogramms in Form eines Blockes realisieren.


Den Algorithmus zur Steuerung des Mähroboters erweitern

Der Rasenmäher bleibt nach der Anzahl vorgegebener Schritte irgendwo stehen. Der Rasenmäher sollte am Ende aber wieder in die Box zurück fahren.
Die SuS sollen einen Algorithmus entwerfen, der den Rasenmäher zur Box zurück führt und dazu den Block «returnToBox» definieren.
Diese Aufgabe ist nicht trivial. Der Algorithmus für die Rückkehr des Rasenmähers zur Box muss wie der Algorithmus zum Mähen das «Umfahren» von Hindernissen ermöglichen. Während der Algorithmus zum Mähen nicht determiniert ist, muss der Algorithmus für die Rückkehr zur Box immer das gleiche Ergebnis liefern, also determiniert sein. Der Algorithmus zum Mähen kann deshalb nicht einfach kopiert werden. Anhand dieses Beispiels können die SuS ganz grundsätzliche Überlegungen zu Algorithmen diskutieren.
Die SuS sollen ihren Algorithmus testen. Vielleicht wäre es vorteilhaft, mit den SuS vorgängig mögliche Teststrategien zu diskutieren. Der Rasenmähers bleibt ja am Ende der Simulation an einer zufälligen Position stehen; genügen da einige wenige Versuche, um den Algorithmus für die Rückkehr zur Box zu testen? Oder wäre es vorteilhaft, den Rasenmäher «von Hand» an einigen ausgewählten Stellen zu positionieren und zu testen, ob er mit dem selbst entworfenen Algorithmus zur Box zurückkehrt?
Die grundsätzliche Frage bezüglich der Korrektheit von Programmen wird auf jeden Fall in der abschliesenden Reflexion (noch einmal) aufgeworfen.


Reflexion
  • Diskutieren Sie den Nutzen der Simulation aus der Sicht eines Unternehmens, das Mähroboter anbietet, und aus der Sicht einer Person, die einen Mähroboter anschaffen will.
  • Wahrscheinlich ist bei keiner Simulation, die Sie gemacht haben, der «Rasen» vollständig «gemäht» worden. Müssen wir akzeptieren, dass auch mit Computern nicht für alle Probleme vollständig befriedigende Lösungen gefunden werden können? Müssen wir auf Garantien für Programme verzichten?
  • Sind Ihnen weitere Anwendungsbereiche bekannt, in denen Simulationen nützlich oder sogar nötig sind?
  • Diskutieren Sie mögliche Risiken, die bei der Übertragung von Simulationsergebnissen in die Realität auftreten könnten.


Autoren: Bruno Wenk, Dieter Burkhard


==Diskussion (im ZUMpad)== https://zumpad.zum.de/p/ProgrammierenITBO-Teil4


INDEXIEREN