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 4­go 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=03­ISDZ5­M­
16%2F17Z
Przedmioty obowiązkowe.
Link do strony USOSweb:
https://usosweb.us.edu.pl/kontroler.php?
_action=katalog2/przedmioty/szukajPrzedmiotu&method=rej&rej_kod=03­ISDZ5­
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. Garcia­Molina, 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 Diffiego­Hellmana.
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.

Podobne dokumenty