Sådan bruges små programmerbare robotter til at introducere børnene til kodning

Du spørger måske dig selv, "Eh, hvorfor er jeg virkelig interesseret i, om børnene lærer at kode?" Jeg kan forsikre dig om, at du ikke er den eneste person, der har tænkt på dette. Du har måske ikke engang egne børn, så hvorfor skulle du passe på det?

"Uanset om du vil afsløre universets hemmeligheder, eller du bare ønsker at forfølge en karriere i det 21. århundrede, er grundlæggende computerprogrammering en vigtig færdighed at lære."
- Stephen Hawking

Og dette gælder for børn såvel som forældre og bedsteforældre.

Denne artikel handler ikke om kodning, den handler om at lære børn, hvordan man tænker og løser problemer på en struktureret måde.

For 6 år siden offentliggjorde Netscape-pioneren Marc Andreesen et essay i Wall Street Journal med titlen "Why Software is Eating the World."

Denne artikel er nu næsten 6 år gammel, hvilket viser, at selv for 6 år siden var dette et varmt emne. Og dens popularitet er vokset eksponentielt. Så du skal ikke beskytte dine børn mod, hvad der vil hjælpe dem i fremtiden.

Læs dette link for at se, hvordan man bygger et værktøj, der hjælper biblioteker, skoler og uddannelsesinstitutioner med at gøre undervisningen sjov og underholdende.

Hvorfor skulle du lære dine børn at kode?

At arbejde med børn er fantastisk. At se dem lære hurtigere og være mere kreative og fokusere på deres vision har potentialet til at udfylde din fritid med noget, der betyder noget.

Vi havde holdt Scratch og Makey-Makey workshops i næsten et år, før vi besluttede at oprette et nyt værktøj, der har evnen til at lære logik og lære det grundlæggende i programmering.

Makey-Makey-workshop i Stuttgart City Library

Da vi gav børnene opgaven at oprette et nyt vækkeur, kom de med nogle meget kreative løsninger. Mange af dem ville i det mindste for os fremstå meget underlige.

Der var mange gange, hvor jeg troede, at jeg ikke kunne have fundet ud af deres løsninger.

En af løsningen på vækkeuropgaven

Vi overvejede først at bruge en platform, der ligner CodeCombat eller Code.org. Imidlertid skal du med CodeCombat "skrive kode", som ikke var det, vi ønskede. Og Code.org var virkelig let, for let faktisk til vores brugssag.

Vi ønskede, at platformen skulle give en stejl indlæringskurve til dens brugere. Når niveauerne starter virkelig let og derefter hurtigt skrider frem til et højere niveau af vanskeligheder, så brugerne kan få mest muligt ud af det. Da vi vidste, at dette værktøj ville blive brugt i begivenheder (som beskrives senere), kunne vi have nogle niveauer med hjælp og forklaringer.

Vi undersøgte også nogle af de allerede tilgængelige værktøjer. Dette hjalp os med at få et bedre overblik over fordele og ulemper ved allerede etablerede spil og værktøjer. Vi dokumenterede denne søgning her.

Efter at vi havde foretaget vores research og mødt med professorer og projektleder Per, vidste vi (vores tekniske konsulent David, Paul, Johannes og jeg), hvor vi skulle hen på vores rejse.

Ideen

Vores idé var, at programmet ville passe til yngre børn og samtidig ikke skræmme de ældre børn væk.

Først tænkte vi på at forenkle computerdelen ved hjælp af magiens verden. Idéen var at introducere koncepterne programmering ved hjælp af forskellige trylleformularer undervist af en lille troldmand. Dette ville have givet os fordelen ved at tilvejebringe "magi", når der var behov for en mere kompleks logik, f.eks. I tilfælde af stifinding.

Børnene kunne senere se logikken bag disse ”magiske” trylleformularer og forstå, hvordan stifinding blev implementeret med den grundlæggende logik, de havde lært.

