1 Matematyczne podstawy informatyki 2 Teoretyczne podstawy

Transkrypt

1 Matematyczne podstawy informatyki 2 Teoretyczne podstawy
Pytania do egzaminu magisterskiego
na kierunku informatyka w Instytucie Informatyki i Matematyki
Komputerowej
od roku akademickiego 2014/2015
specjalność: INŻYNIERIA OPROGRAMOWANIA
1
Matematyczne podstawy informatyki
1. Zbiory liczb całkowitych, wymiernych i rzeczywistych jako zbiory ilorazowe.
2. Zmienne losowe dyskretne, ich najważniejsze rozkłady oraz zastosowanie w informatyce.
3. Liniowa niezależność i liniowa zależność wektorów w przestrzeni wektorowej: definicje i warunki
równoważne.
4. Określić liczby Stirlinga I i II rodzaju i omówić czego dotycza̧.
5. Cia̧głość i pochodna funkcji. Ekstrema funkcji.
6. Całka Riemanna funkcji jednej zmiennej.
7. Ekstrema funkcji wielu zmiennych.
2
Teoretyczne podstawy informatyki
1. Wymienić znane modele obliczeń oraz omówić jeden z nich.
2. Gramatyka bezkontekstowa jako formalny opis składni jȩzyków programowania: definicje i
przykłady.
3. Złożoność obliczeniowa algorytmów: definicja, notacja i przykłady.
4. Metoda ”dziel i zwyciȩżaj”: zalety i wady, przykłady zastosowań.
5. Abstrakcyjne struktury danych: lista, stos, kolejka; reprezentacje i metody dostȩpu.
6. Programowanie dynamiczne: definicja i przykład zagadnienia, do którego można je zastosować.
7. Przedstawić i omówić hierarchiȩ Chomsky’ego.
3
Wytwarzanie oprogramowania
1. Klasa abstrakcyjna w jȩzykach programowania i jej zastosowania.
2. Podstawowe założenia paradygmatu obiektowego.
3. Modele cyklu życia oprogramowania. Omów wady i zalety wybranego modelu.
4. Najważniejsze diagramy UML używane w projektowaniu systemów.
5. Pojȩcia zwia̧zane z testowaniem oprogramowania.
6. Role w zespole projektowym oraz zakresy obowia̧zków osób pełnia̧cych te role.
7. Wymagania w projekcie informatycznym – rodzaje, sposoby pozyskiwania, modelowanie.
1
4
Inżynieria systemów
1. Podstawowe metody indeksowania w systemach baz danych.
2. Układy kombinacyjne: definicja i przykłady.
3. Zarza̧dzanie procesami: stany procesu, algorytmy szeregowania.
4. Zarza̧dzanie pamiȩcia̧: stronicowanie, pamiȩć wirtualna, algorytmy wyboru ofiary.
5. System plikowy: struktura fizyczna i logiczna.
6. Protokoły: klasyfikacja i adresowanie.
7. Szyfrowanie asymetryczne, podpis cyfrowy.
5
Pytania dotycza̧ce przedmiotów specjalistycznych
5.1
Programowanie w sieci Internet
1. Omów różnice miȩdzy synchronicznymi (opartymi na pulach wa̧tków) a asynchronicznymi
(opartymi na kolejce zdarzeń) serwerami WWW. Podaj przykłady rozwia̧zań należa̧cych do
każdej z tych dwóch klas.
2. Omów wzorzec projektowy Model - Widok - Kontroler dla aplikacji WWW. Podaj przykład
konkretnego rozwia̧zania stosuja̧cego jakiś wariant tego wzorca. Omów architekturȩ tego rozwia̧zania.
3. Podaj strukturȩ ża̧dania (request) i odpowiedzi (response) HTTP. Wyjaśnij znaczenie kodów
odpowiedzi 302, 403, 404, 304. Wymień trzy przykładowe nagłówki i omów ich interpretacjȩ
przez odbiorcȩ komunikatu.
4. Wymień 8 metod protokołu HTTP. Przyporza̧dkuj 4 metody HTTP do operacji CRUD w
paradygmacie REST.
5.2
Programowanie rozproszone
1. Omów algorytm konstrukcji drzewa rozpinaja̧cego w topologii systemu rozproszonego. Wyjaśnij w jakim celu taki algorytm może być potrzebny w konkretnym przypadku.
2. Omów pionowa̧ i pozioma̧ strategiȩ podziału danych przy rozpraszaniu bazy danych (vertical i
horizontal partitioning). Dla podziału poziomego wymień i omów trzy sposoby realizacji tego
podziału.
3. Omów architekturȩ nastȩpuja̧cych wzorców komunikacji systemie rozproszonym z kolejka̧ komunikatów: kolejka zadań (work queue), publikacja - subskrypcja (publish/subscribe), RPC.
Podaj przykłady konkretnych problemów które można rozwia̧zać z wykorzystaniem tych wzorców. Co daje nam użycie w systemie rozproszonym komunikacji opartej na paradygmacie
kolejki?
4. Podaj i omów architekturȩ dowolnej platformy Cloud Computing należa̧cej do klasy IaaS/PaaS.
5.3
Wzorce Projektowe
1. Klasyfikacja wzorców projektowych wg tzw. ”Bandy Czworga” (E. Gamma, R. Helm, R. Johnson, J. Vlissides). Krótkie omówienie przykładowego wzorca z każdej grupy.
5.4
Programowanie Abstrakcyjne
1. Co to jest programowanie abstrakcyjne i jakie sa̧ jego cele?
2. Przykładowe mechanizmy wspieraja̧ce programowanie abstrakcyjne w jȩzykach C++, C# i
Java.
2
5.5
Programowanie współbieżne
1. Znaczenie enkapsulacji w programach współbieżnych.
2. Semafory i ich własności (rodzaje semaforów, niezmienniki semaforów, realizacja sprzȩtowa
semaforów).
5.6
Programowanie funkcyjne
1. Leniwa ewaluacja w rachunku lambda i w Haskellu.
2. Polimorfizm w Haskellu.
3. Funkcje wyższego rzȩdu w rachunku lambda i w Haskellu.
4. Monady w Haskellu, w tym wejście-wyjście.
5. Komunikacja miȩdzy-procesowa w Erlangu.
5.7
Testowanie oprogramowania
1. Proces testowy w sekwencyjnym i iteracyjnym cyklu życia – zasadnicze różnice z punktu widzenia zarza̧dzania testowaniem.
2. Czarnoskrzynkowe techniki projektowania testów.
3. Analiza statyczna i analiza dynamiczna.
4. Testowanie charakterystyk jakościowych.
5. Metryki i modele w inżynierii jakości oprogramowania.
5.8
Obliczalność i złożoność
1. Podać definicjȩ deterministycznej maszyny Turinga oraz przykłady modyfikacji: wielościeżkowa, wielotaśmowa, niedeterministyczna. W jak sposób modyfikacje maszyny Turinga wpływaja̧
na obliczalność, a w jaki na złożoność problemu?
2. Podać definicje klas złożoności obliczeniowej: P, NP, EXP, NEXP, L, NL, PSPACE, NPSPACE,
EXPSPACE, NEXPSPACE oraz relacje pomiȩdzy poszczególnymi klasami. Podać twierdzenie
Savitcha.
3. Podać definicjȩ redukcji (wielomianowej i logarytmicznej) oraz zupełności. W jaki sposób możemy wykazać NP-zupełność problemu? Proszȩ podać definicjȩ problemu 3SAT i uzasadnić, że
jest on NP-zupełny.
5.9
Programowanie urza̧dzeń mobilnych – Android
1. Podstawowym elementem aplikacji Android SDK jest Aktywność (ang. Activity). Proszȩ przedstawić cykl życia Aktywności w kontekście metod klasy Activity, które sa̧ wywoływane przy
zmianie stanu Aktywności.
2. Jak jest realizowany mechanizm komunikacji pomiȩdzy czȩściami aplikacji, który pozwala także
na uruchamianie Aktywności, Serwisów oraz wymianȩ danych miȩdzy nimi.
3. W jaki sposób realizowana jest w aplikacjach Android SDK separacja procesów, pamiȩci i
przestrzeni dyskowej (pamiȩci stałej) pomiȩdzy różnymi aplikacjami.
5.10
Programowanie niskopoziomowe
1. Wybrane techniki niskopoziomowej optymalizacji kodu w assemblerze.
2. Standardowe konwecje przekazywania argumentów do podprogramu: cdecl, AMD64 ABI.
3. Zalety i wady potokowego przetwarzania instrukcji we współczesnych procesorach.
4. Jednostki wektorowe współczesnych procesorów: możliwości i przykłady zastosowań.
3
5.11
Modelowanie obiektowe
1. Proszȩ omówić pojȩcia przypadku użycia systemu i scenariusza przypadku użycia.
2. Proszȩ omowić podobieństwa i różnice miȩdzy klasami a komponentami.
3. W jakich zastosowaniach najlepiej sprawdzaja̧ siȩ diagramy sekwencji?
5.12
Programowanie urza̧dzeń mobilnych iOS
1. Proszȩ omówić wzorzec MVC w wersji wykorzystywanej w programowaniu na platformȩ Apple
iOS: (Controller → View: IBOutlets, View → Controller: delegate, dataSource, target-action).
2. Proszȩ scharakteryzować Core Data (co to jest, do czego i jak jest stosowany).
3. Proszȩ omówić wybrany przez siebie kontroler kontrolerów (np. UITableViewController).
4. Proszȩ omówić sposób realizacji wielowa̧tkowości poprzez Grand Central Dispatch (GCD).
5.13
Programowanie w logice
1. Zalety, wady oraz możliwe obszary zastosowania progamowania w logice.
2. Unifikator (podstawienie uzgadniaja̧ce) i najogólnieszy unifikator – definicja, własności, algorytm wyznaczania.
3. Klauzule Horna i SLD-rezolucja.
4. Struktura programu w Prologu: definicje predykatów, zapytania.
5.14
Zarza̧dzanie projektami IT
1. źródła władzy w organizacji.
2. Techniki szacowania w zarza̧dzaniu projektami.
3. Metoda wartości wypracowanej, jej zalety i przykład wykorzystania.
4

Podobne dokumenty