DataArt Kiddo: bezpłatna platforma do nauki Pythona dla dzieci

DataArt Kiddo: bezpłatna platforma do nauki Pythona dla dzieci
Każdy może dodać własny materiał do bazy pytań, a umieszczenie Kiddo na twojej stronie nie jest trudniejsze niż zawarcie tam odtwarzacza YouTube. Denis Tsyplakov, Solutions Architect w DataArt i twórca projektu, opowiedział nam o tej platformie edukacyjnej dla dzieci oraz o tym, jak została wdrożona podczas kwarantanny.

Co to jest Kiddo?

Kiddo to platforma, na której dzieci uczą się pisać kod w Pythonie, rozwiązując problemy na podstawie szybkiego feedbackuj. Prosty program tworzony przez użytkownika wykorzystuje API do zarządzania scenami, na których kod jest natychmiast wizualizowany. Obecnie są dwie takie sceny: pierwsza to labirynt, w którym mały szop pracz zbiera ciasteczka i ucieka przed potworami, a druga to typowa konsola, klasyczne środowisko do rozwiązywania problemów programistycznych. Zrzuty ekranu zawierają napisy po rosyjsku, ponieważ w tym języku prowadziliśmy stronę testową.

Kiddo Platform image

Zadaniem użytkownika jest doprowadzenie szopa pracza do mety oznaczonej flagą oraz zebranie ciasteczek i niedanie się złapać po drodze przez potwora.

Kiddo nie udaje podręcznika, a każde dziecko pracujące z platformą powinno na wstępie wiedzieć, czym jest programowanie. Ale jest wiele samouczków dla początkujących użytkowników Pythona od zera w Internecie: od razu mogę polecić na przykład kanał Python Books. Nasza platforma może służyć jako uzupełnienie tych treści, zapewniając zbiór praktycznych zadań. Wydaje mi się, że każdy gimnazjalista będzie w stanie rozwiązać problemy z Kiddo w ciągu kilku dni, a najprawdopodobniej nawet szybciej. Ponadto dajemy wiele wskazówek.

Obecnie mamy 20-30 zadań dla każdej z dwóch scen. Zasadniczo są one dość proste, zwłaszcza w wersji z szopem: najpierw wystarczy go przesunąć - wydać komendę przesunięcia o dwie komórki w prawo, następnie trzy komórki w dół i tak dalej.

Kiddo Platform image

Stopniowo zadania stają się coraz bardziej złożone i pojawiają się poruszające się potwory, z którymi można walczyć za pomocą bomb i pistoletów, a następnie same ścieżki zaczynają zmieniać konfigurację podczas generowania poziomu.

Konsola nie aż tak fajna, ponieważ po prostu emuluje terminal komputerowy. Ale z drugiej strony są tam poważne zadania, w których po prostu trzeba kodować. Zadania te nie będą jednak wymagały od dzieci niesamowitego wysiłku - uczeń ma szansę sobie z nimi całkiem dobrze poradzić. Ale co najważniejsze, można łatwo dodać do tej sceny cały podręcznik z zadaniami, powiedzmy dla uczniów klasy informatycznej. Możesz je dodać samodzielnie - do konkretnego projektu własnego.

Kiddo Platform image

W przypadku wersji konsolowej na stronie Kiddo dostępne są obecnie 24 zadania.

Aby osadzić Kiddo na swojej stronie, wystarczy skopiować kod - tak jak w przypadku odtwarzacza YouTube.

W DataArt uważamy, że z tej platformy można korzystać również na konferencjach czy np. podczas dni otwartych szkoły lub uczelni. Gra dla programistów z jednej strony stawia minimalną barierę wejścia, z drugiej strony wciąż nie jest to do końca banalne rozwiązanie. Oczywiście myślimy o współpracy ze szkołami programowania dla dzieci. Obecnie negocjujemy z jedną z nich i zobaczymy, uda nam się wspólnie zrobić.

Co wyróżnia Kiddo?

Jeśli spojrzymy na jakąkolwiek witrynę szkoleniową, zobaczymy trzy komponenty:

  1. Podręcznik będący prezentacją materiału teoretycznego odpowiadającego wybranej metodyce nauczania. Z grubsza mówiąc, obejmuje on to, co przekazujemy, jak to przekazujemy i w jakiej kolejności.
  2. Praktyczne zadania, które są rodzajem mechanizmu, pozwalającego na samodzielne zrobienie czegoś, na przykład poznanie określonej technologii. W skrajnych przypadkach tę część można zastąpić odtwarzaczem wideo, ale na nowoczesnych platformach jest zwykle prezentowana jako element interaktywny.
  3. LMS - czyli Learning Management System - system do zarządzania kursami, który śledzi twoje postępy, przydziela cię do grupy, przeprowadza testy i egzaminy, dystrybuuje osiągnięcia, a jednocześnie określa, gdzie aktualnie jesteś i jakie kroki trzeba podjąć, aby je zdobyć.

