Zagadnienia na egzamin magisterski

Transkrypt

Zagadnienia na egzamin magisterski
Zagadnienia na egzamin magisterski
Kierunek: Informatyka
Pytania na egzamin magisterski ustalane są przez komisję według następującego schematu:
- jedno pytanie z zakresu pracy magisterskiej
- co najmniej dwa pytania z zakresu materiału wynikającego z przedmiotów do wyboru
zaliczonych przez magistranta i zakresu materiału przedmiotów obowiązkowych na studiach
drugiego stopnia (w zależności od realizowanego programu studiów).
W trakcie odpowiedzi na pytania od magistranta oczekuje się umiejętności posługiwania się
podstawową wiedzą wchodzącą w zakres studiów 1 stopnia (por. wymagania wstępne dla
kandydata na studia 2 stopnia na kierunku „Informatyka”). W szczególności oczekuje się
wiedzy w zakresie:
1. algorytmów i struktur danych (w szczególności: poprawność i złożoność algorytmów,
przykłady klasycznych algorytmów sortowania),
2. metod programowania (w szczególności: programowanie obiektowe),
3. baz danych (w szczególności: relacyjne bazy danych, zapytania w SQL),
4. systemów operacyjnych (w szczególności: struktura i działanie komputera),
5. zasady i metody komunikacji w sieciach (w szczególności: łącza komunikacyjne,
usługi w sieci Internet ),
6. teorii obliczalności (w szczególności: złożoność obliczeniowa, klasy języków
formalnych).
Zagadnienia z zakresu materiału przedmiotów obowiązkowych na studiach drugiego
stopnia:
Modelowanie i Analiza Systemów informatycznych.
1. Systemy kontroli wersji, porównanie możliwości,
sposoby organizacji pracy.
2. Metody testowania oprogramowania, systemy automatycznego testowania.
3. Systemy zarządzania projektem i automatyzacji budowania.
4. Lekkie metodyki wytwarzania oprogramowania (Agile, Scrum)
5. Oprogramowanie wolne i otwartoźródłowe. Licencje copyleft i liberalne otwartego
oprogramowania.
Współczesne systemy sieciowe
1.
2.
3.
4.
5.
6.
Protokoły komunikacyjne i ich implementacje.
Zasady organizacji transmisji danych różnego typu przez sieć.
Kierowanie ruchem w sieci lokalnej, routowanie statyczne i dynamiczne.
Protokoły sieciowe związane z zarządzaniem urządzeniami sieciowymi.
Metody i narzędzia do transmisji multimediów w sieci.
Zasady budowy i wykorzystania zapór ogniowych w różnych warstwach modelu OSI.
1
Algorytmy i metody skalowalnego przetwarzania danych
1.
2.
3.
4.
5.
Modele złożoności obliczeń w paradygmacie MapReduce. Złożoność
podstawowych algorytmów.
Minimalne algorytmy Map Reduce i zrównoważone praktyczne algorytmy
Pregelowe.
Algorytmy wyznaczania spójności grafów w paradygmatach skalowalnego
przetwarzania danych.
Implementacja języka SQL w paradygmacie MapReduce.
Skalowalne uczenie maszynowe w paradygmacie MapReduce.
Eksploracja danych
1. Podstawowe algorytmy klasyfikacyjne (metoda k najbliższych sąsiadów, drzewa
decyzyjne, sieci neuronowe, maszyna wektorów nośnych).
2. Podstawowe algorytmy grupowania (metoda k średnich, sieci Kohonena).
3. Podstawowe algorytmy szacowania (regresja liniowa).
Prawdopodobieństwo i statystyka
1. Zmienne losowe, rozkład zmiennej losowej (dwumianowy, Poissona, jednostajny,
normalny, wykładniczy), dystrybuanta, parametry liczbowe rozkładu zmiennej
losowej.
2. Prawa wielkich liczb i centralne twierdzenie graniczne.
3. Estymacja punktowa wartości oczekiwanej i wariancji. Przedziały ufności dla wartości
oczekiwanej.
4. Pojęcie testu statystycznego (hipoteza zerowa, hipoteza alternatywna, statystyka
testowa, obszar krytyczny, błędy I i II rodzaju). Przykłady testów.
Kryptografia
1.
2.
3.
4.
5.
6.
Zasady Kerckhoffsa i ich zastosowania we współczesnej kryptografii komercyjnej.
Bezpieczne funkcje skrótu: ich konstrukcja i zastosowania.
Współczesne szyfry blokowe (DES, AES, tryby pracy szyfrów blokowych).
Najważniejsze ataki na RSA i bezpieczna implementacja RSA.
Podpis elektroniczny.
Protokoły identyfikacji.
2
Zagadnienia z zakresu materiału przedmiotów do wyboru na studiach drugiego stopnia:
Bazy danych II
1. Projektowanie schematu bazy danych, techniki notacji.
2. Zaawansowane techniki języka SQL, perspektywy, wyzwalacze, wyrażenia
tabelaryczne.
Teoria Informacji
1. Podstawowe rodzaje kodów (kody natychmiastowe, kody jednoznacznie
dekodowalne, przykłady).
2. Twierdzenie o kompresji.
Bezpieczeństwo sieci komputerowych
1. Sposoby zabezpieczania jądra systemu przed atakami.
2. Metody bezpiecznego dostępu do sieci lokalnej oraz do serwerów usług sieciowych.
3. Systemy wykrywania (IDS) i zapobiegania (IPS) włamaniom do sieci.
Bezpieczeństwo systemów operacyjnych
1.
Złośliwe oprogramowanie: budowa, działanie i obrona w systemach operacyjnych.
2. Bezpieczeństwo oprogramowania systemu - zagrożenia i obrona.
3. Uwierzytelnianie i kontrola dostępu w systemach operacyjnych.
Administrowanie bazą danych Oracle
1. Sposoby zabezpieczania dostępu do danych w bazie danych Oracle.
2. Tworzenie kopii bezpieczeństwa i odtwarzanie bazy danych Oracle po awarii-rodzaje
kopii, narzędzia do tworzenia kopii i odtwarzania, przykładowa strategia .
Język D
1. Delegaty, definicja, przykłady zastosowania.
2. Schematy (Wzorce), przykłady zastosowania.
Programowanie liniowe i całkowitoliczbowe
1.
2.
Punkty ekstremalne, wektory kierunkowe ekstremalne oraz twierdzenie o
reprezentacji.
Zagadnienie transportowe oraz jego sformułowanie w postaci problemu
programowania liniowego.
3
Podstawy przetwarzania sygnałów
1. Transformata Fouriera i jej zastosowania.
2. Falki, analiza wielorozdzielcza.
Logiczne aspekty informatyki
1. Automatyczne dowodzenie.
2. Metoda rezolucji dla języka pierwszego rzędu.
Programowanie aplikacji na komputery stacjonarne oraz usług windowsowych w C#
1. Procesy, dziedziny aplikacji, wątki i zadania w systemach Windows. Równoległe i
asynchroniczne uruchamianie zadań.
2. Sposób działania wybranych mechanizmów systemu Windows (w szczególności:
usługi windowsowe, liczniki wydajności, dzienniki zdarzeń, rejestr systemu,
przełączniki śledzenia, pliki konfiguracyjnych integracja kodu zarządzalnego i
natywnego) oraz sposób korzystania z nich z poziomu kodu w języku C#.
Programowanie GPU
1. Architektura procesorów kart graficznych (GPU) i model programowania w CUDA.
2. Optymalizacja kodu na GPU. Rodzaje pamięci na GPU i efektywność dostępu do
pamięci. Dywergencja wątków.
Wybrane Technologie Webowe:
1. Technologie tworzenia dynamicznych aplikacji www, sposoby komunikacji klientserwer.
2. Technologie portalowe, portlety - przykłady, cykl życia portletu.
3. Programowanie zorientowane zdarzeniowo.
4. Ataki na aplikacje webowe i sposoby ochrony przed nimi.
5. Optymalizacja aplikacji webowych (wyszukiwarki, wydajność).
Wstęp do sieci neuronowych:
1.
Sieci neuronowe w zagadnieniach klasyfikacyjnych: perceptron prosty, sieci
skierowane, algorytmy uczenia, ograniczenia, zastosowanie.
2. Algorytmy uczenia nienadzorowanego w sieciach neuronowych: sieci Kohonena,
klasteryzacja, modele, algorytmy, zastosowanie
Algorytmy eksploracji i przetwarzania masywnych zbiorów danych
1. Przetwarzanie i eksploracja strumieni danych (model, algorytmy próbkowania danych,
zapytania na długich oknach przesuwnych, filtrowanie elementów strumienia danych).
2. Algorytmy uczenia maszynowego (k-NN, Perceptron, SVM, grupowania) w
kontekście masywnych zbiorów danych.
3. Redukcja wymiarowości (opis problemu i podstawowe algorytmy).
4
Programowanie urządzeń mobilnych:
Programowanie urządzeń mobilnych w systemach Windows
1. Podstawowe założenia przy projektowaniu aplikacji dla mobilnych systemów
Windows (Modern Design (dawniej Metro i Modern UI), flush & fluid,
programowanie asynchroniczne).
2. Sposób działania aplikacji w systemach Windows, ze szczególnym uwzględnieniem
systemów mobilnych (cykl życia aplikacji, mechanizmy notyfikacji, dostęp do
zasobów, komponenty uruchomieniowe (Windows Runtime Components)).
3. Programowanie wbudowanych komponentów (dostępne mechanizmy i frameworki
oraz ich charakteryzacja, przykłady komponentów).
Programowanie i zastosowania urządzeń mobilnych – Android
1. Budowa aplikacji w systemie Android ( podstawowe komponenty i interakcja
pomiędzy nimi, cykl życia aplikacji, bezpieczeństwo aplikacji, zasoby, interfejs
użytkownika)
2. Komunikacja sieciowa, obsługa multimediów, mapy i systemy lokalizacji w aplikacji
w systemie Android ( schemat wykorzystania, podstawowe informacje, narzędzia i
biblioteki).
3. Testowanie, debugowanie i profilowanie aplikacji w systemie Android (narzędzia i
biblioteki, schemat działania).
Programowanie urządzeń mobilnych w systemach IOS
1. Funkcje, klasy, obiekty, zmienne, stałe i zarządzanie pamięcią w Swift.
2. Najważniejsze wzorce projektowe stosowane w programowaniu iOS (delegat,
protokoły, domknięcia, funkcje fabrykujące, notification center).
3. Założenia projektowania aplikacji i interfejsu użytkownika w iOS (autolayouts,
IBOutlets, assety, app slicing, rozszerzenia aplikacji).
4. Przechowywanie danych w aplikacji (foldery, pliki i dostęp do nich, CoreData,
iCloud, UserDefaults)
5