Program fakultetu informatycznego

Transkrypt

Program fakultetu informatycznego
Fakultet Informatyczny
Algorytmy i ProgramowanIe
(API)
Program autorski fakultetu informatycznego
dla uczniów gimnazjum
do realizacji na zajęcia pozalekcyjne z komputerem
w klasach II
Autor:
mgr Rafał Spręga
nauczyciel informatyki
w Gimnazjum nr 16
Szczecin, 2010 r
WSTĘP
Niniejszy program autorski jest zgodny z Podstawą programową kształcenia ogólnego
opracowaną przez MENiS z 2009 roku oraz z podstawą programową informatyki.
Przygotowując uczniów do nabywania umiejętności związanych z poszukiwaniem,
przetwarzaniem i selekcjonowaniem informacji nie możemy zapomnieć o tym, że
Informatyka to przede wszystkim dziedzina nauki zajmująca się algorytmami
i programowaniem komputerów. To dzięki algorytmom jesteśmy w stanie uczynić z komputera
narzędzie, które znajduje praktyczne zastosowanie w wielu dziedzinach naszego życia. Bez
nich komputer stałby się bezużyteczną skomplikowaną maszyną.
Co roku obserwujemy duże zainteresowanie uczniów Naszej Szkoły nauką algorytmów
i programowania, która przejawia się w licznym udziale naszych wychowanków
w Olimpiadzie Informatycznej Gimnazjalistów i konkursach algorytmicznych. W ubiegłym
roku pod względem ilości finalistów Olimpiady Informatycznej Gimnazjalistów mieliśmy
drugi wynik w kraju. Natomiast w tym roku uczniów, którzy startowali w w/w olimpiadzie
było najwięcej w Polsce.
Mając na uwadze powyższe opracowałem autorski program fakultetu informatycznego, aby
uczniowie mogli rozwijać się w tej niełatwej dziedzinie wiedzy.
CHARAKTERYSTYKA PROGRAMU
Niniejsze opracowanie jest propozycją programu zajęć fakultetu informatycznego .
Dotyczy informatyki nauczanej na poziomie gimnazjum poszerzającej i pogłębiającej wiedzę
ucznia zdobytą na lekcjach informatyki. Program został skonstruowany tak, by nauczyciel
realizujący jego założenia mógł sprzyjać rozwojowi ucznia, kształtować jego umiejętność
samodzielnego myślenia, wyciągania logicznych wniosków i rozwiązywania postawionych
problemów. Program ten ma także na celu ujawnianie zainteresowań i kształtowanie uzdolnień
młodzieży w dziedzinie informatyki.
CELE PROGRAMU
Myślą przewodnią tego opracowania jest dążenie nauczyciela do jak stymulowania
aktywności poznawczej i twórczej uczniów. Chodzi bowiem nie tylko o samo pobudzenie
zainteresowań, lecz również o właściwe ukierunkowanie ciekawości poznawczej uczniów.
Program fakultetu traktować należy jako poszerzenie i uzupełnienie wiadomości z zakresu
informatyki. Zakłada się, że uczniowie posiadają już podstawową wiedzę z zakresu obsługi
komputera.
Do realizacji celów programu niezbędne jest spełnienie wymagań:
organizacyjnych - tygodniowo dwie godziny zajęć i 10 godzin zajęć w okresie ferii
zimowych oraz oddzielne stanowisko pracy dla każdego ucznia
sprzętowych - komputer osobisty z dostępem do Internetu pracujący w sieci.
licencjonowany system operacyjny Windows lub system Linux
środowisko programistyczne: DevCPP, Eclipse z kompilatorem języka C++.
system sprawdzający zadania algorytmiczne: SPOJ (www. spoj.pl) wraz
z zadaniami algorytmicznymi przygotowanymi przeze mnie
2
Ogólne cele kształcenia
1. Rozwijanie zainteresowań młodzieży informatyką .
2. Rozwijania uzdolnień w dziedzinie informatyki.
3. Kształtowania aktywności poznawczej i twórczej ucznia
4. Kształtowanie szacunku własności intelektualnej, współdziałania w zespole,
samooceny i dostrzegania potrzeby samokształcenia.
5. Ujawniania zainteresowań algorytmiką i programowaniem.
Należy również zwrócić uwagę na kształtowanie odpowiednich postaw przez:
przestrzeganie reguł prawnych określających zasady korzystania z oprogramowania
i danych komputerowych
poszanowania własności intelektualnej.
Cele szczegółowe
Uczeń powinien:
wymienić i tłumaczyć pojęcia związane z algorytmiką, takie jak poprawność
algorytmu, optymalizacja, złożoność pamięciowa i obliczeniowa
formułować zadanie algorytmiczne
zapisać algorytm za pomocą języka programowania
testować poprawność utworzonego przez siebie algorytmu/programu
znać podstawowe metody programowania, takie jak programowanie liniowe,
iteracja, programowanie z rozgałęzieniami, rekurencja
znać i przeliczać między sobą liczby z różnych systemów pozycyjnych jak również
implementować algorytmy konwersji między nimi.
dbać o przejrzystość pisanego przez siebie kodu, stosować wcięcia i komentarze
dobierać odpowiednie typy danych do zadania algorytmicznego
znać podstawowe algorytmy sortowania: sortowanie bąbelkowe, sortowanie przez
wybór, sortowanie przez zliczanie
znać pojęcie rekurencji i umieć stosować ją w typowych problemach
algorytmicznych
umieć stosować zasadę:”dziel i zwyciężaj” do rozwiązywania typowych problemów
algorytmicznych, wskazywać jej zastosowanie w „klasycznych”algorytmach, takich
jak np. sortowanie szybkie, sortowanie przez scalanie, czy wyszukiwanie binarne.
umieć optymalizować swoje algorytmy oraz opisywać ich złożoność
implementować oraz wykorzystywać podstawowe struktury algorytmiczne, takie
jak: stos, kolejka, lista, kolejka priorytetowa
3
implementować drzewa binarne oraz znać metody ich przechodzenie
(przeglądania): preorder, inorder i postorder
znać pojęcie grafu i potrafić go implementować za pomocą macierzy sąsiedztwa
bądź za pomocą listy sąsiedztwa
znać podstawowe algorytmy grafowe, takie jak przeszukiwanie grafów metodą
wszerz (BFS) i w głąb (DFS)
METODY NAUCZANIA I PROCEDURY OSIĄGANIA CELÓW
KSZTAŁCENIA I WYCHOWANIA
Metody nauczania
1. Wykład teoretyczny zawsze powinien być połączony z pokazem, prezentacją
lub ćwiczeniami prowadzonymi za pomocą sprzętu komputerowego.
2. Ćwiczenia uczniów mogą mieć charakter indywidualny lub grupowy.
3. Praca uczniów z zadaniami z serwisu automatycznie testującym zadania (SPOJ)
jak również innych systemów, np. : MAIN, OPSS.
4. Przeprowadzane ćwiczenia należy poprzedzać przykładami realizowanymi
przez nauczyciela, stopniowo przechodząc do pracy samodzielnej.
5. Skala trudności zagadnień realizowanych na zajęciach powinna być
dostosowana do możliwości percepcyjnych uczniów
6. Zawody programistyczne (indywidualne i grupowe) przeprowadzane w
systemie SPOJ, mające na celu symulowanie warunków zbliżonych do
panujących na konkursach programistycznych, jak również umiejętność
współdziałania w grupie i kształtujące postawę wzajemnej pomocy i wymiany
uwag.
Zasady nauczania
W toku zajęć powinny być uwzględnione potrzeby i oczekiwania uczniów - podmiotu
kształcenia.
Nauczanie powinno zatem przebiegać zgodnie z następującymi zasadami:
przystępności - przekazywanie wiadomości zrozumiale dla ucznia,
poglądowości - przekaz werbalny poparty odpowiednią prezentacją,
stopniowania trudności - świadome przejście od zadań prostych do zadań
złożonych,
związku teorii z praktyką.
4
Środki dydaktyczne
W pracy na zajęciach fakultatywnych należy wykorzystać różne środki dydaktyczne:
podręczniki:
- D. Harel, „Rzecz o istocie informatyki. Algorytmika”, Wydawnictwa
Naukowo-Techniczne, 1987;
- M. M. Sysło. Algorytmy, WSiP, 1997
- M.M. Sysło, Piramidy, szyszki i inne konstrukcje algorytmiczne, WSiP
- J. Bentley, Perełki oprogramowania, WNT
odpowiednie oprogramowanie,
komputerowa sieć lokalna,
portale internetowe: main.edu.pl, spoj.pl, oi.edu.pl/oig
tablica.
Sposób kontroli postępów uczniów
Kontrola postępów uczniów na fakultecie ma na celu dostarczenie informacji o
przystępności prowadzonych zajęć oraz stopniu zainteresowania uczniów danym
zagadnieniem. Formą kontroli osiągnięć uczniów będą tutaj również konkursy informatyczne i
olimpiady. Także odpowiednio przygotowane zadania do samodzielnej pracy dostarczą
nauczycielowi informacji na temat postępów uczniów.
TREŚCI KSZTAŁCENIA
Treści kształcenia koła informatycznego zostały podzielone na tematy, które nauczyciel
może uszczuplać lub poszerzać stosownie do warunków, w jakich przebiegać będą zajęcia.
Zadaniem nauczyciela jest umożliwienie uczniom wykorzystania gromadzonej wiedzy do
rozwijania kompetencji w zakresie:
świadomego wyboru i zastosowania w praktyce komputera osobistego,
rozwiązywania problemów związanych z algorytmami i programowaniem
korzystania ze źródeł informacji dostępnych za pomocą komputera,
samodzielne pogłębianie wiedzy informatycznej.
5
TEMATY PROGRAMOWE
I.
Podstawowe struktury danych w języku C++: (2 godziny)
1. Liczby całkowite ze znakiem i bez znaku
2. Liczby rzeczywiste
3. Przekroczenie zakresu liczb całkowitych.
4. Błąd zaokrąglania liczby rzeczywistej.
5. Utrata precyzji przy podstawowych operacjach matematycznych na liczbach
zmiennoprzecinkowych
II. Podstawowe konstrukcje sterujące (4 godziny)
1. if-else.
2. switch-case-default
3. while
4. do-while
5. for(;;)
III. Implementacja prostych gier komputerowych (2 godziny)
1. kostka do gry
2. gra w Oko dla dwóch graczy
3. gra w Oko dla człowieka i komputera
IV. Rozwiązywanie zadań programistycznych z wykorzystaniem poznanych konstrukcji
sterujących (4 godz.)
1. Rozwiązywanie zadań z serwisu SPOJ.
V. Podstawowe operacje na tablicach (2 godz.)
1. tablice jedno i dwu wymiarowe
2. gra w Kółko i krzyżyk..
3. gra Saper.
VI. Wybór elementu maksymalnego/minimalnego. (2 godz.)
1. Złożoność operacji przeszukiwania liniowego.
2. Jednoczesny wybór elementu minimalnego i maksymalnego.
3. Zasada dziel i zwyciężaj.
4. Przeszukiwanie zbioru z wartownikiem.
VII. Sortowanie przez zliczanie. (2 godz)
1. Algorytm sortowania
2. Złożoność
3. Ograniczenie sortowania przez zliczanie
VIII. Wskaźniki (2 godz.)
1. podstawowe operacje na wskaźnikach
2. pobieranie adresu zmiennej
6
7
IX. Podprogramy. (4 godz)
1. funkcje (zwracanie wartości)
2. procedury
3. przekazywanie parametrów przez wartość i przez referencję
4. przykłady użycia funkcji
X. Podstawowe struktury danych. (4 godz)
1. STOS i jego najprostsza implementacja
2. KOLEJKA i jej najprostsza implementacja
3. LISTA i jej najprostsza implementacja
4. Rozwiązywanie zadań w serwisie SPOJ z wykorzystaniem kolejki i stosu
XI. Algorytm Euklidesa. (4 godz)
1. Algorytm Euklidesa w wersji z odejmowaniem i resztą z dzielenia
2. Złożoność
3. Rozszerzony algorytm Euklidesa
4. Rozwiązywanie zadań w systemie SPOJ
XII. Pierwsze algorytmy rekurencyjne. (4 godz)
1. pojęcie i przykłady rekurencji
2. proste algorytmy rekurencyjne (odwracanie napisu, konwersja liczb,
wyznaczanie silni, itp., trójkąt Pascala)
3. niebezpieczeństwa związane z rekurencją
XIII. Zawody indywidualne w programowaniu I (4 godz.)
1. Rozwiązywanie zadań w serwisie SPOJ systemem olimpijskim.
2. Ranking zawodników
3. Nagrody i omówienie zadań.
XIV. Wyszukiwanie elementu powtarzającego się najczęściej (2 godz.)
4. algorytm naiwny i zoptymalizowany
5. algorytm z licznikami częstości.
XV. Lider w zbiorze (2 godz.)
1. wyszukiwanie lidera w zbiorze
2. złożoność algorytmu wyszukiwania lidera w zbiorze
XVI. Liczby pierwsze(4 godz.)
1. sprawdzanie, czy liczb jest pierwsza
2. wyszukiwanie liczb pierwszych
3. sito Eratostenesa
4. optymalizacja algorytmów
5. Rozwiązywanie zadań w systmie SPOJ
8
XVII. Duże liczby(4 godz.)
1. sposoby kodowania
2. dodawanie i mnożenie (metoda rosyjskich chłopów)
3. Wyliczanie wartości Fib(10000), 1000!
4. Rozwiązywanie zadań w systemie SPOJ
XVIII. Podział zbioru(2 godz.)
1. sortowanie szybkie (Quick Sort)
2. szybkie wyszukiwanie (binary search)
XIX. Algorytmy rekurencyjne (4 godz.)
1. Wieże Hanoi
2. Problem n-hetmanów
3. Problem konika szachowego
XX. Zmienne tworzone przez programistę- struktury (4 godz.)
1. pojęcie i przykłady struktur
2. definiowanie własnych struktur
3. rozwiązywanie zadań w systemie SPOJ z wykorzystaniem struktur
XXI. Zmienne dynamiczne (6 godz.)
4. tworzenie i usuwanie zmiennej. Operator new oraz delete
1. jednowymiarowe tablice dynamiczne
2. wielowymiarowe tablice dynamiczne
3. STOS i KOLEJKA z użyciem zmiennych dynamicznych i wskaźników
4. informacja o bibliotece STL
XXII. Zawody indywidualne w programowaniu II(4 godz.)
1. Rozwiązywanie zadań w serwisie SPOJ systemem olimpijskim.
2. Ranking zawodników
3. Nagrody i omówienie zadań.
XXIII. Kopiec (stóg) (4 godz.)
1. Tworzenie kopca.
2. dodawanie elementów do kopca
3. usuwanie elementów z kopca
4. sortowanie przez kopcowanie
5. kolejka priorytetowa
6. złożoność
9
OCZEKIWANE OSIĄGNIĘCIA UCZNIÓW
Zakłada się osiągnięcie przez uczniów kompetencji w zakresie:
umiejętności rozwiązywania różnych problemów algorytmicznych za pomocą
komputera osobistego,
korzystanie z zasobów internetowych,
umiejętność programowania w języku C++
umiejętność opisu sytuacji problemowej za pomocą algorytmu.
implementacja podstawowych algorytmów za pomocą języka programowania
umiejętność tworzenia własnych struktur danych
ROLA NAUCZYCIELA W PROCESIE DYDAKTYCZNYM
Nauczyciel powinien:
odpowiednio organizować pracę uczniów, uwzględniając warunki techniczne szkolnej
pracowni komputerowej
przedstawić i zapewnić warunki bezpiecznej i higienicznej pracy z komputerem
stosować odpowiednie metody i zasady pracy
prowadzić zajęcia głównie w pracowni komputerowej
dążyć do osiągnięcia założonych celów
rozwijać aktywność uczniów
wspierać rozwój uczniów, kształtując jego samodzielność intelektualną
umożliwiać dokonywanie wyborów edukacyjnych stosownie do uzdolnień ucznia i jego
osiągnięć
wychowywać młodzież w duchu poszanowania własności intelektualnej.
1
LITERATURA:
1. D. Harel, „Rzecz o istocie informatyki. Algorytmika”, Wydawnictwa
Naukowo-Techniczne, 1987;
2. N. Wirth, „Algorytmy+struktury danych=programy”, Wydawnictwa
Naukowo-Techniczne, 1980 (1999);
3. J. Grębosz. „Symfonia C++”, Tom I, Wydawnictwo Editions 2000
4. M. M. Sysło. Algorytmy, WSiP, 1997
5. M.M. Sysło, Piramidy, szyszki i inne konstrukcje algorytmiczne, WSiP
6. J. Bentley, Perełki oprogramowania, WNT
1

Podobne dokumenty