Przedmiotowy system oceniania

Przedmiotowy system oceniania (PSO) to podstawowe zasady wewnątrzszkolnego oceniania uczniów z danego przedmiotu. Powinien być zgodny z podstawą programową oraz wewnątrzszkolnym systemem oceniania (WSO). Prezentowany materiał może posłużyć nauczycielom jako pomoc w opracowaniu własnych systemów zgodnych z wytycznymi obowiązującymi w szkole.

 

Ocenę celującą otrzymuje uczeń, który spełnia kryteria ocen niższych, a ponadto:

·         charakteryzuje skomplikowane sytuacje algorytmiczne, proponuje optymalne rozwiązanie sytuacji problemowej z zastosowaniem złożonych struktur danych i biblioteki STL języka C++,

·         pisze programy o wysokim stopniu trudności: z olimpiad przedmiotowych, konkursów informatycznych lub oznaczone trzema gwiazdkami w podręczniku,

·         wyszukuje palindromy lub anagramy w plikach tekstowych,

·         tworzy palindromy z napisów, dopisując minimalną liczbę znaków,

·         pisze program rozkładający liczbę złożoną na dwie liczby pierwsze (hipoteza Goldbacha),

·         implementuje w języku C++ algorytm Euklidesa, stosując iterację i rekurencję,

·         pisze programy szyfrujące i deszyfrujące z wykorzystaniem zaawansowanych szyfrów (np. permutacyjny lub Vigenere’a) i różnych kluczy,

·         implementuje w języku C++ algorytm wyszukiwania binarnego w wersji rekurencyjnej,

·         pisze programy sortujące dane różnego typu w plikach tekstowych (liczby, napisy, pary),

·         stosuje zaawansowane algorytmy i struktury danych do wyszukiwania spójnych podciągów,

·         stosuje zaawansowane algorytmy wyszukiwania, np. najlepszego wyboru (trwałych par), stosując rekurencję,

·         pisze programy obliczające liczbę operacji przenoszenia krążków w problemie wież Hanoi, stosując iterację i rekurencję,

·         stosuje w programach algorytmy sortowania inne niż omawiane na lekcjach (np. heapsort),

·         bierze udział w olimpiadach i konkursach, zajmując punktowane miejsca,

·         w projektach zespołowych przyjmuje rolę lidera.

Ocenę bardzo dobrą otrzymuje uczeń, który spełnia kryteria ocen niższych, a ponadto:

·         charakteryzuje sytuacje algorytmiczne, proponuje sposoby ich rozwiązania,

·         pisze programy o podwyższonym stopniu trudności: oznaczone trzema gwiazdkami w podręczniku,

·         optymalizuje rozwiązania,

·         stosuje zaawansowane funkcje środowiska i języka programowania (np. z biblioteki STL),

·         dobiera struktury danych i metody do rodzaju problemu,

·         pisze programy konwertujące liczby między różnymi systemami pozycyjnymi,

·         w programach wykonujących działania na liczbach w różnych systemach pozycyjnych wykorzystuje bibliotekę string i strukturalne typy danych,

·         wykorzystuje rozwinięcie binarne liczby dziesiętnej w algorytmie szybkiego podnoszenia do potęgi,

·         wykonuje operacje arytmetyczne na liczbach w różnych systemach, implementuje je w języku C++,

·         stosuje różne sposoby przekazywania parametrów do funkcji, uzasadnia ich użycie,

·         pisze funkcje typu logicznego, np. sprawdzającą, czy napis jest palindromem,

·         sprawdza, czy napisy są anagramami, stosując sortowanie lub zliczanie znaków,

·         przy testowaniu liczby na pierwszość stosuje funkcję typu logicznego,

·         wyszukuje liczby bliźniacze,

·         wykorzystuje algorytm Euklidesa do działań na ułamkach, stosując struktury lub pary (typ pair),

·         szyfruje dane wczytane z pliku z uwzględnieniem polskich znaków diakrytycznych,

·         pisze program odczytujący informację ukrytą za pomocą szyfru Cezara z wykorzystaniem analizy częstości znaków w tekście,

·         pisze program wyszukujący jednocześnie minimum i maksimum w zbiorze z wykorzystaniem metody „dziel i zwyciężaj” oraz podaje wzór na liczbę wykonywanych operacji,

·         szacuje złożoność obliczeniową programów sortujących, modyfikuje funkcje sortujące, zmieniając porządek sortowania,

·         wykorzystuje poznane algorytmy do rozwiązywania problemów nieomawianych na lekcjach,

·         optymalizuje program realizujący algorytm sita Eratostenesa i szacuje jego złożoność czasową,

·         wyszukuje spójne podciągi w plikach tekstowych, stosując optymalne algorytmy (w tym programowanie dynamiczne), wyjaśnia ich działanie,

·         pisze programy obliczające liczbę operacji przenoszenia krążków w problemie wież Hanoi, stosując iterację i rekurencję,