En af de første modeller for guiden-ideen

Efter mange iterationer og diskussioner besluttede vi at tage en mindre eventyrtilgang og bruge robotter, der kunne være "programmerbare" med de leverede logikblokke. Robotterne blev spawnet fra en fabrik, hvor de engang fik deres opførsel en gang i produktionen.

Brugere har muligheden for at bygge robotter, der kan udføre forskellige opgaver, såsom minedrift til ressourcer eller finde og bekæmpe andre robotter.

Det var det øjeblik, Robotopia (på det tidspunkt kaldte det ”Project-X”) blev født.

Robotopia logo

Per, vores projektleder, besluttede, at vi for at lære mest muligt fra dette projekt havde brug for mere eksperimentelle rammer og teknologier.

Han præsenterede os for en ukendt (i det mindste på dette tidspunkt) front-end JavaScript-ramme, der muliggjorde en dejlig funktionel tilgang. Det mindede os om Elm.

Værktøjet blev kaldt Choo. Sørg for at tjekke det ud. Det er fantastisk.

Kommunikationen til begivenhedstilstanden skal fungere med Peer2Peer-kommunikation (P2P). Johannes blev vores P2P-forsker. Hans rolle var at skabe en solid forbindelse med vores studerende.

Hvis du er interesseret, kan du gå i dybden om de teknologier, der bruges i afsnittet Teknologi. Derfra vil du sandsynligvis være i stand til at lære om værktøjer, som du ikke har hørt om før (i det mindste for mig var det, der skete).

Den vigtigste del af projektet var sandsynligvis brugergrænsefladen. Vores brugere var børn og unge voksne, der aldrig havde kodet før. Derfor måtte vi vælge en grænseflade, der ikke forenklede kodningen, men gjorde det nemt at sætte tingene sammen og teste dem.

Sådan fandt vi Blockly.

Det var det perfekte valg til vores projekt. Det var let at integrere, modulopbygget og vigtigst af alt JavaScript kompatibelt. Du kan besøge dens websted og få et indtryk af dens magt.

Et eksempel på programmeringssproget Blockly

Bemærk: Tjek Blockly og overvej at bruge det til dit næste projekt. Det er let at integrere og har kraftfulde kodegeneratorer til alle større programmeringssprog. Det er ikke kun for børn, men det giver også ikke-programmerere et forum til at opbygge kompleks logik.

Klik her for at få mere information.

Det var den rigtige kombination af værktøjer, der gav os fart for at få Robotopia til at ske.

Spillet

Når vi først havde haft vores idé og tech stack på plads, kunne vi endelig begynde at kode.
Men fordi vi aldrig tidligere havde arbejdet med værktøjerne, måtte vi gennem en stejl indlæringskurve for at få fart og give projektet den opmærksomhed, det fortjente.

Vi brugte al vores fritid på at skabe dette projekt. I begyndelsen deltog vi endda i en weekend i Hackathon, så vi kunne kode gennem weekenden. Til kernespillogikken havde vi kun to udviklere og cirka fire måneder til at inkludere alle forelæsninger og prøver for det semester. Johannes tog sig først af P2P-hændelseslogikken og udviklede et minispil (der senere blev forladt), hvilket ville have skabt et bedre engagement i begivenhedstilstanden.

Hackathon-weekenden, hvor vi tilbragte over 20 timers kodning, viste sig at være værdifuld. Den første dag havde vi noget, der kunne vises for mennesker. Vi havde en editor og en figur, som vi kunne flytte på et gitter ved hjælp af det grafiske programmeringssprog Blockly.

En ældre version med Robot Rick stadig i programmet

Da vi ikke havde en kunstner, der kunne levere nogen aktiver, måtte vi sørge for, at vores værktøjer ikke lignede noget skidt. Fordi vi er store fans af Rick og Morty, selvom det ikke er egnet til børn, brugte vi nogle af deres mobilspilsaktiver til at skjule vores værktøj.

Da vores frist kom nærmere, udskiftede vi Rick og Morty-aktiverne med robotter. Vi sørgede også for, at folk kunne spille vores spil ved at bruge dette websted.

Den endelige version havde en dejlig oversigt, hvor folk kan besøge tidligere niveauer og således styrke deres viden.

En liste over tutorials adskilt efter emne

Når du har valgt et niveau, vil du modtage information om målene for niveauet. Derefter kan du løse niveauet ved hjælp af en forudvalgt mængde blokke. Dette gav os chancen for langsomt at tilføje flere og mere komplekse blokke i de senere niveauer.

Hvis-betingelser niveau (avanceret)

Når brugere har passeret et niveau, modtager de et resumé af de mål, de har nået, "låser op" en ny blok til de næste niveauer.

Låser op en ny blok til de næste niveauer

Lad konkurrencen starte

Efter at børnene lærte om, hvad blokke gør, testede vi deres viden ved at afholde en konkurrence, hvor de prøver at udnytte de mest ressourcer på kortest tid.

Derfor måtte vi bygge to forskellige synspunkter.

Brugere kan bruge Robotopia-editoren til at hjælpe med at opbygge deres robots logik og teste deres implementering, mens de permanent forbedrer deres opførsel.
Brugere indtaster deres visningsnavn og det rum, de vil deltage i (værelser er de konkurrencer, der kan åbnes med præsentationsvisningen).

Brugere kan udvikle deres egen logik for at vinde

Presentationsvisningen vises med en projektor i et klasseværelse for børn, så de kan se konkurrencen. I denne visning kan brugere indtaste et rumnavn, som brugere kan bruge til at deltage i konkurrencen. I denne visning kan du se antallet af point, som hver bruger har, og hvor lang tid der er tilbage, indtil runden er afsluttet.

To brugere kan spille én mod én. Deres robotter vil blive spawnet fra de grå fabrikker.

Efter vores præsentation modtog vi en masse positive feedback. Dette øgede vores selvtillid. Vi viste derefter præsentationen til et klasseværelse for børn og arbejdede med dem gennem de forskellige niveauer.

Udmattet men glad. Vores team: Paul, Per, Tim og Johannes (venstre til højre, top til bund)

Her er et rigtig kort indtryk af begivenheden:

Teknologien

Per havde et par milepæle til vores projekt. Udover at faktisk teste, hvad vi kom frem til sammen, ønskede han, at vi skulle bruge open source “scene”. Det, det betød for os, var, at vi blev opfordret til at bruge små JavaScript-biblioteker og rapportere til udviklerne de problemer, vi oplevede.

Per havde mulighed for at kontakte og bede skaberen af ​​Choo, Yoshua, om at møde ham på et online møde. Dette var for at få os i gang med Choo!

Selvom mødet ikke fandt sted (på grund af en cykelulykke, som Yoshua havde), var vi i stand til at chatte med Yoshua om Choo ved mindst to forskellige lejligheder.

Vi sendte også et par patches til andre open source-projekter gennem GitHub.

Lærdom: Hvis du laver et projekt, der involverer open source-teknologi, skal du gå efter det. Kontakt skaberen. I de fleste tilfælde hjælper skaberen dig med at hjælpe dig. Bag de virkelig store projekter er der kun et par mennesker, der faktisk kan lide at arbejde med open source-indhold. De vil bare vise, hvad de har gjort, og få folk til at bruge dem.

Blockly

Som forklaret tidligere valgte vi Blockly til vores brugergrænseflade. Hvis du besøger deres webside og tjekker deres eksempler, vil du se, at den allerede har etableret mange undervisningsværktøjer. Da det abstrakte design gør det nemt at oprette nye blokke, kan du integrere det i det spil eller den app, du ønsker.

