Informatyka stosowana, 5 semestr 2016/17
Transkrypt
Informatyka stosowana, 5 semestr 2016/17
Informatyka stosowana, 5 semestr 2016/17 Przedmioty do wyboru dla studentów obecnego 4go semestru należy wybrać 3 spośród 8. Przedmiot Koordynator Limit osób • Kurs C dr hab Przemysław Koprowski 50 • Kurs Java dr hab. Zbigmiew Dendzik 30 • Bazy Danych II dr Rafał Tyrala 20 • Wstęp do teorii gier dla informatyków prof. dr hab. Marek Szopa • Autonomiczne roboty latające II • Kurs administrowania systemami uniksowymi • 10 dr hab Michał Mierzwa 10 dr Bartosz Dziewit 30 Elementy administracji baz danych dr hab. inż. Andrzej Grzybowski • Kryptografia i bezpieczeństwo komputerowe dr hab Mieczysław Kula 20 30 Rejestracja rozpoczyna się w środę, 22 czerwca, o godz. 17:00 i trwa 7 dni. Link do strony USOSweb: https://usosweb.us.edu.pl/kontroler.php? _action=katalog2/przedmioty/szukajPrzedmiotu&method=rej&rej_kod=03ISDZ5M 16%2F17Z Przedmioty obowiązkowe. Link do strony USOSweb: https://usosweb.us.edu.pl/kontroler.php? _action=katalog2/przedmioty/szukajPrzedmiotu&method=rej&rej_kod=03ISDZ5 16%2F17Z&callback=g_109a11b0 Poniżej zamieszczono opisy przedmiotów do wyboru. Kurs C Celem przedmiotu jest nauczenie studentów programowania w standardowym języku C, zgodnie ze standardem ISO C99 (z elementami ISO C11). Kurs nie koncentruje się na żadnym konkretnym kompilatorze ani żadnej konkretnej platformie, w związku z czym obejmuje tylko uniwersalne stan dardowe elementy języka dostępne na wszystkich platformach systemowych. Dzięki czemu stu denci mogą wykorzystać zdobyte umiejętności zarówno w Linux, Windows, jak też na przykład w systemach wbudowanych. Zakładane jest przy tym zarówno nabycie umiejętności programowania stricte w C, jak również przygotowanie do nauki programowania w C++. Główny nacisk położony jest na opanowanie praktycznych umiejętności tworzenia i testowania programów. Program przedmiotu obejmuje następujące elementy: 1. Krótki przegląd języka C: program "Hello world", struktura programu w języku C, przykłady użycia funkcji printf; deklarowanie zmiennych, tablice znaków, funkcja scanf, pętla for, instrukcja if; komentarz, formatowanie kodu; dyrektywa #define}, funkcje putchar, getchar; przykłady operatorów arytmetycznych; przykłady definiowania i używania funkcji. 2. Zmienne typy atomowe: deklaracja i zasięg zmiennych, zmienne zewnętrzne, inicjalizacja; typy całkowite: signed/unsigned, char, int, short/long, long long; typy _Bool oraz bool, plik stdbool.h; typy zmiennoprzecinkowe: float, double, long double; typy _Complex oraz _Imaginary; typ void; stałe znakowe, całkowite i zmiennoprzecinkowe; klasy pamięci: auto, static, register, extern, typedef, kwalifikatory const, volatile, restrict, przypisanie wartości początkowej; typ wyliczeniowy enum. 3. Operatory: lista i priorytety; operatory arytmetyczne +,,*,/,\%; operatory jednoargumentowe !,+,,++,; operatory porównania <,>, ==, <=, >=, !=; oparatory bitowe &, |, ^, <<, >>, ~; oparatory przypisania =, +=, =, *=, /=, %=, ^=, |=, <<=, >>=, &=; oparatory &&, ||, ,(przecinek), ?:; przekształcanie typów, operator rzutowania. 4. Sterowanie: instrukcja warunkowa if... else; instrukcja wyboru switch.. case... default; pętle for, while, do... while; instrukcje break, continue; funkcje, funkcje inline, funkcje o zmiennej liczbie argumentów, przekazywanie argumen tów przez wartość. 5. Agregujące typy danych (1) wskaźniki i tablice: tablice jednowymiarowe, wskaźniki do zmiennych, równoważność tablic i wskaźników; operatory wskaźnikowe *, &, [], arytmetyka wskaźników; tablice wielowymiarowe, tablice wskaźników; przypisywanie wartości początkowych, inicjowanie wskazanych komórek; alokacja pamięci funkcje malloc, calloc, free, operator sizeof, typ size_t; uniwersalny typ wskaźnikowy void*; kwalifikator restrict; wskaźniki do funkcji; tablice o zmiennej długości. 6. Agregujące typy danych (2) struktury i unie: deklaracje struct i union, wykorzystanie klasy typedef; operatory .(kropka), >; przypisywanie wartości początkowych, inicjowanie nazwanych pól; struktury i funkcje; struktury zagnieżdżone, tablice struktur; anonimowe struktury i unie (C11); pola bitowe. 7. Dynamiczne struktury danych: wskaźniki do struktur; listy jedno i dwukierunkowe, drzewa binarne; stos (LIFO), kolejka (FIFO) i bufor cykliczny. 8. Preprocesor: dyrektywy #define, #undef, #include; kompilacja warunkowa, dyrektywy #if, #ifdef, #ifndef, #else, #elif, #endif; dyrektywa #error; 9. Wybrane funkcje biblioteki standardowej: wejście wyjście: putchar, getchar, putc, getc, puts, gets_s, printf, scanf, fputs, fgets, fprintf, fscanf, sprintf, scantf; operacje na tablicach znaków: strcat, strcmp, strcpy, strlen; opracje na blokach pamięci: memcpy, memcmp, memset, memmove; operacje na plikach: fopen, fclose, fseek. Literatura ========== 1. D. Kernighan, D. Ritchie "Język ANSI C", WNT, 2002 2. "Programming languages — C", Standard ISO C99, ISO/IEC 9899:1999 3. "Information technology Programming languages C", Standard ISO C11, ISO/IEC 9899:2011 3. P. Koprowski, "0x80 zadań z C i C++", Exit 2009 Kurs programowania w języku Java 15 h wykładu i 45 h laboratorium Rozwiązania wykorzystujące język Java znajdują szerokie zastosowanie w wielu dziedzinach – od programowania sieciowego i grafiki komputerowej, poprzez kompleksowe rozwiązania korporacyjne (SAP) i wielkoskalowe aplikacje internetowe (serwisy internetowe banków), po systemy czytników kart chipowych i tunery telewizji cyfrowej. Java jest także podstawowym językiem programowania aplikacji dla systemu Android, najbardziej dynamicznie rozwijającej się platformy aplikacji dla urządzeń mobilnych – jednego z najbardziej dynamicznie rozwijających się segmentów rynku IT. Praktyczna umiejętność programowania w języku Java stanowi ważny element wykształcenia absolwenta studiów informatycznych i należy do najbardziej pożądanych kwalifikacji na rynku pracy w sektorze IT (rankingi Tiobe i GitHut). W styczniu 2016 r, w serwisie Indeed.com było dostępnych około 45 tys. ofert pracy związanych z różnymi aspektami programowania w języku Java. Dla porównania, większa ilość ofert – około 50 tys. - była dostępna tylko dla programistów SQL, dla programistów Javascript było dostępne 43 tys. ofert, dla programistów C# - 25 tys. ofert, a dla programistów PHP – 10 tys. ofert. Program zajęć obejmuje podstawy programowania obiektowego w języku Java (abstrakcja danych, klasy i obiekty, pakiety, zmienne typów wbudowanych i referencje do obiektów, zarządzanie pamięcią, operacje na obiektach, obsługa wyjątków, dziedziczenie, polimorfizm, typy generyczne), wykorzystanie wybranych funkcjonalności Java API (gniazda sieciowe i komunikacja klient-serwer, wątki i synchronizacja wątków, graficzny interfejs użytkownika i obsługa zdarzeń, grafika i animacja), podstawy programowania aplikacji internetowych (serwlety i JSP) oraz programowania aplikacji mobilnych (Android). Podejmowanie decyzji dla informatyków wykład 30 godz., konwersatorium 30 godz. Celem wykładu jest przedstawienie aktualnego stanu wiedzy na temat mechanizmów podejmowania decyzji przez ludzi ze szczególnym uwzględnieniem informatycznych systemów wspomagania decyzji. Wykład będzie podzielony na trzy części: 1) Ana liza normatywna: a) wiel okryterialne metody decyzyjne: techniki SMART, AHP, MACBETH i programy je realizujące b) drz ewa decyzyjne, zastosowanie rachunku prawdopodobieństwa c) decyzje podejmowane w warunkach konkurencji – zastosowania teorii gier 2) Ana liza deskryptywna: a) podejmowanie decyzji w warunkach niepewności, wykorzystanie funkcji użyteczności b) fizjologia myślenia i ewolucyjne ograniczenia racjonalności decyzji, heurystyki i błędy oceny szans c) typowe pułapki decyzyjne (zakotwiczenie, przywiązanie do status quo, koszty utopione, definicja problemu, dowody potwierdzające, oceniania i prognozowania) 3) Ana liza preskryptywna: a) metody przydziału zasobów oparte na algorytmach dopasowania b) zastosowanie symulacji w problemach decyzyjnych c) zastosowanie reguł Bayesa do analizy decyzji d) decyzje podejmowane przez grupy osób, narzędzia informatyczne. Literatura: 1. P. Goodwin, G. Wright; Analiza decyzji, Wolters Kluwer, W-wa 2011 2. A. K. Dixit, B. J. Nalebuff, Sztuka Strategii, MT Biznes 2008 3. H. Sherer, Myślenie jest głupie. Jak mimo to działać mądrze? Wyd. Gall, Katowice 2013 4. H. P. Young, Sprawiedliwy podział. Wydawnictwo Naukowe "Scholar": Warszawa 2003 5. Pod ejmowanie decyzji; Harvard Business School Press, Helion 1998 6. D. Kahneman, Pułapki myślenia. O myśleniu szybkim i wolnym. Media Rodzina 2012 7. T. Szapiro, Co decyduje o decyzji, PWN Warszawa 1993 8. H. Sosnowska (red.) Grupowe podejmowanie decyzji, Scholar 1999 9. R.E . Nisbett, Mindware. Narzędzia Skutecznego Myślenia, Smak Słowa, Sopot 2016 Autonomiczne roboty latające 1. Zasada działania quadcoptera 2. Fizyka lotu 3. Algebra liniowa (przypomnienie) 4. Geometria 2D i 3D (m.in. macierze translacji i obrotu, kąty Eulera...) 5. Sensory i analiza sygnału 6. Efektory i sterowanie 7. Estymatory stanu 8. Filtry Kalmana i Bayesa 9. Wizualna estymacja położenia 10. Tracking i mapowanie (SLAM) Laboratorium obejmuje zadania praktyczne związane z materiałem omawianym na wykła dach. W ćwiczeniach wykorzystywane są quadcoptery A.R. Drone 2 i język python. Bazy danych II Celem przedmiotu jest pogłębienie wiedzy z zakresu tworzenia baz danych, rozszerzenie (na przykładzie bazy Oracle ) języka SQL o język programowania bazy PL/SQL. Wprowadzenie w zagadnienia optymalizacji i analizy zapytań, oraz w tematykę bezpie czeństwa przechowywania danych. Zakres materiału: 1. Architektura systemu zarządzania bazą danych, fizyczna struktura bazy, przechowywa nie danych. 2. Język SQL i PL/SQL w bazie Oracle 3. Awarie i uszkodzenia systemu i metody odtwarzania danych. 4. Typy indeksów, haszowanie. 5. Optymalizacja zapytań – szacowanie kosztu operacji, plan zapytania. 6. Zarządzanie transakcjami – zatwierdzanie i wycofywanie, problem zakleszczeń, trans akcje rozproszone. 7. Sterowanie współbieżnością – konflikty, blokowanie, znaczniki czasowe. Literatura: 1. H. GarciaMolina, J.D. Ullman, J. Widom, Implementacja systemów baz danych, WNT, Warszawa 2003. 2. C.J. Date, Wprowadzenie do systemów baz danych, WNT, Warszawa 2000. 3. J.D. Ullman, J. Widom, Podstawowy wykład z systemów baz danych, WNT, Warsza wa 2000. 4. K. Loney, Oracle database 11g, Kompendium administratora, Helion 2010. 5. E. Honour, P. Dalberth, A. Kaplan, A. Mehta, Oracle w zadaniach, Robomatic 2001 Kryptografia i bezpieczeństwo komputerowe Techniki kryptograficzne są uniwersalnym sposobem zapewnienia poufności, integralności i autentyczności informacji. Celem modułu jest zapoznanie studentów z teoretycznymi podstawami kryptografii i jej praktycznymi zastosowaniami w zapewnianiu bezpieczeństwa systemów komputerowych. Ta wiedza i umiejętności powinny pozwolić na bezpieczne ko rzystanie z nowoczesnych środków transferu i magazynowania danych. Zakres materiału: 1 Szyfry symetryczne i asymetryczne. 2 Szyfry blokowe i strumieniowe. 3 Proste algorytmy szyfrowania. 4 Elementy kryptoanalizy. 5 Szyfr Vernama i poufność doskonała. 6 Szyfry AES, RC4 i inne algorytmy symetryczne. 7 Funkcje jednokierunkowe. Szyfry RSA i ElGamala. 8 Protokół wymiany kluczy DiffiegoHellmana. 9 Zarządzanie kluczami, sterowanie dostępem. 10 Protokoły zapewniające autentyczność i integralność danych. 11 Funkcje skrótu, podpisy cyfrowe. 12 Infrastruktura klucza publicznego. 13 Uwierzytelnienie, protokoły z wiedzą zerową. 14 Wybrane zastosowania praktyczne.