Etap IV (szkoła ponadgimnazjalna) – zakres rozszerzony, zajęcia do wyboru

W szkole ponadgimnazjalnej, kształcenie informatyczne w zakresie rozszerzonym przygotowuje m.in. do egzaminu maturalnego z informatyki, ale głównie jest wprowadzeniem do przyszłego kształcenia informatycznego w uczelni wyższej.

  1. Rozumienie, analizowanie i rozwiązywanie problemów. Uczeń:
    1. W rozwiązywaniu problemów stosuje metodę wstępującą lub zstępującą.
    2. Dobiera odpowiednią metodę algorytmiczną i struktury danych do rozwiązania problemu mając na uwadze jego poprawność i efektywność.
    3. Dobiera odpowiednie narzędzia informatyczne do implementacji rozwiązania problemu. Tutaj powinna się znaleźć lista problemów, które są w obecnej podstawie, jest zamieszczona na koń- cu.
    4. Objaśnia algorytm dobrany do rozwiązywania problemu, uzasadnia poprawność rozwiązania i ocenia jego efektywność.
    5. Prezentuje przykładowe problemy, dla których nie są znane algorytmy efektywne i uzasadnia posłużenie się w takich przypadkach algorytmami heurystycznymi (przybliżonymi).
    6. Ilustruje i wyjaśnia role pojęć (np. logarytm), obiektów i operacji matematycznych w projektowaniu rozwiązań problemów informatycznych i z innych dziedzin.
    7. Przedstawia sposoby reprezentowania w komputerze dowolnych liczb, dźwięków oraz animacji, w tym zasady wykonywania operacji logicznych przez komputer, z wykorzystaniem bramek logicznych.
    8. Wyjaśnia, jakie teoretycznie może być źródło błędów pojawiających się w obliczeniach komputerowych (błąd względny, błąd bezwzględny).
    9. Przedstawia przykłady obliczeń współbieżnych i uzasadnia korzyści z ich stosowania.
    10. Omawia i ilustruje rolę myślenia komputacyjnego i jego metod, takich jak: abstrakcja, reprezentacja danych, redukcja, rekurencja, przybliżanie rozwiązań, heurystyka w rozwiązywaniu problemów związanych i nie związanych z obliczeniami komputerowymi.
  2. Programowanie i rozwiązywanie problemów z wykorzystaniem komputera i innych urządzeń cyfrowych. Uczeń:
    1. Projektuje i tworzy rozbudowane programy w procesie rozwiązywania problemów, stosuje przy tym: instrukcje wejścia/wyjścia, wyrażenia arytmetyczne i logiczne, instrukcje iteracyjne, instrukcje warunkowe, funkcje i procedury z parametrami i bez parametrów,
    2. Wykorzystuje w programach dobrane do algorytmów struktury danych: zmienne, tablice, struktury dynamiczne, grafy (drzewa), korzysta z gotowych bibliotek dla tych struktur.
    3. Stosuje zasady programowania strukturalnego, modularnego i *obiektowego w realizacji metod rozwiązywania problemów.
    4. Sprawnie posługuje się zintegrowanym środowiskiem programistycznym przy pisaniu, uruchamianiu i testowaniu programów.
    5. Tworzy aplikacje na urządzenia mobilne, np. na smartfon lub tablety.
    6. Tworzy dokumentację wykonanego oprogramowania.
    7. *Charakteryzuje wybrane języki programowania pod względem ich przeznaczenia i stosowanej w nich metodyce programowania (strukturalne, obiektowe, funkcyjne). *Wybiera odpowiedni język do zaprogramowania rozwiązywania rozważanego problemu.
    8. Korzysta z arkusza kalkulacyjnego do zapisywania algorytmów, zależności funkcyjnych i kartotekowych baz danych oraz do wizualizacji danych i wyników obliczeń. Wykonuje eksperymenty obliczeniowe w arkuszu.
    9. Projektuje i tworzy relacyjną bazę złożoną z wielu tabel i aplikację bazodanową (w tym sieciową) dla danych związanych z rozwiązywanym problemem, stosuje język SQL do wyszukiwania informacji w bazie i do jej modyfikacji, uwzględnia kwestie integralności danych, bezpieczeństwa i ochrony danych w bazie.
    10. Projektuje, tworzy i utrzymuje dynamiczną stronę w Internecie, korzystając z odpowiednich narzędzi.
    11. *Tworzy złożony dokument tekstowy, również naukowy, za pomocą profesjonalnych systemów składu tekstu, np. TeX
    12. Aktywnie uczestniczy w wybranych serwisach e-learningowych, korzysta z serwisów udostępniających zasoby edukacyjne.
  3. Posługiwanie się komputerem, urządzeniami cyfrowymi i sieciami komputerowymi. Uczeń:
    1. Poznaje możliwości nowych urządzeń komputerowych i współpracujących z komputerami, możliwości nowego oprogramowania, w tym towarzyszącego nowym urządzeniom.
    2. Przedstawia zasady przesyłania informacji w sieci komputerowej (metody adresowania i protokoły). Opisuje warstwowy model sieci komputerowej oraz model sieci Internet.
    3. Określa, od czego zależy sprawne funkcjonowanie sieci komputerowej oraz szybki dostęp do jej usług i jej zasobów (parametry osprzętu sieciowego, szerokość pasma, zabezpieczenia typu ściana ogniowa, programy antywirusowe, możliwości serwera).
  4. Rozwijanie kompetencji społecznych. Uczeń:
    1. Posługuje się narzędziami i środowiskiem dedykowanym współpracy i projektom zespołowym.
    2. Bierze udział w realizacji zespołowego projektu programistycznego.
    3. Korzysta z otwartych zasobów w sieci i współtworzy je.
    4. Określa różnice w funkcjonowaniu między przedsięwzięciami tradycyjnymi i wirtualnymi.
    5. Analizuje i przedstawia trendy w historycznym rozwoju pojęć i metod informatyki i technologii oraz ich wpływ na możliwości tych dziedzin w rozwiązywaniu problemów teoretycznych i praktycznych.
    6. Określa zakres kompetencji informatycznych niezbędnych do wykonywania wybranych zawodów informatycznych (np. programisty, administratora systemów komputerowych w przedsię- biorstwie, administratora sieci lokalne lub rozległej).
    7.  Przygotowuje się do świadomego wyboru kierunku i zakresu dalszego kształcenia informatycznego z myślą o przyszłej karierze zawodowej.
  5. Przestrzeganie prawa i zasad bezpieczeństwa. Uczeń:
    1. Respektuje obowiązujące w kraju prawo autorskie dotyczące oprogramowania komputerowego i stosuje się do jego zapisów. Stara się przestrzegać również prawo dotyczące programów, podlegających pod inne systemy prawne.
    2. Stosuje normy etyczne i prawne związane z korzystaniem i rozpowszechnianiem programów, cudzych i własnych.