Det er unik, hvordan enkeltpersoner og især børn bruger de forskellige kodeblokke til at skabe opførsel. De forskellige farvede blokke gør det let at knytte hver blok til en adfærd. Desuden står udviklere frit til at give et par blokke, når de introducerer nye koncepter. En anden utrolig funktion ved denne ramme er, at du nemt kan skifte fra stabelblokke til at skrive kode og derefter hurtigt skifte mellem dem.

Funktioner

Her er nogle funktioner i Blockly:

  • Det er et grafisk programmeringssprog
  • Det giver dig mulighed for at oprette og style dine egne blokke
  • Det er kompatibelt med internettet og mobile enheder
  • Det er etableret i mange projekter
  • Det har evnen til at fortolke de fleste sprog

Selv projekter som Microsofts Micro: bit bruger Blockly til at undervise.

Micro: bit's Game of Life

Peer2Peer

Peer2Peer (P2P) -teknologien er cool.

Hvorfor? Fordi det giver udviklere mulighed for at bygge apps, der ikke kun leverer fantastiske funktioner, men også reducerer afhængigheden af ​​centrale tjenester.

Heldigt for os, at de store spillere på markedet (især Google) kom til at stille P2P til rådighed i browseren. Teknologien kaldes WebRTC og er en webstandard - hvilket betyder, at den er tilgængelig i browseren via JavaScript.

En del af vores projekts specifikation var at have så lidt back-end infrastruktur som muligt. Så ingen tunge servere, bare en simpel HTML-side med JavaScript. Vi bliver nødt til at styre vores spilstatens klientside ved kun at bruge WebRTC-signaleringsservere (som kan sammenlignes med digitale telefonbøger) til at starte P2P-forbindelsen.

Funktioner

Her er nogle funktioner i P2P:

  • Det er decentraliseret
  • Det er tilgængeligt på Internettet (WebRTC)
  • Det er let at bruge (simpel peer)
  • Den bruger kun en singlerserver til den første forbindelse
Fotokilde: curlewresearch.com

Du kan gøre fantastiske ting med P2P-teknologi. For eksempel kan du sende filer mellem klienter uden en central autoritet. Du kan gøre dette i din browser. Klik her for et eksempel på dette.

Hvis du vil tage det til det næste niveau, kan du opbygge en fuldt decentraliseret, open source Spotify-klon (PeerMusic). Klik her for at se et eksempel.

Peermusic er en mobil-klar musikafspiller, der kører browseren lokalt. Det stræber efter at levere alle praktiske funktioner i moderne musikafspillere ved at kombinere det med let og krypteret P2P-baseret deling af musikfiler.

Choo

Choo er et sjovt og funktionelt programmeringssprog, der bruges til at skabe robuste frontend-applikationer. Choos udviklere havde en særlig filosofi i tankerne, da de skabte den. De troede, at programmering skulle være sjovt og let, ikke stressende, og at det er sejt at være sød. Og det at bruge tekniske ord uden at forklare dem skaber dårlige resultater og skræmmer folk væk.

Du skal læse om Choos filosofi på dens GitHub-arkivside. Det er interessant og inspirerende.

Funktioner

Her er nogle funktioner i Choo:

  • Dets mindstevægt er 4 kb
  • Det er begivenhedsbaseret
  • Det er et lille API med kun seks metoder
  • Det har minimal værktøj
  • Det har et isomorf design, der gengives problemfrit med både Node og browsere
  • Det er meget sød. Choo choo!

Den slags "Hello World" til programmeringssprog til funktion er en "Counter" -app. Med Choo ser det sådan ud.

Dette ser let og let ud, ikke? Hvis du er interesseret, skal du bestemt tjekke det ud. De har mange gode ressourcer.

Esper.js

Dette er en fantastisk JavaScript-selvtolker med et højt fokus på test af udførelse og runtime introspektion. Efter vores mening er dette program ikke så hæderligt, som det burde være, for hvor godt det er.

