Zagadnienia do egzaminu kwalifikacyjnego z dyscypliny Informatyka techniczna i telekomunikacja

  • Algorytmika – definicja pojęcia algorytmu, złożoność obliczeniowa i pamięciowa, klasy złożoności obliczeniowej, przykłady algorytmów lokujących się w poszczególnych klasach złożoności obliczeniowej. Notacje asymptotyczne, szacowanie złożoności obliczeniowej algorytmów. Algorytmy sortowania, przeszukiwania grafu w głąb i wszerz, tworzenia drzewa rozpinającego grafu, wyszukiwania najkrótszych ścieżek w grafie. Pojęcie struktury danych. Różne rodzaje struktur danych tj. listy pojedynczo i podwójnie wiązane, tablice haszujące, drzewa poszukiwań binarnych, drzewa czerwono-czarne, grafy - ich reprezentacje oraz przydatność w kontekście różnych zastosowań.
  • Języki programowania – programowanie w językach strukturalnych, obiektowych i funkcyjnych. Popularne instrukcje sterujące języków proceduralno-obiektowych takie jak np: if, for, while, do, return, break, new, delete, super itp. i ich znaczenie oraz wykorzystanie.
  • Struktura programu w językach obiektowych i funkcyjnych. Struktury danych wykorzystywane w różnych językach programowania – przykłady implementacji. Programowanie obiektowe – pojęcia dziedziczenia, polimorfizmu, rzutowania. Tworzenie i obsługa wyjątków.
  • Przetwarzanie współbieżne – pojęcie wątku i procesu. Pojęcie pamięci współdzielonej, wzajemnego wykluczania, synchronizacji wątków i procesów. Błędy synchronizacji, pojęcie deadlock’u i livelock’u. Modele problemów dla systemów współbieżnych: ucztujący filozofowie, czytelnicy i pisarze, producenci i konsumenci itp. Modele synchronizacji: semafor, monitor, compare-and-swap (CAS). Ich działanie i przykłady implementacji w językach programowania.
  • Języki formalne – klasyfikacja języków formalnych Chomsky’ego oraz odpowiadające poszczególnym klasom języków automaty formalne. Maszyna Turinga jako model obliczeń. Definicje klas problemów NP, NP-complete, NP-hard i inne. Przykłady problemów lokujących się w tych klasach. Problem stopu. Związek pomiędzy językami formalnymi a językami programowania.
  • Bazy danych – rodzaje baz danych. Organizacja relacyjnej bazy danych, tabele, relacje, klucze, indeksy, widoki, procedury składowe etc. Podstawy języka SQL, rodzaje zapytań i ich składnia. Normalizacja baz danych, postacie normalne. Wykorzystanie baz danych w kontekście języków programowania.
  • Inżynieria oprogramowania – inżynieria wymagań, inżynieria produktu. Akwizycja i analiza wymagań. Modele procesów wytwórczych oprogramowania. Analiza i modelowanie strukturalne oprogramowania. Diagramy ERD, DFD, STD, FHD. Modelowanie obiektowe. pojęcia obiektu, klasy, metody, komunikatu, wzorca, enkapsulacji, interfejsu. Język UML oraz podstawowe diagramy tego języka. Jakość oprogramowania – sposoby oceny, metryki, zarządzanie jakością procesu wytwarzania oprogramowania.
  • Ogólna wiedza informatyczna – konstrukcja i architektura komputera. Problemy i wyzwania sztuczniej inteligencji, test Turinga vs. problem chińskiego pokoju. Podejmowanie decyzji ze wsparciem komputera.