W witrynach szkoleniowych te trzy komponenty są zwykle połączone w jedną całość. Jest to zrozumiałe, ponieważ każdy z nich to produkt o określonym celu biznesowym, którego osiągnięcie wymaga maksymalnego zaangażowania użytkownika. Z tego samego powodu elementy grywalizacji w LMS takich projektów często wyglądają na bardzo trudne, w tym zadania z lotami międzyplanetarnymi, ekwipunkiem i podnoszeniem umiejętności postaci. Jest oczywiste, że wiele projektów szkoleniowych stara się przypominać gry online, tylko po to, aby wyglądały jak najbardziej atrakcyjnie. Ale moim zdaniem niewygodne jest, że takie produkty są trudne lub niemożliwe do dostosowania i nie można ich używać w częściach. Musisz albo wziąć je w całości, albo poszukać czegoś innego. Pod tym względem użytkownik ma niewielki wybór.

Jest jeszcze jeden problem - istnieje przepaść między programami skierowanymi bardzo do dzieci, w których na przykład wystarczy przesunąć kostki na ekranie, a IDE, w którym naprawdę trzeba pracować jak dojrzały programista. Niszę pośrednią częściowo wypełniają gry programistyczne dostępne na Steamie, takie jak TIS-100. Zwykle przypominają te, których sam używałem 20 lat temu na domowym komputerze. Najważniejsza w nich jest szybka pętla zwrotna: piszesz normalny program w języku programowania mniej lub bardziej dla dorosłych i uzyskujesz natychmiastową wizualizację. Na przykład coś lub ktoś się kręci, biegnie, skacze itp. Jednak takie gry mogą być używane tylko jako całość, samodzielny produkt - nie da się wyodrębnić zadań, aby zintegrować je z własnym cyklem edukacyjnym.

Kiedyś obserwowałam, jak moja najmłodsza córka rozwiązuje problemy programistyczne na portalu edukacyjnym. Musiała wykonać około 90 zadań. Muszę dodać, że same zadania były dość proste, ale wizualizacja i szybkość informacji zwrotnej były całkiem dobre. Przy okazji wpadłem na pomysł: stworzyć uniwersalny komponent, który można ponownie wykorzystać lub osadzić w projektach innych firm. Rób, co chcesz, i twórz bardziej złożone zadania. Można go ulepszyć za pomocą oprogramowania typu open source i używając go jako podstawy, można budować różne cykle szkoleniowe. Najważniejsze jest to, że użytkownik - na przykład uczeń - pisze prosty kod, który jest natychmiast wdrażany, a jednocześnie na ekranie dzieje się coś zabawnego.

Jak stworzyliśmy Kiddo?

Pomysł platformy, a właściwie komponentu, który można osadzić bezpośrednio w przeglądarce, przyszedł mi do głowy ponad rok temu. Chciałbym, aby każdy, kto jest tym zainteresowany, mógł go rozwijać. Aby w końcu móc budować głębokie i złożone zadania, zaczynając od najprostszych. Na początku wszystko rozwijało się powoli, potem z pomocą wewnętrznej inicjatywy Talent Lab, gdzie testujemy hipotezy i tworzymy dla siebie małe projekty, sprawy potoczyły się szybciej.

Wykonanie zadania przebiegało w warunkach samoizolacji. Miałem więcej czasu, a moi koledzy programiści dużo bardziej zainteresowali się projektami dla dzieci. Najprawdopodobniej wiele osób widziało z własnego doświadczenia lub doświadczeń swoich bliskich, jak trudne może być zapewnienie dziecku angażujących zadań w warunkach domowych.

W sumie udało nam się ukończyć Kiddo w zaledwie 350 godzin produkcyjnych. Jednak w niektórych przypadkach pomagali nam koledzy, którzy tymczasowo znaleźli się poza projektami klientów. Robiliśmy to w iteracjach i mieliśmy prawie tuzin wewnętrznych wersji alfa. Ponadto, ponieważ działaliśmy dyskretnie i korzystając z zasobów tych, którzy byli w danym momencie wolni, zgromadziliśmy ogromny dług techniczny. Dlatego pracowaliśmy nad refaktoryzacją prawie miesiąc.

Niektóre funkcje są nadal w fazie roboczej, ale projekt można skalować. Zadania w większości zostały stworzone przez samych programistów, ale baza zadań może być nadal zapełniana prawie w nieskończoność. Z wizualizacją nie było problemów: wybraliśmy koncepcję gry zręcznościowej jak te z końca lat 80., którą wiele osób zna. Sam kiedyś wykonałem trzy z nich w Assemblerze.

Co dalej

Obecnie lokalizujemy platformę dla różnych krajów, a kod źródłowy znajduje się w Github https://github.com/DataArt/kiddo. Ale możesz dodać zadania do bazy danych i umieścić Kiddo na swoich witrynach w dowolnym momencie. Zadania napisane są w JavaScript, a ich złożoność nie ogranicza nic oprócz wyobraźni autora. Posiadamy zestaw gotowych obrazków do zadań z polem graficznym, ale jeśli chcesz, możesz narysować własne.

Kiddo Platform image

Wreszcie, jeśli ktoś chce dodać coś własnego do Kiddo, na przykład, aby wyglądało spójnie na określonej stronie, może napisać do nas na kiddo@dataart.com. Coś wymyślimy. Możesz też rozczłonkować kod z Githuba i zrobić wszystko samodzielnie.