Sylabus 1. Nazwa jednostki prowadzącej kierunek, Warszawska Wyższa Szkoła Informatyki 2. Nazwa kierunku, Informatyka 3. Nazwa przedmiotu, Programowanie w Abstrakcyjnych Typach Danych 4. Określenie przedmiotów wprowadzających wraz z wymaganiami wstępnymi, − Analiza matematyczna: ciągi, szeregi, zbieżność, reguła de L'Hopitala, pojecie całki. − Matematyka Dyskretna: podstawy rachunku zdań, kwantyfikatory, dowody indukcyjne, operacje na zbiorach, relacje, funkcje, podstawy kombinatoryki, podstawowe własności grafów i drzew. − Metody probabilistyczne i statystyka: elementarny rachunek prawdopodobieństwa, wartość oczekiwana, prawdopodobieństwo warunkowe (do wzoru Bayes'a włącznie). − Metody programowania: znajomość podstaw programowania obiektowego wraz z praktyczna znajomością języka programowania wysokiego poziomu zorientowanego obiektowo (np. C++); − Algorytmy i struktury danych: złożoność obliczeniowa, notacja "duże O"; weryfikacja poprawności; podstawowe struktury danych: tablice, struktury wskaźnikowe; podstawowe algorytmy: wyszukiwanie, sortowanie; rekurencja. „Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego” 5. Liczba godzin zajęć dydaktycznych, w tym wykładów, ćwiczeń, laboratoriów, seminariów itp., realizowanych w systemie studiów stacjonarnych i niestacjonarnych, − Studia stacjonarne − 15 godzin wykładów − 5 godzin laboratoriów − Studia niestacjonarne − 15 godzin wykładów − 5 godzin laboratoriów 6. Liczba punktów ECTS, ??? 7. Założenia i cele przedmiotu, Celem przedmiotu jest zaznajomienie słuchaczy z metodami programowania na poziomie abstrakcyjnych typów danych wraz z ich praktycznymi zastosowaniami. Mimo ze przedmiot należy do grupy Programowanie, bazować on będzie na pojęciach matematycznych oraz teoretycznych. Po zaliczeniu przedmiotu, studenci powinni posiąść dyscyplinę programowania która umożliwi im stosunkowo łatwe i klarowne rozwiązywanie złożonych problemów. Wykład ilustrowany będzie ciekawymi zastosowaniami w informatyce i sztucznej inteligencji. Nacisk będzie położony na wyrobienie praktycznych umiejętności i wzbudzenie zainteresowania tematyka przedmiotu a nie na jego aspekty teoretycznoformalne. 8. Metody dydaktyczne, − Część wykładowa przedmiotu jest prezentowana w formie klasycznego wykładu audytoryjnego, z użyciem środków multimedialnych i interakcyjnych narzędzi programowania. − W części laboratoryjnej studenci będą implementować zadane programy w zintegrowanym środowisku programowym. „Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego” 9. Forma i warunki zaliczenia przedmiotu, − Warunkami zaliczenia przedmiotu są: obecność na wykładach, kodowanie i wykonywanie zadanych programów w laboratoriach, oraz zdanie pisemnego egzaminu końcowego składającego sie z zadania laboratoryjnego, którego rozwiązanie wymagać będzie umiejętności programowania obiektowego z użyciem abstrakcyjnych typów danych. 10. Program zajęć 1 tydzień 23-27.05.2011, w godz. od 15.00 do 19.00. Poniedziałek Wykład: Godzina 1: Przegląd preliminariów matematycznych; definiowanie przez indukcje, listy, drzewa, grafy, zbiory. Godzina 2: Wprowadzenie do języka programowania Java; klasy, obiekty, i metody; specyfika wywołań przez wartość; techniczne uwagi n.t. rekursji. Godzina 3: Pojecie abstrakcyjnego typu danych - przykład wstępny. Laboratorium: Godzina 4: Wprowadzenie do zintegrowanego środowiska programowania; uruchomienie pierwszego programu. Wtorek Wykład: Godzina 1: Abstrakcyjne typy danych: LIST (lista), QUEUE (kolejka), i STACK (stos). Godzina 2: Abstrakcyjne typy danych: TREE (drzewo). Godzina 3: Szacowanie złożoności obliczeniowej drzew; zastosowania. Laboratorium: Godzina 4: Przeszukiwanie drzew. „Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego” Środa Wykład: Godzina 1: Abstrakcyjne typy danych: GRAPH (graf) i DIAGRAPH (graf skierowany) Godzina 2: Przeszukiwanie grafów z zastosowaniami. Godzina 3: Wyszukiwanie punktów artykulacji grafu; grafy dwuczęściowe; kolorowanie grafów. Laboratorium: Godzina 4: Wyszukiwanie cykli w grafach Czwartek Wykład: Godzina 1: Abstrakcyjne typy danych SET (zbiór). Godzina 2: Implementacja zbiorów metoda drzew; złożoność obliczeniowa. Godzina 3: Adaptacyjne metody implementacji zbiorów; złożoność obliczeniowa. Laboratorium: Godzina 4: Konstrukcja optymalnego drzewa pokrywającego wierzchołki zadanego grafu. Piątek Wykład: Godzina 1: Zastosowania w sztucznej inteligencji i sieciach komputerowych. Godzina 2: Szacowanie złożoności problemów; ograniczenia teoretyczne praktycznej rozwiązywalności. „Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego” Egzamin: Godzina 3, 4: Egzamin pisemny - projekt i implementacja wykonywalnego programu z użyciem abstrakcyjnych typów danych. Ocena z egzaminu zależeć będzie od jakości, poprawności, złożoności, i kompletności implementacji. 11. Wykaz literatury podstawowej i uzupełniającej, Literatura podstawowa: 1) Notatki z wykładu - będą udostępnione dla studentów na Internecie. 2) Podręcznik do programowania w języku Java (do indywidualnego wyboru przez studentów). Klasyczna literatura uzupełniająca (nieobowiązkowa): 1) Aho, A. V., Hopcroft, J.E., Ullman, J.D. (1983). "Data Structures and Algorithms." Addison-Wesley. 2) Knuth D.E. (1997). "The Art of Computer Programming, Volume 1: Fundamental Algorithms." Addison-Wesley. 3) Knuth D.E. (1998). "The Art of Computer Programming, Volume 3: Sorting and Searching." Addison-Wesley. 4) Standish, T. A. (1998). "Data Structures in Java." Addison-Wesley. 12. Nazwisko osoby prowadzącej/osób prowadzących, Wykład i Laboratorium: Prof. dr inż. Marek A. Suchenek, California State University Dominguez Hills. „Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego”