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.
- Rozumienie, analizowanie i rozwiązywanie problemów. Uczeń:
- W rozwiązywaniu problemów stosuje metodę wstępującą lub zstępującą.
- Dobiera odpowiednią metodę algorytmiczną i struktury danych do rozwiązania problemu mając na uwadze jego poprawność i efektywność.
- 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.
- Objaśnia algorytm dobrany do rozwiązywania problemu, uzasadnia poprawność rozwiązania i ocenia jego efektywność.
- 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).
- Ilustruje i wyjaśnia role pojęć (np. logarytm), obiektów i operacji matematycznych w projektowaniu rozwiązań problemów informatycznych i z innych dziedzin.
- 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.
- 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).
- Przedstawia przykłady obliczeń współbieżnych i uzasadnia korzyści z ich stosowania.
- 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.
- Programowanie i rozwiązywanie problemów z wykorzystaniem komputera i innych urządzeń cyfrowych. Uczeń:
- 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,
- Wykorzystuje w programach dobrane do algorytmów struktury danych: zmienne, tablice, struktury dynamiczne, grafy (drzewa), korzysta z gotowych bibliotek dla tych struktur.
- Stosuje zasady programowania strukturalnego, modularnego i *obiektowego w realizacji metod rozwiązywania problemów.
- Sprawnie posługuje się zintegrowanym środowiskiem programistycznym przy pisaniu, uruchamianiu i testowaniu programów.
- Tworzy aplikacje na urządzenia mobilne, np. na smartfon lub tablety.
- Tworzy dokumentację wykonanego oprogramowania.
- *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.
- 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.
- 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.
- Projektuje, tworzy i utrzymuje dynamiczną stronę w Internecie, korzystając z odpowiednich narzędzi.
- *Tworzy złożony dokument tekstowy, również naukowy, za pomocą profesjonalnych systemów składu tekstu, np. TeX
- Aktywnie uczestniczy w wybranych serwisach e-learningowych, korzysta z serwisów udostępniających zasoby edukacyjne.
- Posługiwanie się komputerem, urządzeniami cyfrowymi i sieciami komputerowymi. Uczeń:
- 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.
- Przedstawia zasady przesyłania informacji w sieci komputerowej (metody adresowania i protokoły). Opisuje warstwowy model sieci komputerowej oraz model sieci Internet.
- 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).
- Rozwijanie kompetencji społecznych. Uczeń:
- Posługuje się narzędziami i środowiskiem dedykowanym współpracy i projektom zespołowym.
- Bierze udział w realizacji zespołowego projektu programistycznego.
- Korzysta z otwartych zasobów w sieci i współtworzy je.
- Określa różnice w funkcjonowaniu między przedsięwzięciami tradycyjnymi i wirtualnymi.
- 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.
- 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).
- Przygotowuje się do świadomego wyboru kierunku i zakresu dalszego kształcenia informatycznego z myślą o przyszłej karierze zawodowej.
- Przestrzeganie prawa i zasad bezpieczeństwa. Uczeń:
- 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.
- 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