Ich werde in ein paar Wochen an einer Art Tag der offenen Tür an meiner Universität teilnehmen. Als Teil dieser Zeit bekomme ich (zusammen mit einem Kollegen) zwei Stunden lang eine ganze Gruppe von Schülern und ein Computerlabor, das groß genug ist, um sie alle aufzunehmen, und ich muss eine Art von tun Aktivität oder eine Reihe von Aktivitäten mit ihnen, um sie zu ermutigen, Informatik zu machen (idealerweise an meiner Universität, aber im Allgemeinen auch). Ich bin absolut ratlos, was hier zu tun ist, und begrüße alle Vorschläge.
40
Antworten:
quelle
Schauen Sie sich Computer Science Unplugged an . Von ihrer Website:
quelle
Die meisten Informatik-Studenten, die ich kenne, betrachten das Erlernen des Programmierens als den schmerzhaftesten und demoralisierendsten Teil ihrer Ausbildung. Ich würde mich daher von allem fernhalten , was mit der Programmierung selbst zu tun hat. Wie Scphantm bereits betont hat, werden Sie wahrscheinlich auch keine Zeit dafür haben.
Was Sie suchen, ist eine zweistündige Übung, die zwei Ziele erfüllt:
Das erste Ziel ist ziemlich unabhängig von dem, was Sie tatsächlich zeigen werden, und hat viel mehr damit zu tun, ein guter Lehrer / Moderator zu sein. Gute didaktische Praxis, dh das Publikum auf Trab zu halten, kleine Dinge in Gruppen ausprobieren zu lassen, alle 15 Minuten eine Verschnaufpause einzulegen und so weiter.
Das zweite Ziel ist etwas knifflig, und ich denke, dass es hier am besten funktioniert, ein Problem aufzugreifen, das mit dem aktuellen Wissen erklärt werden kann, zu zeigen, wie Sie die Lösung algorithmisch beschreiben können, und dann zu zeigen, wie diese Lösung analysiert werden kann und verbessert.
Ein gutes Beispiel ist das Problem des kürzesten Pfades in Diagrammen, das auch als GPS-Navigationssystem bezeichnet wird. Keine Erklärung nötig. Sie können ihnen eine kleine Karte mit eingezogenen Kantengewichten / -längen und einer Reihe von Buntstiften geben, um den Algorithmus tatsächlich so auszuführen, wie Sie ihn beschreiben.
Sie können dann eine Diskussion darüber beginnen, wie Sie einen kürzesten Weg finden würden, und so weiter. Lassen Sie sie versuchen, ihn als Algorithmus usw. zu formulieren. Dann beschreiben Sie den Dijkstra-Algorithmus und lassen sie die Knoten als besucht , vorläufig und farbig kennzeichnen nicht besuchte Sets. Bam. Du hast einen Algorithmus!
quelle
Wenn Sie nur 2 Stunden Zeit haben, werden Sie nicht viel programmieren. Nur die Syntax zu lernen wird in dieser Zeit schwierig sein, aber es gibt viele Dinge, die stattdessen getan werden können.
Versuchen Sie als Anregung, ihnen die Steuerung des Flusses und die Wichtigkeit der Spezifität beizubringen:
Als Beispielaufgabe stellen Sie einige Wannen mit verschiedenfarbigen Kugeln mit entsprechenden farbigen Papierstreifen an einer anderen Stelle und genügend kleinen Eimern für jedes Roboter / Programmierer-Paar auf. Die Aufgabe besteht darin, den Roboter dazu zu bringen, den Eimer mit Bällen zu füllen. Zu diesem Zweck können jedoch nur Bälle aufgenommen werden, die zu einem bestimmten Papierstreifen passen. Befinden sich in einer Wanne keine Bälle dieser Farbe mehr, muss der Roboter seinen Papierstreifen zurückgeben und einen neuen einsammeln.
Diese Aufgabe erfordert bedingtes Verzweigen, Schleifen, Fehlerbehandlung und prozedurales Denken. Alle Dinge, in denen ein Programmierer gut sein muss, unabhängig von der Sprache oder Aktivität.
Führen Sie so etwas zweimal aus, damit die "Roboter" und "Programmierer" tauschen können. Geben Sie zwischendurch eine kleine Lektion zu den oben genannten Denkmustern, und sie werden in der zweiten viel besser abschneiden, und schließen Sie mit einem kleinen Gespräch über die großen Ereignisse beim Programmieren ab - Besiegen der Nazis, Auf den Mond gehen, das Internet und Sie werden einen Raum mit potentiellen und engagierten Programmierern haben!
quelle
Ich habe viele Programmierer ausgebildet. Wenn Sie nur 2 Stunden Zeit haben, müssen Sie ihnen nicht das Codieren beibringen. Auch ein Computerraum ist nicht erforderlich. Um von Null auf Hallo Welt zu gelangen, verlierst du die Hälfte des Unterrichts und verbringst 45 Stunden deiner 2 Stunden mit Störungen und erledigst nichts.
Vielleicht haben Sie mehr Glück, wenn Sie ihnen zeigen, wie es ist, wie ein Programmierer zu denken. Geben Sie jedem von ihnen einen Block Papier und einen Stift und fordern Sie sie auf, ein Programm in ihrer eigenen Sprache zu schreiben, in dem sie lernen, wie sie ihr Handy vom Schreibtisch nehmen und einen Anruf tätigen können. Gehen Sie ihre Antworten durch. Wenn Ihnen ein Code nicht gefällt, können Sie die Programme durchgehen und ihnen sagen, wie sie besser werden und wie Sie die Details berücksichtigen können, die Sie benötigen. Bitten Sie sie dann, ein Programm mit eigenen Worten zu schreiben, um etwas anderes zu tun. Zieh deine Hose an, putze deine Zähne, öffne eine Tür, was auch immer. Machen Sie dasselbe mit diesem Programm.
Geben Sie ihnen einen Vorgeschmack darauf, wie es ist, wenn man wie ein Programmierer denkt. Sie werden mit Sicherheit mehr davon haben, als wenn Sie versuchen, ihnen in 2 Stunden Python beizubringen.
quelle
Du könntest es mit Alice versuchen . Es ist eine IDE und API für 3D-Animation. Es verfügt über alle möglichen eingebauten Objekte (Kaninchen, Außerirdische, Bäume, Gebäude, ...), die Sie in einer Anfangsszene mit sehr hochstufigen Methoden platzieren können: wie
walk(north)
(die Arme und Beine animieren, während sich die Figur bewegt). undsay("my name is Winky")
was dazu führen könnte, dass eine Comic-Blase aus dem Mund des Charakters kommt.Sie können Tastatur- und Mausereignisse einbinden, um interaktive Aktionen auszuführen.
Die zugrunde liegende Programmiersprache ist Java, aber die IDE bietet Ihnen eine grafische Variante, bei der Sie Teile von Ausdrücken in ein Editorfenster ziehen und dort ablegen. (Sie können keinen Syntaxfehler erstellen.)
Ich denke, Sie könnten alles mit einer Szene voreinstellen, so dass jemand ohne Programmiererfahrung in nur wenigen Stunden etwas Interessantes tun kann.
quelle
Selbst die Codierung in einer Spielzeug- oder Grafiksprache scheint innerhalb einer Stunde weit hergeholt zu sein. Zur Hölle, ich bin mir nicht sicher, ob ich Alice in 2 Stunden wieder abholen und alles tun könnte, was sich lohnt. Vielleicht ein Wochenende, aber keine 2 Stunden.
Ich würde vorschlagen, CS auf das Wesentliche zu reduzieren: Problemlösung und Analyse. Teilen Sie die Gruppe in Teams auf. Nehmen Sie sich 10 Minuten Zeit, um einige allgemeine Rechenprobleme zu beschreiben. Dies sollten einfache Probleme sein, die Menschen mit wenig mathematischem oder CS-Hintergrund leicht erklärt werden können. Beispiele beinhalten:
Nehmen Sie sich weitere 10 Minuten Zeit, um die Aufgabe zu erläutern. Jeder Gruppe wird ein Problem zugewiesen, für das Brainstorming-Lösungen erstellt werden sollen. Das Team hat eine halbe Stunde Zeit, um gemeinsam eine oder mehrere Lösungen für das ihm zugewiesene Problem zu finden. Nehmen Sie sich dann eine Stunde Zeit, um die Lösungen in der gesamten Gruppe durchzugehen, und lassen Sie die Kinder herausfinden, ob sie funktionieren oder nicht, ob es einen schnelleren / besseren Weg gibt, das Problem zu lösen usw.
Wenn die Kinder nicht auf einer richtigen / optimalen Lösung landen, ist das in Ordnung. Geben Sie die Antworten aber nicht einfach weg - das ist absolut kritisch. Der Grund, warum Kinder kein STEM mehr machen, ist, dass Pädagogen den Eindruck erwecken, dass bereits alles herausgefunden wurde. Es wird sehr reife Berater brauchen, damit die Kinder versuchen können, diese Probleme zu lösen und selbst erfolgreich zu sein oder zu scheitern. Auf die richtige Antwort kommt es nicht an. Es geht darum, den Kindern interessante Probleme zu geben und ihnen zu zeigen, worum es in der Informatik geht: Probleme zu lösen und Lösungen auf Richtigkeit und Effizienz zu evaluieren. Den Kindern eigene Antworten zu geben, gibt ihnen ein Gefühl der Eigenverantwortung und hilft ihnen, sich verlobt zu fühlen.
Wenn die Kinder fragen, ob sie eine richtige / gute / bekannteste Antwort erhalten haben, sagen Sie ihnen natürlich die Wahrheit. Aber geben Sie die Antworten nicht einfach weiter, es sei denn, sie kommen aus der Diskussion über die Lösungen der Schülerinnen und Schüler heraus. Zusammenfassen:
quelle
Ich bin jetzt 17 und fing mit dem Programmieren an, als ich 16 wurde. Ich erzähle meine Geschichte und mache dann ein paar Vorschläge: Mein Interesse am Programmieren begann, als ich einem Computertechniker zusah, den ich mit meinen Registern und der Eingabeaufforderung herumgespielt hatte ( obwohl er wollte, dass 500 $ meine BSODs reparierten und ich nicht bezahlte, reparierte ich sie selbst) Also googelte ich "Eingabeaufforderungssprache" und fand heraus, dass es etwas gab, das "Quellcode" genannt wurde und das es Ihnen ermöglichte zu programmieren . Zu der Zeit hatte ich noch keine Ahnung, was C ++ ist. Ich glaube nicht, dass ich jemals davon gehört habe. Also ging ich zu cpp.com (sehr schlechte Tutorials, Sie werden schlechte und veraltete Praktiken lernen) und fing an, die Grundlagen zu lernen. Mein Verstand wurde verrückt und ich erfuhr tatsächlich, dass der Virus, mit dem ich infiziert war und der meine Probleme verursachte, in c ++ geschrieben war, was mich weiter interessierte. Ich fing später an zu lesen, Assembler und andere Hochsprachen zu lernen. Ich wollte zuerst etwas über Malware und Grafikprogrammierung lernen und das tat ich auch.
Lego Mindstorms ist eine großartige Idee. Wenn Sie nicht den langen Weg gehen und eine Hauptsprache verwenden möchten, steht Ihnen eine Programmiersprache im Blockstil zur Verfügung. Ich habe die Sprache in ca. 30-40 Minuten herausgefunden, alles steht an, wenn du darüber nachdenkst
Sie können schnell eine App entwickeln und sie vorführen. Sprechen Sie mit ihnen über die Vorteile der App-Entwicklung.
quelle
Einige meiner Favoriten
Fraktale erzeugen . Sie haben eine starke Verbindung zu tiefer Mathematik und Computergrafik und eignen sich natürlich auch für Parallelität. Es veranschaulicht die Komplexität und das aufkommende Verhalten , insbesondere wenn Sie auf beliebige Maßstäbe zoomen, und ist eng mit der Wissenschaft und den Naturphänomenen verbunden. Es ist nicht schwer, parallelen fraktalen Code zu schreiben, der auf mehreren Computern ausgeführt wird. Ein Experiment besteht darin, dass jede Maschine die von ihr verarbeiteten zufälligen Zeilen anzeigt (z. B. "Slave" -Maschinen, die Zeilen aus einer Warteschlange verarbeiten) und dann eine zentrale Maschine die kombinierten Ergebnisse anzeigt.
Lego-Robotik (oder andere Robotik-Kits, z . B. Stempel ). Mindstorms ist ein Spielzeug, aber es kann ein sehr fortgeschrittenes sein, das als greifbare Demonstration abstrakter Konzepte dient. Die Software, die auf ihnen ausgeführt werden kann, kann sehr komplex sein und sie können komplizierte Sense-Think-Act-Schleifen / -Algorithmen aufweisen. Es gibt viele gute Bücher über Konstruktionen. beeindruckend sind auch die Rubiks-Würfel-Löser , die kürzlich den Weltrekord gebrochen haben.
Himbeer-Pi ist eine neue kostengünstige Plattform, die viel Interesse und Verwendung findet. Es kann verwendet werden, um Linux-Programmierung, Robotik usw. zu demonstrieren und hat HD-Ausgabe usw. Siehe z. B. Southhampton Himbeer-Pi-Supercomputer mit einem Lego-Rack.
Das in der anderen Antwort erwähnte Logo ist ein alter Klassiker. Ein weiterer neuer Aspekt ist das Programmieren von Spielen, z. B. mit einer neuen populären Sprache namens Scratch (erfunden am MIT ). Es kann viele natürliche / fortgeschrittene CS-Themen vermitteln.
quelle
Hier ist ein anderer Winkel. Es gibt so viele interessante offene Probleme oder aufkommende Technologien in der Informatik an den Grenzen des wissenschaftlichen Verständnisses, die Neugier / Staunen auslösen können, dh die Erforschung des nahen Terra Incognita . Wenn Sie die Probleme ansprechen und die Klasse dann an einer Diskussion über die Konsequenzen von Lösungen teilnehmen lassen, kann dies erhebliches Interesse / Inspiration hervorrufen. [Da Sie die Verfügbarkeit des Computerraums erwähnen, ist es auch möglich, auf kreative Weise einige praktische Computerübungen zu erstellen, die sich auf diese Bereiche beziehen.]
dies kann ein sci-fi-gefühl annehmen, aber in CS wird das, was einst scifi war, wie in keinem anderen bereich in kurzer zeit zur realität. Sie können auch kontrovers und aktuell sein und mit den heutigen Schlagzeilen in Verbindung gebracht werden. Die Schüler können beginnen zu begreifen, wie allgegenwärtig CS in unserer Welt / Gesellschaft ist und wie wichtig es ist, wenn man es breit interpretiert. hier sind ein paar große:
DNA-Protein-Faltungsproblem . Gibt es einen Algorithmus, um es genau zu berechnen?
künstliche Intelligenz im Allgemeinen. ist es möglich? Gibt es Ethik?
Robotik hat verschiedene aufstrebende Schlüsselbereiche. z.B autonome Autos / Fahren . es ist am nahen Horizont. Wie wird sich das auf die Gesellschaft auswirken? Das Video des DARPA-Wettbewerbs von vor nicht allzu langer Zeit ist beeindruckend. Kurzweil's Schreiben hat eine Menge zu tun. Drohnen sind ein kompliziertes Thema, das selten offen diskutiert wird und zunehmend im Inland eingesetzt wird. Die Mars Rover sind eine außergewöhnliche Technologie und es gibt erstaunliche Geschichten dahinter, wie die Systeme aus der Ferne getestet werden mussten - interplanetarisch, wenn sie versagten.
IT-basierte Überwachungssysteme zur Aufdeckung von Verbrechen / Terrorismus sind in letzter Zeit weit verbreitet.
das Higgs-Boson konnte nicht entdeckt werden und der Supercollider kann ohne große CS-basierte Systeme zur Analyse der "Big Data" überhaupt nicht funktionieren.
Moores Gesetz . Wie weit geht es weiter? Wie sehr hat es bereits die Gesellschaft / die Menschheit beeinflusst?
Quantencomputer . sind sie möglich werden sie schneller sein? Werden sie günstig oder immer unfreundlich sein? Dwave ist eine farbenfrohe Fallstudie, es gibt einen großartigen SciAm - Artikel von Aaronson usw
Der Google-Pagerank-Algorithmus ist eines der milliardenschweren Wunder der modernen Informatik. wird es verlängert? Wie funktioniert die Spam-Filterung? Das Unternehmen scheint sich auf die Analyse von Bildern usw. zu konzentrieren.
Der algorithmische / hochfrequente Handel bewegt jetzt enorme Mengen des Handelsvolumens / -werts. ist es gut / schlecht nimmt es zu / ab? Wird es in Zukunft reguliert? Um welche Art von rechnerischem Wettrüsten handelt es sich?
Supercomputer sind riesig, lösen erstaunliche Probleme und werden immer größer. gibt es grenzen Was berechnen sie und was werden sie in Zukunft berechnen? etwas verwandt, Big Data und Data - Mining .
Social-Networking-Sites hatten in weniger als einem Jahrzehnt des Wachstums enorme Auswirkungen. sie sind in Betankung Volksaufstände zB beteiligt arabischen Frühling und Occupy wall st . Was ist ihre Zukunft?
quelle
Ich habe einen Vorschlag, dass
Wir haben kleine Workshops mit Schülern über Minesweeper abgehalten . Der Workshop würde ungefähr so ablaufen:
Lass uns das Spiel ein bisschen spielen (die meisten wissen es).
Was haben wir gerade gemacht? Was ist das Problem, das wir zu lösen versuchen? Können wir allgemeine Regeln formulieren?
Dies dauert normalerweise eine Weile. Kinder sind nicht daran gewöhnt, Probleme in Bezug auf Eingabe und Ausgabe zu formulieren, damit keine allgemeinen Regeln für deren Lösung gelten. Diejenigen, die zuvor programmiert haben, werden den Aufwand zu schätzen wissen. das referenzieren von "spaghetti code" kann helfen. Trotzdem sind die Regeln die meiste Zeit einfach, wenn nur eine Zelle gleichzeitig betrachtet wird.
Zeigen Sie Probleme mit den Regeln.
An dieser Stelle möchten Sie einen Minesweeper-Simulator einführen . Die von Bayer, Snyder und Chouiery ist nicht perfekt, aber Sie können sorgfältig gestaltete Szenarien zeigen.
Verbessern Sie den Regelsatz, um mehr Szenarien abzudecken.
Dies wird die Schüler in der Regel dazu veranlassen, immer mehr Zellen gemeinsam zu untersuchen. Sie können sie auch anstoßen, um "alle" Ansätze wie das Ausdrücken der vorliegenden Informationen als lineares Gleichungssystem zu lösen. Dies wird erreicht, wenn Sie versuchen, die verfügbaren Informationen in mathematischen Begriffen auszudrücken. Die Studierenden wissen bereits, wie solche Systeme zu lösen sind!
Beachten Sie die Einschränkungen.
Erstens gibt es Szenarien, die keine (deterministische) Lösung haben. Darüber hinaus können wir Brute-Force-Strategien gegenüberstellen. Können wir Geschwindigkeit und Leistung gegeneinander austauschen? Wenn der Gleichungssystemansatz auftaucht, beachten Sie, dass wir dies nur effizient über den Real lösen können, aber wir brauchen binäre Antworten. Es ist nicht allzu schwer, Szenarien zu erstellen, die zu enormen Laufzeiten führen (wir haben Computeralgebra verwendet, um dies zu veranschaulichen).
Je nach Gruppe können mit diesem Ansatz auf natürliche Weise mehrere Prinzipien der Informatik abgedeckt werden: Problemdefinition, Beschreibung allgemeiner Algorithmen, iteratives Lösen von Problemen sowie Fragen der Berechenbarkeit und Komplexität können angesprochen werden.
Das Feedback der Studenten war insgesamt positiv. Sie fühlen sich engagiert und zeigen Interesse an den Konzepten. Es ist wichtig, dass sie den größten Teil der Arbeit erledigen und sie nur vorsichtig in die gewünschte Richtung schubsen, indem sie gezielte Fragen stellen.
quelle
Sie haben eine Menge zu tun ... aber eine Sache, die so aufregend "Geld" zu sein scheint, so präsentieren Sie die "P ≠ NP" -Frage und den Sieben-Jahrtausend-Preis, als ich in der Mittelschule war, habe ich darüber gelesen, obwohl ich Ich wusste nicht, dass die Notizen das einzige sind, was ich verstehe: Es gibt einen großen Preis und eine große Frage! andere Dinge würden die Verbindung von Mathematik und Informatik darstellen wie: Gleichungen lösen, Lösungen mit Computern überprüfen.
Ich würde auch vorschlagen, Alan als "Vater der Informatik" vorzustellen und seine Geschichte zu erzählen. das letzte, was ich vorschlage, sind null Beweise und das Spiel "wo ist waldo?" und ohne Betrug und Kryptographie und Cyber-Angriffe zu spielen.
quelle
Mach irgendetwas mit Facebook, sie lieben es. Vielleicht ist dies für Anfänger zu schwierig, aber Sie sollten sie Anschlussgraphen zeichnen lassen, die zeigen, wie ihre Profile miteinander verbunden sind. Ich würde Javascript als Programmiersprache empfehlen.
quelle