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