Lista problemów, które powinny się znaleźć w punkcie 3) w dziale I:

A. Problemy na liczbach całkowitych, np.:

  • otrzymywanie reprezentacji liczb w dowolnym systemie pozycyjnym, w tym w dwójkowym i szesnastkowym; zamiana reprezentacji między systemami;
  • sprawdzanie własności liczb, np. czy liczba jest liczbą pierwszą, doskonałą;
  • rozkładanie liczby na czynniki pierwsze (faktoryzacja);
  • znajdowanie największego wspólnego dzielnika dwóch liczb (algorytm iteracyjny i rekurencyjny, np. algorytm Euklidesa); 14
  • obliczanie wartości liczb Fibonacciego (iteracyjne i rekurencyjne);  wydawanie reszty (metoda zachłanna);
  • problem idola, szukanie lidera w zbiorze

B. Wyszukiwania i porządkowania (sortowania), np.:

  • znajdowanie elementu najmniejszego/największego, drugiego najmniejszego/największego;
  • jednoczesne znajdowanie największego i najmniejszego elementu w zbiorze (algorytm naiwny i optymalny);
  • algorytmy sortowania ciągu liczb: bąbelkowy, przez wybór, przez wstawianie liniowe lub binarne, przez scalanie, szybki, *na kopcu, przez zliczanie, kubełkowy – własności, drzewa algorytmów i oszacowanie pracochłonności algorytmów sortowania.

C. Problemy numeryczne, np.:

  • obliczanie wartości pierwiastka kwadratowego;
  • obliczanie wartości wielomianu za pomocą schematu Hornera;
  • zastosowania schematu Hornera: reprezentacja liczb w różnych systemach liczbowych, szybkie podnoszenie do potęgi;
  • wyznaczanie miejsc zerowych funkcji metodą połowienia;  optymalne pakowanie plecaka – algorytmy przybliżone i dokładne (programowanie dynamiczne)
  • *obliczanie przybliżonej wartości pola obszarów zamkniętych.
  • *zastosowanie metody Monte Carlo

D. Problemy na tekstach, np.:

  • sprawdzanie, czy dany ciąg znaków tworzy palindrom, anagram;
  • problem najdłuższego wspólnego podciągu (programowanie dynamiczne)
  • wyszukiwanie wzorca w tekście;
  • obliczanie wartości wyrażenia podanego w postaci odwrotnej notacji polskiej.

E. Problemy kompresji i szyfrowania, np.:

  • otrzymywanie kodów znaków o zmiennej długości, np. alfabet Morse’a, kod Huffmana;
  •  szyfrowanie metodą Cezara;
  • szyfrowanie metodą przedstawieniową;
  • szyfrowanie z kluczem jawnym (RSA);
  • wykorzystanie algorytmów szyfrowania, np. w podpisie elektronicznym.

F. Problemy geometryczne, np.:

  • sprawdzanie warunku trójkąta;
  • badanie położenia punktów względem prostej;
  • badanie przynależności punktu do odcinka;
  • przecinanie się odcinków;
  • przynależność punktu do obszaru;
  • konstrukcje rekurencyjne (fraktale), np.: drzewo binarne, dywan Sierpińskiego, płatek Kocha.
  • *wypukła otoczka zbioru punktów G. Algorytmy na grafach.
  • reprezentowanie grafu za pomocą macierzy sąsiedztwa i listy sąsiadów
  • przeszukiwanie grafu wszerz i w głąb
  • szukanie najkrótszej drogi w grafie
  • sortowanie topologiczne