Nauka programowania – sprawdzone rozwiązania w obliczu nowych wyzwań

Wstęp

Projekt nowej podstawy programowej kształcenia informatycznego oraz tegoroczne pilotażowe wdrożenie programowania do polskich szkół, wyraźnie kreślą kształt kompetencji w zakresie alfabetyzacji informatycznej, których rozwój Ministerstwo Edukacji Narodowej uznało obecnie wśród uczniów za priorytet. Zgodnie z aktualnym światowym trendem, również polskie dzieci będą uczyły się programowania od samego początku szkoły podstawowej. Działania te nie są bynajmniej podejmowane na fali pustych populistycznych haseł o programowaniu jako “języku przyszłości”. Cechuje je raczej chęć odpowiedzi na realne wyzwania, które stawia przed nami i dziećmi już współczesny świat. Żyjąc w rzeczywistości, w której artykuły gospodarstwa domowego posiadają swoje własne oprogramowanie, gdzie zegarki łączą się z Internetem w celu podania godziny dokładnej do setnej części sekundy, gdzie inteligentne domy i samochody są coraz powszechniejsze, elementarna staje się również umiejętność zrozumienia zasad działania tych urządzeń. Takie zasady jasno określa kod, którego składnia do tej pory znana była tylko nielicznym i bardzo wyspecjalizowanym jednostkom. Zgoda na dalszą hermetyzację tej wiedzy w ich wąskim gronie, mogłaby skutkować niebezpieczną sytuacją, w której to uprzywilejowana kasta programistów miałaby prawo do kreowania i moderowania warunków funkcjonowania wszystkich pozostałych programistycznych analfabetów. Jest to sytuacja niepożądana i między innymi również dlatego warto wspierać wszelkie inicjatywy, które dążą do rozpropagowania tej umiejętności wśród wszystkich zainteresowanych. Należy jednak zdawać sobie sprawę z tego, że nie każdy, kto będzie miał styczność z programowaniem od najmłodszych lat, zostanie w przyszłości programistą. Jakkolwiek, każdy powinien mieć szansę zobaczenia na własne oczy, na czym polega programowanie. Te rozumiane szerzej, jest nie tylko umiejętnością napisania kilku linijek zakodowanych instrukcji dla komputera. Jest przenikającą do wszystkich sfer życia zdolnością informatycznego działania, rozwiązywania problemów i precyzyjnego formułowania swoich myśli.

Stosunek Polaków do programowania

Decyzja Ministerstwa Edukacji Narodowej o wyłączeniu programowania z kanonów wiedzy mistycznej, jest decyzją, która znajduje odzwierciedlenie w powszechnej opinii Polaków nt. przydatności nauki programowania w szkołach. Według badania przeprowadzonego na zlecenie organizacji pozarządowej Centrum Cyfrowe, aż 85% dorosłych Polaków uważa, że nauka programowania w szkołach przyniosłaby uczniom korzyści. Jako główne podaje się: wzrost szans na rynku pracy (92%), sprawniejsze korzystanie z komputera/innych urządzeń (90%), rozwój umiejętności logicznego myślenia (89%). Mimo typowania niewątpliwie pozytywnych następstw takiej nauki, autorzy badań w tym samym raporcie podają jednak, że tylko 8,1% Polaków potrafi samodzielnie napisać dowolny program. Sytuacja ta podkreśla ważkość kroków, które są aktualnie podejmowane przez MEN.

Inicjatywy i standardy

