Podstawy programowania
Pojęcie algorytmu. Podstawowe konstrukcje programistyczne. Implementacje algorytmów w językach programowania. Podstawowe struktury danych i wykonywane na nich operacje. Dynamiczny przydział pamięci. Rekurencja i jej implementacja w językach wysokiego poziomu. Metody weryfikacji poprawności programów.
Efekty kształcenia – umiejętności i kompetencje:
czytania ze zrozumieniem programów zapisanych w języku programowania imperatywnego; symbolicznego wykonywania prostych programów celem ich weryfikacji; pisania i uruchamianie prostych programów o rozmiarze rzędu 100 wierszy kodu.
Algorytmy i złożoność
Podstawy analizy algorytmów. Techniki projektowania algorytmów: dziel i rządź, programowanie dynamiczne, algorytmy zachłanne, przeszukiwanie z nawrotami, heurystyki. Podstawowe algorytmy: sortowanie, selekcja, wyszukiwanie. Abstrakcyjne struktury danych i ich implementacje: listy, drzewa, grafy, słowniki, drzewa poszukiwań binarnych, haszowanie, stosy, kolejki, kolejki priorytetowe. Podstawowe algorytmy grafowe: przeszukiwanie wszerz i w głąb. Problemy obliczeniowo trudne: NP-zupełność, nierozstrzygalność.
Efekty kształcenia – umiejętności i kompetencje:
konstruowania algorytmów z wykorzystaniem podstawowych technik algorytmicznych; analizy złożoności algorytmów.
Architektura systemów komputerowych
Technika cyfrowa i systemy cyfrowe. Maszynowa reprezentacja danych i realizacji operacji arytmetycznych. Organizacja komputera na poziomie asemblera. Organizacja i architektura systemów pamięci. Interfejsy i komunikacja. Organizacja jednostki centralnej. Wieloprocesorowość i architektury alternatywne.
Efekty kształcenia – umiejętności i kompetencje:
projektowania prostych układów sekwencyjnych i kombinacyjnych; obliczania reprezentacji liczb całkowitych i rzeczywistych oraz wykonywania podstawowych operacji arytmetycznych na tych reprezentacjach; pisania prostych programów na poziomie asemblera z użyciem instrukcji warunkowych, pętli, operacji na liczbach całkowitych, tablic.
Systemy operacyjne
Przegląd systemów operacyjnych. Zasady działania systemów operacyjnych. Procesy i wątki. Współbieżność. Szeregowanie zadań. Zarządzanie pamięcią.
Efekty kształcenia – umiejętności i kompetencje:
rozwiązywania klasycznych problemów synchronizacji, w tym problemu producent-konsument i czytelnicy-pisarze oraz problemu pięciu filozofów; dobierania algorytmu szeregowania zadań do specyfiki aplikacji.
Technologie sieciowe
Wprowadzenie do sieci komputerowych. Komunikacja i sieci komputerowe. Bezpieczeństwo w sieciach komputerowych i kryptografia. Technologie udostępniania informacji w sieciach komputerowych. Budowa aplikacji sieciowych.
Efekty kształcenia – umiejętności i kompetencje:
instalowania prostej sieci z dwoma klientami i pojedynczym serwerem z wykorzystaniem narzędzi typu DHCP (Dynamic Host Configuration Protocol); korzystanie z kluczy i pakietów kryptograficznych PGP (Pretty Good Privacy); budowania prostych interakcyjnych aplikacji internetowych działających w oparciu o bazę danych.
Języki i paradygmaty programowania
Paradygmaty programowania. Programowanie obiektowe.
Efekty kształcenia – umiejętności i kompetencje:
oceny przydatności różnych paradygmatów i związanych z nimi środowisk programistycznych do rozwiązywania różnego typu problemów; projektowania, implementacji, testowania i debugowania prostych programów obiektowych.
Grafika i komunikacja człowiek-komputer
Podstawowe techniki w grafice komputerowej. Systemy grafiki. Podstawy komunikacji człowiek-komputer. Budowanie prostych interfejsów graficznych.
E
Efekty kształcenia – umiejętności i kompetencje:
tworzenia obrazów z wykorzystaniem standardowego API graficznego (Application Programming Interface); realizacji podstawowych transformacji (skalowanie, obrót, translacja) za pomocą mechanizmów standardowego API graficznego; implementacji prostych procedur dokonujących transformacji prostych obrazów 2-wymiarowych; tworzenia i przeprowadzenia testu użyteczności dotyczącego istniejącej aplikacji; wykorzystania narzędzi wspomagających tworzenie graficznych interfejsów użytkownika do realizacji aplikacji wyposażonej w taki interfejs.
Sztuczna inteligencja
Podstawowe zagadnienia sztucznej inteligencji. Przeszukiwanie z ograniczeniami. Reprezentacja wiedzy i wnioskowanie.
Efekty kształcenia – umiejętności i kompetencje:
opisywania przestrzeni problemu wyrażonego w języku naturalnym w terminach stanów, operatorów, stanu początkowego i docelowego; dobierania algorytmu przeszukiwania heurystycznego do specyfiki problemu; implementacji przeszukiwania typu mini-max; rozwiązywania problemów przeszukiwania z ograniczeniami za pomocą algorytmu z nawrotami.
Bazy danych
Systemy baz danych. Modelowanie danych. Relacyjne bazy danych. Języki zapytań do baz danych. Projektowanie relacyjnych baz danych. Przetwarzanie transakcji.
Efekty kształcenia – umiejętności i kompetencje:
formułowania zapytań w języku SQL (Structured Query Language); przygotowywania schematu relacyjnej bazy danych na podstawie modelu encja-związek; tworzenia transakcji przez zanurzanie zapytań SQL-owych w języku programowania; oceny różnych strategii wykonywania zapytań o charakterze rozproszonym.
Inżynieria oprogramowania
Projektowanie oprogramowania. Korzystanie z API (Application Programming Interface). Narzędzia i środowiska wytwarzania oprogramowania. Procesy wytwarzania oprogramowania. Wymagania i ich specyfikacja. Walidacja i testowanie oprogramowania. Ewolucja oprogramowania. Zarządzanie przedsięwzięciem programistycznym.
Efekty kształcenia – umiejętności i kompetencje:
posługiwania się wzorcami projektowymi; projektowania oprogramowania zgodnie z metodyką strukturalną lub obiektową; dokonywania przeglądu projektu oprogramowania; wybierania narzędzi wspomagających budowę oprogramowania; doboru modelu procesu wytwarzania oprogramowania do specyfiki przedsięwzięcia; specyfikowania wymagań dotyczących oprogramowania i przeprowadzania ich przeglądu; tworzenia, oceny i realizacji planu testowania; uczestniczenia w inspekcji kodu; zarządzania konfiguracją oprogramowania; opracowywania planu przedsięwzięcia dotyczącego budowy oprogramowania.
Systemy wbudowane
Mikrokontrolery. Programy wbudowane. Systemy operacyjne czasu rzeczywistego. Przetwarzanie danych a zużycie energii. Projektowanie systemów niezawodnych. Metodyki projektowania.
Efekty kształcenia – umiejętności i kompetencje:
programowania prostych systemów wbudowanych; podnoszenia niezawodności systemu wbudowanego; rozumienia roli dokumentacji.
Problemy społeczne i zawodowe informatyki
Odpowiedzialność zawodowa i etyczna. Kodeksy etyczne i kodeksy postępowania. Ryzyko i odpowiedzialność związane z systemami informatycznymi. Problemy i zagadnienia prawne dotyczące własności intelektualnej. System patentowy i prawne podstawy ochrony prywatności.
Efekty kształcenia – umiejętności i kompetencje:
dostrzegania i doceniania społecznego kontekstu informatyki i związanego z nią ryzyka oraz oceny sytuacji pojawiających się w życiu zawodowym informatyka, zarówno pod względem prawnym, jak i etycznym.