Programowanie to język przyszłości, który warto rozwijać od najmłodszych lat. Tego języka powinny uczyć się już dzieci w szkole podstawowej, nie można tej nauki zaniedbać i na kolejnych etapach kształcenia. KhanAcademy jest najbardziej znana z zasobu filmów i ćwiczeń dotyczących matematyki, a w dalszej kolejności nauk przyrodniczych. Malo kto wie, że w KhanAcademy można się także uczyć informatyki, i to na dwa sposoby.
Pierwszy z nich Computer programming – programowanie będę opisywać dokładniej.
Drugi – Computer Science, to charakterystyczne dla Akademii Khana filmy z objaśnieniami i ćwiczenia. Zawiera on dwa rozbudowane działy:
- Journey into cryptography – podróż po (krainie) kryptografii; z tym działem łączą się challenges – problemy, ćwiczenia z kryptografii;
- Journey into information theory – podróż po teorii informacji.
Nie ma tu programowania, są podstawy matematyczne i algorytmiczne, programy stanowią ilustrację przedstawianych problemów. Jako próbkę (np. na lekcji informatyki w gimnazjum) proponuję obejrzenie dziesięciominutowego filmu Measuring information (Mierzenie informacji), a następnie przejście do logarytmów, obejrzenie filmu Logarithms (7 min.) i wykonanie ćwiczenia Evaluating logarithms. Daje to niezły przegląd możliwości, które oferuje Akademia Khana.
Computer programming – środowisko i zestaw lekcji programowania
Środowisko jest szybko rozwijane. Opisuję jego stan na koniec maja 2014. Uczy ono programowania w języku JavaScript, a do grafiki używa nakładki ProcessingJS. JavaScript jest popularnym językiem wykorzystywanym przy tworzeniu stron WWW.
Podstawy programowania w JavaScript zawiera pierwsza ścieżka: Intro to JS: Drawing & Animation (Wprowadzenie do JS: rysowanie i animacje). Jest tu znacznie więcej materiału niż sugeruje tytuł. Przechodzimy kolejno:
- Intro to programming (Wprowadzenie do programowania),
- Drawing Basics (Podstawy rysowania),
- Coloring (Kolorowanie),
- Variables (Zmienne),
- Animation basics (Podstawy animacji),
- Text and Strings (Teksty i łańcuchy),
- Functions (Funkcje),
- Logic and if Statements (Logika i instrukcje warunkowe if),
- Looping (Pętle),
- Arrays (Tablice),
- Objects (Obiekty),
- Object-Oriented Design (Projektowanie zorientowane obiektowo),
- Becoming a better programmer (Stań się lepszym programistą).
Każdy z tych działów zawiera interaktywne lekcje i ćwiczenia. Odbywają się one w stworzonym na potrzeby Akademii specjalnym środowisku składającym się z dwóch okien. W lewym wpisywany jest kod programu, w prawym znajduje się kanwa – okno wykonania programu. Każda zmiana kodu jest widoczna w oknie wykonania. To wszystko odbywa się oczywiście on-line na stronie Akademii.
Menu środowiska umożliwia:
- Tworzenie nowego programu (New Program),
- Przejście do biblioteki utworzonych programów (My Programs),
- Przeglądanie programów innych użytkowników (Browse Programs),
- Sięgnięcie do dokumentacji środowiska (Documentation),
- Zadanie pytania (prośby o pomoc)…
Programowanie nie jest tu oczywiście tak proste, jak w Scratchu, bo wymaga wpisywania kodu, ale dość łatwo można np. zaimplementować elementy grafiki żółwia i korzystać z rekurencji.
W trakcie badania możliwości środowiska zdołałem utworzyć:
Fraktale:
Symulacje:
Więcej bardziej rozbudowanych programów zawierają kolejne 3 ścieżki nauki programowania:
- Advanced JS: Games & Visualizations (Zaawansowany JS: gry i wizualizacje);
- Advanced JS: Natural Simulations (Zaawansowany JS: symulacje natury);
- Meet the Professional (Spotkaj się z zawodowcem);
Jest tu sporo materiału opisowego przeplatanego interaktywnymi przykładami programów, są także ćwiczenia (Challenges).
Trwają prace nad spolszczeniem tego środowiska (patrz: http://cs-blog.khanacademy.org/2013/11/call-for-volunteers-caption-our.html), ale póki co korzystanie z niego wymaga przynajmniej podstawowej znajomości angielskiego. Sądzę, że jest to jednak dobra propozycja dla uzdolnionych i zainteresowanych programowaniem uczniów gimnazjum. Rola nauczyciela może ograniczyć się do śledzenia postępów (Pokaż co zrobiłaś/zrobiłeś). Wierzę, że znajdziemy takich uczniów.