Równolegle następuje rozkwit inicjatyw, związanych z rozpowszechnianiem wiedzy o programowaniu wśród uczniów na każdym etapie edukacyjnym. Napotkać możemy zarówno na komercyjne szkoły programowania, jak i na fundacje i organizacje, które bezpłatnie zapoznają dzieci z tajnikami kodowania. Używają one zróżnicowanych metod i języków, jakkolwiek, zaobserwować można pewne standardy, regulujące nauczanie programowania na poszczególnych etapach edukacyjnych. Naukę programowania w szkole podstawowej powinno się zacząć od podstawowych algorytmów i wypracowywania umiejętności myślenia komputacyjnego. Można tego dokonać nawet bez kontaktu dzieci z komputerem, przez zabawy i ćwiczenia ruchowe, które pomogą im zrozumieć te, skądinąd abstrakcyjne idee. Dobrą okazją do sprawdzenia wypracowanych umiejętności w tym zakresie jest udział w Międzynarodowym Konkursie Informatycznym Bóbr, który w Polsce funkcjonuje już od 11 lat i cieszy się rosnącym zainteresowaniem. Konkurs otrzymał patronat Ministerstwa Cyfryzacji, a ogólnodostępne archiwalne materiały publikowane na stronie Bobra, zostały wyróżnione przez Ministerstwo Edukacji Narodowej, jako odpowiednie do nauczania programowania w pierwszych klasach szkoły podstawowej (https://programowanie.men.gov.pl/materialy/). Za standard, w którym powinni pracować uczniowie klas IV-VI szkół podstawowych i uczniowie szkół gimnazjalnych, uznaje się Scratch (https://scratch.mit.edu/), czyli stworzony i rozwijany przez MIT (Massachusetts Institute of Technology) wizualny język programowania, pozwalający na programowanie przy pomocy układania bloczków reprezentujących konkretne funkcje i zmienne. Język ten spotkał się z bardzo dużym zainteresowaniem ze strony nauczycieli, którzy chwalą sobie jego intuicyjność i uniwersalność. Programowanie w szkołach ponadgimnazjalnych jest tematem bardzo otwartym i wymaga już najczęściej korzystania z jednego z wielu pełnoprawnych języków programistycznych. Materiały do nauki programowania na tych etapach znajdziemy w Internecie, jednakże można też tworzyć je własnoręcznie, dokładnie tak, jak w przypadku standardowych materiałów edukacyjnych. Najbardziej pożądaną jest sytuacja, kiedy nauczyciele mogą wykorzystywać w tym celu znane sobie rozwiązania.

Nauka programowania w mInstructor

Chcąc umożliwić osobom zainteresowanym wykorzystanie środowiska Learnetic do wspomagania nauki programowania na wszystkich etapach edukacyjnych, chciałbym przedstawić sposoby na to, jak wykorzystać narzędzie mInstructor do tworzenia własnych edukacyjnych materiałów interaktywnych, sprzyjających takiej nauce. W tym celu posłużyć można się podstawowymi modułami, takimi jak:

  • Ćwiczenie wyboru – dostęp do niego uzyskujemy przez kliknięcie w ikonę  image00 “Dodaj moduł” znajdującą się na pasku narzędzi edytora, następnie przejście do sekcji “Ćwiczenia” i wybranie ikony image07  symbolizującej “Ćwiczenie wyboru”. Alternatywną ścieżką dostępu do modułu jest wybieranie odpowiednio menu “Moduł”, następnie “Ćwiczenia” i ostatecznie “Ćwiczenie wyboru”.

Konstruowanie zadań interaktywnych z wykorzystaniem tego modułu, opiera się zwykle na postawieniu pytania i następnie daniu uczniowi możliwości wyboru poprawnie zdefiniowanej wcześniej przez nauczyciela odpowiedzi z listy. Dostęp do edycji listy możliwych odpowiedzi otrzymujemy przez edycję wartości “Element”  image06 we właściwościach wybranego modułu “Ćwiczenie wyboru” lub przez dwukrotne kliknięcie na module.


image09

Rys. 1. Okno edycji elementów ćwiczenia wyboru


W tym przypadku poprawność danej odpowiedzi oznaczamy cyfrą “1” lub “0” w polu “Wartość”. Wartości, które musimy tutaj wpisać są binarne, co za tym idzie, “1” oznacza odpowiedź prawidłową, a “0” nieprawidłową. Mamy również możliwość, by oznaczyć jako poprawną więcej niż jedną odpowiedź. Jakkolwiek, wtedy konieczne jest, by zaznaczyć opcję “Wielokrotny” we właściwościach wybranego modułu “Ćwiczenie wyboru”. Po wybraniu tej opcji, kształty symbolizujące odpowiedzi w module zmienią się z okrągłych na kwadratowe.


image08

Rys 2. Dwie opcje ćwiczenia wyboru – wybór jednokrotny (po lewej) i wielokrotny (po prawej)


Poniżej znajduje się przykład zadania interaktywnego dotyczącego nauki programowania z wykorzystaniem modułu “Ćwiczenie wyboru” w trybie jednej poprawnej odpowiedzi.


image10

Rys. 3. Przykład ćwiczenia wyboru dotyczącego pętli for

Źródło: https://www.minstructor.pl/public/view/5103417112395776


  • Tekst i luki – dostęp do niego uzyskujemy przez kliknięcie w ikonę image00 “Dodaj moduł” znajdującą się na pasku narzędzi edytora, następnie przejście do sekcji “Ćwiczenia” i wybranie ikony image12. Alternatywną ścieżką dostępu do modułu jest wybieranie odpowiednio menu “Moduł”, następnie “Ćwiczenia” i ostatecznie “Tekst i luki”.

Jest to prosty moduł, aczkolwiek dający bardzo duże możliwości. Po dwukrotnym kliknięciu na nim, ukazuje się nam edytor, dzięki któremu otrzymujemy możliwość wprowadzenia dowolnego tekstu i jego obróbki, dokładnie jak w popularnych edytorach tekstu, dostępnych w wiodących pakietach oprogramowania biurowego.


image11

Rys. 4. Okno edytora tekstu w mInstructor


Jednak nie jest to wszystko, co oferuje ten moduł. Dzięki niemu mamy możliwość nie tylko wprowadzania tekstu i umieszczania go w dowolnym miejscu na stronie, ale również umieszczania w nim luk, które mogą przyjmować następujące formy:

  • Luka edytowalna – jest to luka, do której uczeń ma za zadanie wpisanie tekstu lub wartości liczbowych, zdefiniowanych wcześniej przez nauczyciela.

image15

Rys. 5. Przykład luki edytowalnej


Luki tego typu przyjmują dwie dodatkowe formy:

  • Matematyczna – umożliwia wprowadzenie wzorów liczbowych.
  • Przeciągana – umożliwia przeciąganie do niej elementów z modułu “Lista tekstowa” (mogą być to wszelkiego rodzaju teksty i równania).
  • Luka rozwijana – jest to specyficzny rodzaj luki, gdzie wprowadzamy listę możliwych odpowiedzi, definiując przy tym jedną odpowiedź prawidłową, którą uczeń będzie musiał wybrać, przez kliknięcie na rozwiniętej już liście.

image13

Rys. 6. Przykład luki rozwijanej


  • Luka uzupełniona (z tekstem zastępczym) – jest to luka, w której możemy wcześniej umieścić dowolny tekst, jako np. wskazówkę dla ucznia.

image14

Rys. 7. Przykład luki z tekstem zastępczym


Poniżej znajduje się przykład zadania interaktywnego dotyczącego nauki programowania z wykorzystaniem modułu “Tekst i luki”. Luka ma formę luki przeciąganej. Nad modułem znajduje się “lista tekstowa” zawierająca 8 elementów.


image16

Rys. 8. Przykład zadania z wykorzystaniem luk

Źródło: https://www.minstructor.pl/public/view/5103417112395776


  • Porządkowanie – dostęp do niego uzyskujemy poprzez kliknięcie w ikonę image00 “Dodaj moduł” znajdującą się na pasku narzędzi edytora, następnie przejście do sekcji “Ćwiczenia” i wybranie ikony image17. Alternatywną ścieżką dostępu do modułu jest wybieranie odpowiednio menu “Moduł”, następnie “Ćwiczenia” i ostatecznie “Porządkowanie”.

Jest to moduł, który idealnie nadaje się do nauki myślenia algorytmicznego, zważywszy na fakt, iż wymagane od ucznia jest w tym przypadku ustawienie elementów w konkretnym porządku, zdefiniowanym przez nauczyciela.


image18


Moduł ten umożliwia umieszczenie w nim dowolnej liczby elementów (liczb, tekstu, ilustracji), a następnie automatyczne wymieszanie ich między sobą. Jego elementy mogą być szeregowane pionowo lub poziomo, a sam moduł ma przez to bardzo wiele zastosowań. Poniżej znajduje się przykład użycia modułu “Porządkowanie” w zadaniu interaktywnym w kontekście nauki programowania w najmłodszych klasach szkoły podstawowej.


image19

Rys. 9. Przykład zadania przybliżającego pojęcie algorytmu

Źródło: https://www.minstructor.pl/public/view/4518453253767168


Moduły dedykowane nauce programowania

Wśród dziesiątek modułów dostępnych w edytorze mInstructor, znajdziemy również takie, które zostały stworzone głównie z myślą o nauce programowania i służą jedynie temu celowi. Zaprojektowano je dla uczniów starszych, którzy posługiwać będą się już poleceniami pisanymi własnoręcznie, przy pomocy wizualnego języka programowania (bloczków) oraz czystym kodem programistycznym. Są to:

  • Scena z siatką – dostęp do tego modułu uzyskujemy przez kliknięcie w ikonę image00 “Dodaj moduł” znajdującą się na pasku narzędzi edytora, następnie przejście do sekcji “Skryptowanie” i wybranie ikony image20. Alternatywną ścieżką dostępu do modułu jest wybieranie odpowiednio menu “Moduł”, następnie “Skryptowanie” i ostatecznie “Scena z siatką”.

image21

Rys. 10. Moduł “scena z siatką”


W scenie użytkownik może manewrować liczbą wierszy i kolumn, zmieniać kolor zaznaczenia danego punktu oraz ustawiać opóźnienie, z jakim wykonać ma się kod, który zostanie wpisany i wykonany za pośrednictwem współpracującego z nią modułu “Konsola programowania”. Scena daje również możliwość zapisania w jej pamięci domyślnych komend, które będzie realizowała, a także nadanie im tzw. “aliasów”, czyli własnych nazw, po których będą one wywoływane, a co jest niezwykle istotne w przypadku młodszych uczniów, od których nie można wymagać, by posługiwali się żywym kodem programistycznym.

  • Konsola programowania – dostęp do tego modułu uzyskujemy przez kliknięcie w ikonę image00 “Dodaj moduł” znajdującą się na pasku narzędzi edytora, następnie przejście do sekcji “Skryptowanie” i wybranie ikony image01. Alternatywną ścieżką dostępu do modułu jest wybieranie odpowiednio menu “Moduł”, następnie “Skryptowanie” i ostatecznie “Konsola programowania”.

image02

Rys. 11. Przykład kodu wpisanego w “konsolę programowania”


Moduł ten po połączeniu go we właściwościach z odpowiednią sceną, wykonuje na niej kod programistyczny, który został w nim zapisany. Poniżej znajduje się przykład użycia modułów “Scena z siatką” i “Konsola programowania” w zadaniu interaktywnym w kontekście nauki programowania w przypadku późniejszych poziomów edukacyjnych.


image03

Rys. 12. Zadanie wykorzystujące “konsolę programowania” i “scenę z siatką”


  • Edytor kodu Blockly – dostęp do tego modułu uzyskujemy przez kliknięcie w ikonę image00 “Dodaj moduł” znajdującą się na pasku narzędzi edytora, następnie przejście do sekcji “Skryptowanie” i wybranie ikony image04. Alternatywną ścieżką dostępu do modułu jest wybieranie odpowiednio menu “Moduł”, następnie “Skryptowanie” i ostatecznie “Edytor kodu Blockly”.

image05

Rys. 13. Przykładowe bloczki kodu dostępne w mInstructor


Moduł ten pozwala na alternatywny sposób wprowadzania kodu do “sceny z siatką”. Z jego pomocą zrobimy to, nie tylko przez korzystanie z czystego kodu programistycznego, a w sposób wizualny, zupełnie jak w popularnym Scratchu. Łącząc bloczki występujące w Blockly, możemy programować w języku JavaScript, Phyton czy PHP.

Powyżej zaprezentowano jedynie powierzchownie to, jak można wykorzystać edytor mInstructor, do wspomagania nauki programowania na wszystkich etapach edukacyjnych. Mamy tutaj możliwość budowania w prosty sposób zadań wspomagających myślenie algorytmiczne, dostajemy możliwość użycia wizualnego języka programowania Blockly, czy też żywego kodu programistycznego JavaScript. W postaci edytora mInstructor, dostajemy do ręki narzędzie posiadające bardzo szerokie spektrum możliwych edukacyjnych zastosowań. Jako, że jest to darmowe i ogólnodostępne narzędzie, nie ograniczają nas fundusze czy warunki techniczne. Ogranicza nas tylko wyobraźnia.

Udostępnij post

Inne

artykuły

Mielno, 7-8.11, Forum Innowacyjnych Dyrektorów

2024-10-29

Inspiracje dla edukacji [Google for Education]

2024-12-04

Gdańsk, 28.11.2024, BeZee

2024-11-18