Kwalifikacji uczniów do poszczególnych grup kursowych dokonują nasi nauczyciele na podstawie wywiadu lub testu umiejętności. Tworzymy następujące grupy uczniów:
- Początkująca – obejmuje poziom zerowy i/lub podstawowy, zajęcia na podstawie Scratch i wstęp do C++;
- Zaawansowana – dotyczy poziomów średniozaawansowanego i zaawansowanego, języki C++, C#, Python, Java;
- Grafika komputerowa – dla uczniów rozpoczynających naukę grafiki komputerowej;
- Kontynuacja nauki – uczniowie, którzy kontynuują naukę w ESI, bez względu na poziom i kierunek kształcenia. Staramy się, w miarę możliwości, odtwarzać grupy z poprzedniego roku, aby uczniowie pracowali w gronie znanych sobie rówieśników.
Niezależnie od przydziału do grupy uczniowie prowadzeni są indywidualnie przez nauczycieli. Jest to możliwe dzięki bardzo małym grupom, w jakich pracujemy. W bieżącym roku liczebność grup została ograniczona od 3 do 6 uczniów. Jest to podyktowane również względami sanitarnymi.
Poziom zerowy (7-9 lat)
Oczekiwane rezultaty
Uczeń rozumie podstawowe pojęcia z zakresu algorytmiki – problem/zadanie, rozwiązanie, dane wejściowe. Uczeń umie wykorzystać podane dane wejściowe do stworzenia wymaganych danych wyjściowych. Wie też, kiedy taka sytuacja jest niemożliwa, tzn. danych wejściowych jest za mało. Uczeń rozumie podstawowe pojęcia z zakresu logiki – operatory AND, OR, operatory porównania. Uczeń umie wykorzystać je w praktyce do budowania (prostych) wyrażeń logicznych.
Uczeń rozumie ideę pętli, instrukcji warunkowych, zdarzeń (np. naciśnięcie klawisza), zmiennych itd. na podstawie abstrakcyjnego podejścia oferowanego przez Scratch.
Uczeń potrafi zrobić prosty program w Scratch wykorzystując powyższą wiedzę. Uczeń opanowuje podstawy grafiki komputerowej – narzędzia: arrow tool, brush tool, eraser tool, select. Potrafi rysować maskować i nanosić warstwy wykorzystując poznane narzędzia.
Poziom podstawowy (10-12 lat)
Oczekiwane rezultaty
Uczeń rozumie podstawowe pojęcia z zakresu programowania na przykładzie języka C++ – zmienna, stała, tablica, wskaźnik, funkcja (typ zwracany, przekazywanie zmiennych), klasa (podstawy), metoda, rekurencja, pętla (for, do, while), instrukcja warunkowa (if, else, switch), komentarz, standardowe wejście i wyjście programu. Uczeń, dzięki powyższym zdolnościom, potrafi samodzielnie napisać i uruchomić prosty program wykonujący dowolną (w ramach rozsądku) czynność.
Uczeń potrafi nadawć głębię obrazom rozumiejąc jak działa przestrzeń (2D, 2,5D, 3D, negative space). Wykonuje własne prace na podstawie zdjęć i/lub widocznych obiektów wykorzystując efekty warstw (np. Blending Options) i tworzy pierwsze projekty (np. gra planszowa, laurka, plakat, ikona).
Poziom średniozaawansowany (13-15 lat)
Oczekiwane rezultaty
Uczeń rozumie zaawansowane pojęcia z zakresu programowania – referencja, dziedziczenie, polimorfizm, klasa abstrakcyjna, metoda wirtualna, interfejs, funkcja zaprzyjaźniona, konstruktor kopiujący i przenoszący, wyjątki.
Uczeń rozumie relacyjne bazy danych – rekord, tabela, relacja, podstawy języka SQL. Uczeń potrafi samodzielnie zaprojektować, stworzyć i uruchomić prostą bazę danych.
Uczeń rozumie podstawy HTML i CSS – tag, selektor, podstawowe właściwości oferowane przez CSS. Uczeń potrafi samodzielnie stworzyć prostą stronę internetową, a następnie dokonać na niej zmian żądanych przez prowadzącego – np. zmienić kolor tła, wielkość czcionki, dodać ramkę do elementu itp.
Uczeń poznaje grafikę rastrową i wektorową oraz różnice między nimi. Tworzy pierwsze rysunki wektorowe, doskonali posługiwanie się kolorami i wzorami. Potrafi tworzyć wzory skończone i nieskończone.
Poziom zaawansowany (16-18 lat)
Oczekiwane rezultaty
Uczeń rozumie ideę komponentowego projektowania oprogramowania. Uczeń potrafi zaprojektować zaawansowany program (np. grę 2D) w języku C++, C# lub Java, a następnie, przynajmniej częściowo, wykonać go w oparciu o bibliotekę SFML lub framework XNA.
Uczeń rozumie w zadowalającym stopniu HTML, CSS, JavaScript, jQuery, PHP. W połączeniu z nabytą wcześniej wiedzą o bazach danych potrafi stworzyć praktyczną stronę internetową.
Uczeń biegle obsługuje programy do tworzenia grafiki komputerowej. Potrafi łączyć techniki wektorowe i rastrowe. Uczeń opanowuje metody obróbki zdjęć (ajustment layers, maskowanie / wycinanie, healing brush itp.). Poznaje różne rodzaje druku (CMYK, RGB, HSB, LAB). Doskonali swoje kompetencje artystyczne (percepcja, kompozycja, kolor, przestrzeń).
Najważniejsze wykorzystywane języki programowania
Scratch jest edukacyjnym językiem obiektowym, stworzonym jako środek do nauczania dzieci i młodzieży (od 8 lat wzwyż) podstaw programowania komputerów oraz środowisko programistyczne służące do tworzenia i uruchamiania programów w tym języku. Został zaprojektowany przez Mitchela Resnicka i jest dalej rozwijany przez zespół pracujący w Lifelong Kindergarten Group w MIT Media Lab (amerykańska uczelnia Masachusetts Institute of Technology). Scratch umożliwia tworzenie interaktywnych historyjek, animacji, gier, muzyki itp. Programowanie odbywa się w sposób wizualny – elementy języka mają kształt puzzli, a poprzez przeciąganie mogą być układane w określonym porządku. W ten sposób tworzy się kod przypisany określonemu obiektowi. Obiekty mogą reagować na zdarzenia zewnętrzne. Wygląd postaci przypisanych do obiektów można wybierać z zasobnika, tworzyć lub importować z zewnątrz. Scratch jest jednym z popularnych języków programowania (wg rankingu Tiobe) i najpopularniejszym językiem wizualnym. Istnieje konwerter online pozwalający na tworzenie aplikacji na system operacyjny Android.
C++ został zaprojektowany przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i silną statyczną kontrolę typów. Zachowanie zgodności z językiem C na poziomie kodu źródłowego pozostaje jednym z podstawowych celów projektowych kolejnych standardów języka. W latach 90. XX wieku język C++ zdobył pozycję jednego z najpopularniejszych języków programowania ogólnego przeznaczenia. Na początku XXI wieku liczbę programistów języka C++ szacowano już na około 3 miliony. To potężne narzędzie. Programiści używają C++ przy pracy nad układami sterującymi pracą silnika samochodowego i ABS. Na C++ stoi również sprzęt sterujący samolotami, rakietami, pociskami rakietowymi, inteligentnymi bombami czy też sprzęt gospodarstwa domowego (zmywarki, mikrofalówki). W C++ programuje się sprzęt medyczny np. monitory holterowskie oraz bankomaty. Język C++ jest wykorzystywany do wysokobudżetowych gier komputerowych z kategorii triple-A, obliczeń naukowych, grafiki komputerowej, systemów operacyjnych, big data, systemów rozproszonych.
Java to współbieżny, oparty na klasach, obiektowy język programowania ogólnego zastosowania. Został stworzony przez grupę roboczą pod kierunkiem Jamesa Goslinga z firmy Sun Microsystems. Java jest językiem tworzenia programów źródłowych kompilowanych do kodu bajtowego, czyli postaci wykonywanej przez maszynę wirtualną. Język cechuje się silnym typowaniem. Jego podstawowe koncepcje zostały przejęte z języka Smalltalk (maszyna wirtualna, zarządzanie pamięcią) oraz z języka C++ (duża część składni i słów kluczowych). To jeden z najpopularniejszych języków programowania na świecie (według indeksu Tiobe). W Javie można zrealizować niemal wszystkie zadania informatyczne, wszelkiego rodzaju aplikacje internetowe (małe, duże i ogromne) oraz aplikacje mobilne (Android). Aplikacje pisane w Javie działają na Windowsie, na Linuksie, w telefonie. Java stanowi podstawę wielu aplikacji m.in. Google, Snapchat, Netflix, Linkedin, Uber, Ebay, Spotify oraz Amazon.
Ścieżka edukacyjna w Europejskiej Szkole Informatyki ilustruje jak uczniowie mogą pokonywać kolejne poziomy zaawansowania. Można rozpocząć np. w wieku 7-8 lat od Scratcha, a w kolejnych latach przeskoczyć na grafikę lub tworzenie stron www, a można też po opanowaniu podstaw programowania pójść drogą „poważnego” programowania w stronę języków C++, Python lub Java. Każdy uczeń może dobrać sobie indywidualnie ścieżkę rozwoju stosownie do swoich zainteresowań i predyspozycji. Konstrukcja ścieżki edukacyjnej jest na każdym poziomie konsultowana z naszymi nauczycielami.