·         do implementacji rozszerzonego algorytmu Euklidesa stosuje zarówno iterację, jak i rekurencję,

·         stosuje metody zachłanną i dynamiczną w problemach kasjera, harmonogramu wykorzystania sali i wyszukiwania drogi, wskazuje wady i zalety obu metod, szacuje złożoność czasową,

·         aktywnie uczestniczy w realizacji projektu zespołowego na wszystkich jego etapach, prezentuje efekty wspólnej pracy.

Ocenę dobrą otrzymuje uczeń, który spełnia kryteria ocen niższych, a ponadto:

·         określa specyfikację algorytmu (dane, wynik),

·         pisze programy o różnym stopniu trudności, szacuje ich efektywność,

·         przedstawia omawiane algorytmy w postaci opisu słownego, listy kroków, pseudokodu,

·         dobiera typy danych do realizacji problemu,

·         stosuje zmienne typu unsigned w tworzonych programach,

·         pisze programy konwertujące liczby między systemem dziesiętnym i binarnym,

·         implementuje w języku C++ algorytmy wykonujące działania arytmetyczne na liczbach w różnych systemach,

·         w algorytmach zamiany wykorzystuje zależności między systemami binarnym, ósemkowym i heksadecymalnym,

·         stosuje różne sposoby przekazywania parametrów do funkcji: przez wartość, referencję lub wskaźnik,

·         implementuje w języku C++ algorytmy sprawdzające, czy napis jest palindromem,

·         pisze programy sprawdzające, czy dwa napisy są anagramami, wykorzystując funkcję sort z biblioteki STL,

·         implementuje w języku C++ i optymalizuje algorytm sprawdzający, czy liczba jest pierwsza,

·         pisze program rozkładający liczby na czynniki pierwsze,

·         stosuje w programach algorytm Euklidesa do obliczenia NWD i NWW,

·         wykorzystuje algorytm Euklidesa do działań na ułamkach,

·         szyfruje dane wczytane z pliku tekstowego,

·         implementuje w języku C++ algorytm zliczania znaków w tekście oraz wyszukujący maksimum z wykorzystaniem tablic,

·         stosuje algorytm wyszukiwania binarnego i oszacowuje jego złożoność czasową,

·         pisze programy sortujące metodami prostymi z zastosowaniem funkcji typu void,

·         stosuje algorytmy sortowania szybkiego i przez scalanie,

·         pisze program realizujący algorytm sita Eratostenesa,

·         implementuje w języku C++ algorytmy wyszukujące spójne podciągi o różnych cechach,

·         porównuje algorytmy iteracyjne i rekurencyjne (liczbę wykonywanych operacji), szacuje ich złożoność czasową,

·         zapisuje w postaci programu rozszerzony algorytm Euklidesa, wyjaśnia jego działanie i zastosowanie,

·         stosuje metodę zachłanną w programach – problem kasjera, harmonogram wykorzystania sali, wyszukiwanie drogi,

·         uczestniczy w realizacji projektu zespołowego na wszystkich jego etapach, bierze czynny udział w tworzeniu dokumentacji projektowej.

Ocenę dostateczną otrzymuje uczeń, który spełnia kryteria oceny dopuszczającej, a ponadto:

·         przedstawia krótkie algorytmy w postaci listy kroków, opisu słownego, pseudokodu,

·         dodaje liczby binarne,

·         konwertuje liczby między pozycyjnymi systemami liczbowymi,

·         wykonuje działania arytmetyczne na liczbach w systemach liczbowych o różnych podstawach,

·         przedstawia liczby w kodzie U2,

·         definiuje pojęcie zdania logicznego, charakteryzuje podstawowe operacje logiczne (koniunkcja, alternatywa, negacja) oraz operatory logiczne,

·         charakteryzuje wybrane typy zmiennych służących do zapisu liczb całkowitych w języku C++: short int, int, long int, long long int,

·         pisze programy wykonujące działania na liczbach całkowitych,

·         korzysta z biblioteki string do operacji na łańcuchach znaków,

·         wykonuje operacje na napisach, wykorzystując słowa kluczowe: size, find, substr, erase,
toupper, tolower,

·         wczytuje napisy ze spacjami, wykorzystując słowo kluczowe getline,

·         tworzy algorytmy sprawdzające, czy napis jest palindromem,

·         przedstawia w postaci algorytmu problem wyszukiwania anagramów,

·         przy pisaniu programów stosuje własne funkcje różnych typów, w tym funkcję typu void,

·         wyjaśnia różnicę między parametrami formalnym i aktualnym, a także między zmiennymi lokalną i globalną,

·         implementuje w języku C++ algorytm naiwny sprawdzający, czy liczba jest pierwsza,

·         implementuje w języku C++ algorytm Euklidesa w wersjach z dzieleniem i odejmowaniem,

·         pisze program szyfrujący napis szyfrem Cezara,