Desværre er der ingen reel dokumentation for esper.js. Der er bare kommentarer i koden og nogle mindre forklaringer, der gør dette svært at bruge. Men det er bestemt værd at tjekke ud. Der er en tolk på siden Blockly. Men til vores brugssag var den ikke god nok. Og vi blev simpelthen forelsket i esper.js. Tak CodeCombat for åben sourcing.

Funktioner

Her er nogle funktioner i esper.js:

  • Det har en JavaScript-tolk
  • Det har et testmiljø til dens udførelse
  • Det er bygget til CodeCombat
  • Det giver trinvise henrettelser
  • Det bygger et komplet abstrakt syntaks-træ (AST)

Klik her for at se på den faktiske demo.

Demo af esper.js

Robotmotoren

Når to hold konkurrerer mod hinanden i turneringstilstand, har vi brug for et miljø, der simulerer, at robotterne interagerer med spilverdenen. Hver robot har sit eget program, og hver udfører en handling hver runde. Runtime holder styr på status for hver robot og spilverdenen. På hver uret begivenhed udfører runtime den næste handling for hver robot og sender en begivenhed til spilverdenen.

Spillets verden indeholder al spillogikken. For eksempel er det ansvarligt for at kontrollere, at robotterne ikke kan bevæge sig på vandfelter.

Funktioner

Her er funktionerne i robotmotoren:

  • Det giver en turbaseret simulering
  • Det har samtidige henrettelser af flere robotter
  • Det har et hændelsessystem, der udløser bots, for eksempel når en robot opdager en ressource
  • Det giver en API, hvor robotterne kan interagere med verden
Begrebet robotmotor

Du kan hjælpe

Hvis du synes, dette projekt er interessant og vil planlægge din egen begivenhed, perfekt.

Bare gå over til vores GitHub-arkiv og kig efter afsnittet "Hvordan du kunne bruge dette". Der forklarer det, hvordan du kan tage dette projekt og gøre det til din egen begivenhed.

Her er de ting, du skal bruge for at arrangere en begivenhed som denne:

Elementer, du har brug for for at planlægge en begivenhed

  • Cirka 1,5 timer
  • En computer med en opdateret browser til hvert barn
  • En projektor og en stor skærm til at vise konkurrencen
  • Lærere, der kan hjælpe børnene, hvis de har spørgsmål

Begivenheden bliver derefter opdelt i 4 sektioner:

  • Vejledninger
  • Programmering af robotterne
  • At lade robotterne konkurrere
  • Forbedring af programmerne

Du kan læse om hvert af trinnene her.

Hvis du har spørgsmål om, hvordan og hvor du skal arrangere en sådan begivenhed, eller hvordan du bedst planlægger det, er du velkommen til at spørge os.

Vi elsker at arbejde med børn. Hvis du prøver det, er vi sikker på, at du ikke vil fortryde det. Du lærer at forklare ting på en enklere og mere logisk måde, som vil hjælpe dig med at vokse som udvikler og som person.

Prøv det. Vi er seriøse.

Tak fordi du læste.

Vi vil meget gerne høre din mening, så føl dig fri til at kommentere eller slå mig op via e-mail.

Sørg også for at følge os på YouTube og star Robotopia på GitHub.

Glem ikke at trykke på klapknappen og følge mig på Twitter, GitHub, Youtube og Facebook for at følge mig på min rejse.

Vi leder altid efter nye muligheder.

Du er velkommen til at kontakte os. Vi ville elske at være i kontakt med dig.

Jeg er i Palo Alto, Californien, for en praktikophold, der starter i september. Jeg ville elske at møde dig! Hvis du er interesseret, skal du slå mig op via e-mail. Jeg ville være glad for at være i kontakt!

Hvis du er en person, der faktisk arbejder hos Google og læser dette, ville jeg meget gerne møde teamet bag Blockly!