Gestern fand also unser diesjähriger Schüler-Technik-Tag statt.
Und – ich sag’s euch gleich – nächstes Jahr wird es keinen Schülertag geben. Den nächsten sehe ich für die Faschingsferien 2021 vor. Das muss genügen. Schließlich verursacht so ein unproduktiver Tag Aufwand und Kosten. Da kann man die Zeitabstände dazwischen etwas verlängern.
Was mich durchaus ergrimmt hat, ist, dass zwar 18 Jugendliche angemeldet waren, aber nur zehn tatsächlich gekommen sind. Die waren dann allerdings umso motivierter.
Ich muss mir überlegen, was ich das nächste Mal machen kann, um die Präsenzquote zu erhöhen.
Ich hatte die Veranstaltung initiiert und vorbereitet, übertrug aber dann die Durchführung zu einem wesentlichen Teil an Werner, da mir die Zeit sonst noch enger geworden wäre.
In den letzten Jahren hatten wir teilweise zwei Sessions parallel, aber diesmal plante ich nur einen Vortrag bzw. Vorführung gleichzeitig. Mehrere Sessions zur selben Zeit sind zwar sonst immer recht gut angekommen, brauchen aber einfach zu viele Resourcen, so dass ich das Veranstaltungsformat vereinfachte und auch die Dauer insgesamt verkürzte.
Ich selbst referierte am Vormittag über eine Stunde lang über SW-Entwicklung (einschließlich einer kleinen Demonstration von Evalyze, meiner KI-Software), und stand in der Mittagspause zeitweise für Fragen zur Verfügung.
Kurzzeitig ließ sich auch Carsten mal blicken, verschwand aber gleich wieder.
Als am Nachmittag die Führung durch das Entwicklungslabor anstand, wurde die Schülergruppe geteilt, und ich übernahm es, einer Teilgruppe das Labor zu zeigen.
Im Internetzeitalter ist es fast unmöglich geworden, Jugendliche noch zu beeindrucken. Als ich ihnen aber am Ossi ein paar Lissajous-Figuren und Schwebungen zeigte, waren sie jedoch schon begeistert, so dass ich ihnen erlaubte, selbst ein wenig am Funktionsgenerator und am Poti herumzuschalten.
Einer der Jungen fragte mich, ob ich meinen Doktor in Informatik oder Elektrotechnik gemacht hätte, und erstarrte fast ehrfürchtig, als ich antwortete: „Weder noch, sondern in Mathematik. Studiert habe ich aber Physik.“
Beim abschließenden Get-Together wurden erst die richtig interessanten Fragen gestellt. Einer der Schüler erzählte, dass sein älterer Bruder Informationstechnik studiert. Kürzlich hatte er eine Programmieraufgabe als Übung auf. Ich weiß nicht, ob aus Zufall oder Absicht – jedenfalls hatte dieser Schüler auf seinem Smartphone den genauen Wortlaut der Aufgabe dabei: Zunächst sollte per Zufall eine Folge von Nullen und Einsen erzeugt werden, und zwar in der Anzahl, die der Anwender interaktiv eingeben musste. Jeweils zwei aufeinanderfolgende dieser Ziffern sollten zu einer zusammengefasst werden, und zwar zu 0, wenn beide gleich, und 1, wenn sie unterschiedlich sind. Der Schüler (bzw. sein Bruder) hatte bereits herausgefunden, dass sich dies mit einer XOR-Verknüpfung bewerkstelligen lässt. In weiteren Durchgängen sollte der Ablauf wiederholt werden, bis nur noch eine Ziffer übrig blieb. Wie der Schüler berichtete, hatte sein Bruder die Aufgabe gelöst, sofern es sich bei der Anzahl (innerhalb eines Durchgangs) um einer gerade Zahl handelt [bzw. um eine Zweierpotenz bei der Anfangseingabe – Anmerkung der Programmierschlampe].
Ich ließ mich hinreißen, diesen, sowie zwei weitere interessierte Schüler, mit in mein Büro (für mehr wäre es zu eng gewesen) zu nehmen, um ihnen live die Lösung der Aufgabe zu demonstrieren.
Eine Konsolenanwendung hatte ich schon lange nicht mehr geschrieben, aber in diesem Fall begnügte ich mich damit.
Ich las also zuerst die Eingabe ein, alloziierte entsprechend Speicherplatz für ein Array (aus chars, also 8 bit, obwohl 1 bit auch gereicht hätte), und initialisierte dieses mit dem jeweils least significant bit einer Zufallszahl. Während der Student angeblich mehrere Arrays benutzt hatte, genügte mir eines, bei dem ich die vorderen Plätze jeweils überschrieb (und die hinteren Plätze zwar noch vorhanden, aber irrelevant wurden): x[i] = x[2*i] ^ x[2*i+1]
Die einzelnen Durchläufe innerhalb einer While-Schleife, bis nur noch eine Ziffer übrig ist. Um eine ungerade Anzahl von Ziffern innerhalb eines Durchlaufs zu behandeln, fügte ich schließlich noch eine If-Abfrage hinzu. Der Aufgabentext machte keine Aussage darüber, was mit diesem „Überschuss“ genau zu tun sei. Ich schwankte, ob ich das letzte Bit mit 0 verxoren (was auf NOT hinauslaufen würde, bzw. die Subtraktion von 1) solle, entschloss mich schließlich, das letzte Bit einfach zu kopieren.
Die Schüler schauten mir genau zu, wie ich ziemlich flott programmierte, dann den ersten Probedurchlauf startete. Dass dabei durchaus Fehler auftraten, ist eben so und Entwickleralltag. Also ließ ich sie zusehen, wie ich debugge, dabei merke, wo etwas nicht passt, und daraufhin den Code modifiziere, bis letztendlich das Programm allem Anschein nach fehlerfrei durchläuft.
Was sie dabei lernen konnten, ist ein konstruktiver Umgang mit den eigenen Fehlern. Selbst ein geübter Programmierer macht durchaus Fehler, aber mit ausreichend Erfahrung findet er ganz schnell heraus, wo sie liegen, und bereinigt sie fast intuitiv. Bei solchen Aufgaben weiß man einfach, wo man hinfassen muss, ohne viel bewusst darüber nachdenken zu müssen. Wer die Programmiererei verinnerlicht hat, löst so eine Aufgabe fast automatisch.
Aus Fehlern lernt man. Wer es schafft, den gleichen Fehler nicht zu wiederholen, hat viel erreicht.
du hast sehr recht. ich kenne das auch noch aus meinen programmierzeiten. allerdings waren meine aufgaben anfassbarer im ergebnis.
LikeLike
Jeder Programmierer hat mal angefangen. Die meisten mit ähnlich einfachen Aufgaben.
Ein anderes Beispiel wäre gewesen die Berechnung des Wochentages bei Eingabe von Tag, Monat und Jahr.
LikeGefällt 1 Person
ich habe cobol die rekursion beigebracht 🙂 war auch spannend.
LikeLike
Cool!
LikeGefällt 1 Person
das war 1986 und ich war stolz wie oskar 🙂 danke
LikeGefällt 1 Person
Mit Cobol hatte ich nie zu tun. Aber deinen Stolz verstehe ich gut.
LikeGefällt 1 Person
ja, wenn man konzeptionelle barrieren überwindet ist das schon besonders 😉
LikeGefällt 2 Personen
Ich finde es gut, dass den wirklich Interessierten richtig gezeigt wird, wie im RL ein Stück Software-Entwicklung aussieht. Das Demonstrieren im Rahmen eines Vortrages ist eine völlig andere Perspektive und hat mit dem Beruf nicht wirklich etwas zu tun. Genau wie eine Schukung meistens dort aufhört, wo später die Arbeit anfängt.
LikeGefällt 1 Person
Diese Live-Demo kam spontan.
Es war wohl auch der Reiz der Sache, dass ich mich auf eine unbekannte Aufgabe gar nicht hätte vorbereiten können.
Ja, diese Schüler waren wirklich interessiert, und ich hoffe, dass ich sie dadurch auch bei ihrer Berufswahl unterstützen konnte.
LikeGefällt 1 Person
Das Programm (des Tages – incl. des Schreibens des Programms^^) klingt sehr gut – und ehrlich gesagt: Wenn Du die restlichen acht noch da gehabt hättest und die mit ihrer Demotivation die anderen mit erwischt hätten, wäre wahrscheinlich nicht so viel dabei herausgekommen.
LikeGefällt 1 Person
Das kann sein. Einer hatte sich ja wenigstens wegen Krankheit entschuldigen lassen.
Die anderen fehlenden hatten sich wohl nur angemeldet, um sich an einem schulfreien Tag je nach Laune die Option offenzuhalten. Solche Leute brauche ich nicht wirklich. Es wäre halt besser gewesen, wenn sich diese Schüler gar nicht erst angemeldet hätten.
LikeGefällt 1 Person
Es steht außer Frage, dass knappe, begehrte Plätze zu reservieren, nur um sich Optionen offen zu halten, inakzeptables Verhalten darstellt!
LikeLike
Einen gewissen Schwund muss man wohl einkalkulieren.
Es ist mir nur bisher keine praktikable Möglichkeit eingefallen, diesen Schwund zu reduzieren. Schließlich möchte ich keine (im Voraus zu leistende) Teilnehmergebühr erheben.
LikeGefällt 1 Person
Überbuchen und dann Abweisen ist auch keine Option. Das machen ja die Fluggesellschaften.
LikeGefällt 1 Person
Vielleicht würde es etwas bringen, die Anmeldeprozedur aufwendiger zu gestalten.
Wer eine halbe Stunde geopfert hat, um ein Formular auszufüllen, wird die Gelegenheit dann wohl auch tatsächlich wahrnehmen.
LikeGefällt 1 Person
Pingback: Twitteriger Zwiespalt //2397 | breakpoint
Pingback: No-Events, @home //2478 | breakpoint