·         omawia algorytm zliczania znaków w tekście oraz wyszukujący maksimum z wykorzystaniem tablic,

·         implementuje w języku C++ algorytmy wyszukiwania liniowego i liniowego z wartownikiem, porównuje ich efektywność,

·         przedstawia w postaci listy kroków algorytmy sortowania prostego (bąbelkowe, przez wybieranie) oraz szybkiego i przez scalanie, określa operacje dominujące,

·         omawia algorytm sita Eratostenesa,

·         przedstawia algorytmy znajdowania spójnych podciągów, wyznaczania najdłuższego z nich oraz podciągu o największej sumie elementów,

·         implementuje w języku C++ algorytmy rekurencyjne: obliczanie elementów ciągu Fibonacciego, wartości silni i potęgi,

·         omawia rozszerzony algorytm Euklidesa,

·         formułuje algorytm wydawania reszty minimalną liczbą monet, harmonogramu wykorzystania sali, znajdowania drogi metodami zachłanną i dynamiczną,

·         uczestniczy w realizacji projektu zespołowego, wykonując powierzone mu zadania.

 

Ocenę dopuszczającą otrzymuje uczeń, który:

·         definiuje podstawowe pojęcia z algorytmiki i programowania: algorytm, program, warunek, iteracja, rekurencja,

·         wymienia sposoby reprezentacji algorytmów,

·         korzysta ze środowiska programistycznego: pisze w nim kod, kompiluje i uruchamia program, odczytuje i zapisuje pliki,

·         pisze programy o niewielkim stopniu trudności,

·         omawia pojęcia: złożoność obliczeniowa algorytmu, algorytm naiwny, algorytm optymalny, złożoność pesymistyczna, złożoność oczekiwana (średnia),

·         korzysta z podstawowych funkcji języka: operacji wejścia i wyjścia, instrukcji warunkowych i iteracyjnych, gotowych funkcji bibliotecznych,

·         wymienia podstawowe typy danych, operacje arytmetyczne i logiczne,

·         w pisanych programach korzysta ze strukturalnych typów danych: napisów, struktur, tablic,

·         definiuje pojęcie systemów liczbowych,

·         wyjaśnia, czym jest tablica kodów ASCII,

·         wymienia systemy liczbowe używane w informatyce,

·         konwertuje liczby między systemami binarnym i decymalnym,

·         dodaje pisemnie liczby binarne,

·         wyjaśnia, czym są palindrom i anagram, podaje przykłady,

·         podaje definicje liczby pierwszej i liczby złożonej,

·         implementuje w języku C++ algorytm zliczający dzielniki danej liczby,

·         omawia geometryczną interpretację algorytmu Euklidesa,

·         definiuje pojęcia: kryptologia, kryptografia, kryptoanaliza, tekst jawny, klucz, szyfrogram,

·         rozróżnia szyfry podstawieniowe i przestawieniowe,

·         omawia szyfr Cezara jako przykład szyfru podstawieniowego i szyfr kolumnowy jako przykład szyfru przestawieniowego,

·         wyjaśnia, na czym polega łamanie szyfru,

·         omawia algorytm zliczania znaków w tekście,

·         wyjaśnia, na czym polega metoda „dziel i zwyciężaj”,

·         wczytuje dane z pliku tekstowego, zapisuje wyniki w pliku,

·         omawia algorytmy wyszukiwania liczby w zbiorach uporządkowanym i nieuporządkowanym,

·         stosuje funkcję losującą w tworzonych programach,

·         omawia metody sortowania prostego (bąbelkowe, przez wybieranie) oraz szybkiego i przez scalanie na przykładowych danych,

·         wypisuje liczby pierwsze z zadanego przedziału, stosując metodę sita Eratostenesa,

·         wyszukuje w ciągu liczb spójne podciągi (nierosnący, niemalejący, stały), wskazuje najdłuższe, oblicza ich sumę,

·         definiuje pojęcia iteracji i rekurencji,

·         omawia zasadę złotego podziału,

·         opisuje rozszerzony algorytm Euklidesa,

·         omawia metody zachłanne na przykładzie problemu kasjera, harmonogramu sali i wyszukiwania drogi,

·         porównuje metody zachłanną i dynamiczną,

·         uczestniczy w realizacji projektu zespołowego, wykonując powierzone mu zadania o niewielkim stopniu trudności.

Ocenę niedostateczną otrzymuje uczeń, który:

·         nie opanował podstawowych wiadomości i umiejętności, co uniemożliwia zdobywanie dalszej wiedzy,

·         nie jest w stanie scharakteryzować podstawowych pojęć (algorytm, warunek, iteracja, rekurencja),

·         nie zna prostych algorytmów,

·         nie rozwiązuje najprostszych zadań,

·         nie bierze czynnego udziału w lekcjach, nie wykonuje zadań, nie pisze programów, nie odrabia prac domowych.