Opcjonalnie: Maszyny wirtualne. Wprowadzenie do translacji. Deklaracje i
typy. Mechanizmy abstrakcji. Programowanie funkcyjne. Translacja języków programowania. Systemy typów. Semantyka języków programowania. Projektowanie języków programowania.
Umiejętności: Umiejętność oceny przydatności różnych paradygmatów i związanych z nimi środowisk programistycznych do rozwiązywania różnego typu problemów. Projektowanie, implementacja, testowanie i debugowanie prostych programów obiektowych.
6. Komunikacja człowiek-komputer
Obowiązkowo: Podstawy komunikacji człowiek-komputer. Budowanie prostych interfejsów graficznych.
Opcjonalnie: Ocena oprogramowania zorientowana na użytkownika. Rozwój
oprogramowania zorientowany na użytkownika. Projektowanie graficznego interfejsu użytkownika. Programowanie graficznego interfejsu użytkownika. Komunikacja człowiek-komputer i systemy multimedialne. Aspekty komunikacji człowiek-komputer dotyczące współpracy i komunikacji. Technologie związane z urządzeniami wejścia-wyjścia.
Umiejętności: Utworzenie i przeprowadzenie prostego testu użyteczności dotyczącego istniejącej aplikacji. Wykorzystanie narzędzi wspomagających tworzenie graficznych interfejsów użytkownika do realizacji prostej aplikacji wyposażonej w taki interfejs.
7. Grafika komputerowa i wizualizacja
Obowiązkowo: Podstawowe techniki w grafice komputerowej. Systemy grafiki. Opcjonalnie: Komunikacja graficzna. Modelowanie geometryczne. Podstawy renderingu. Zaawansowany rendering. Zaawansowane techniki graficzne. Animacja komputerowa. Wizualizacja. Wirtualna rzeczywistość. Widzenie komputerowe.
Umiejętności: Tworzenie obrazów z wykorzystaniem standardowego API graficznego. Realizacja podstawowych transformacji (skalowanie, obrót, translacja) za pomocą mechanizmów standardowego API graficznego. Implementacja prostych procedur dokonujących transformacji prostych obrazów 2-wymi arowych.
8. Sztuczna inteligencja
Obowiązkowo: Podstawowe zagadnienia sztucznej inteligencji. Przeszukiwanie z ograniczeniami. Reprezentacja wiedzy i wnioskowanie.
Opcjonalnie: Zaawansowane przeszukiwanie. Zaawansowane metody
reprezentacji wiedzy i wnioskowania. Systemy agentowe. Przetwarzanie języka naturalnego. Uczenie maszynowe i sieci neuronowe. Planowanie z wykorzystaniem sztucznej inteligencji. Robotyka.
Umiejętności: Opisywanie przestrzeni problemu wyrażonego w języku
naturalnym w terminach stanów, operatorów, stanu początkowego i docelowego. Dobieranie algorytmu przeszukiwania heurystycznego do specyfiki problemu. Implementacja przeszukiwania typu mini-max. Rozwiązywanie problemów przeszukiwania z ograniczeniami za pomocą algorytmu z nawrotami.
6