Nauka programowania w Akademii Khana

Narzędzia
Typografia
  • Smaller Small Medium Big Bigger
  • Default Helvetica Segoe Georgia Times

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.

fot. sxc.hu

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.