Algorytmika

Urządzenia techniki komputerowej byłyby bez algorytmów tak użyteczne, jak bolidy F1 bez kierowców. Różnorodność zastosowań komputerów wynika z możliwości uruchamiania różnych programów, a te są zapisem algorytmów w języku zrozumiałym dla komputerów. Bez wydajnych, czyli szybkich i oszczędnych pamięciowo algorytmów, wiele zastosowań komputerów czekałoby jeszcze wiele lat na swoje wdrożenia. Co ważne, doskonalenia algorytmów nie można zastąpić jedynie rozwojem sprzętu komputerowego.

Przedmiotem wprowadzającym do świata algorytmiki są Algorytmy i struktury danych . Najpierw poznasz na nim elementarz każdego algorytmika, nauczysz się konstrukcji i analizy algorytmów. Po nabyciu tych doświadczeń będziesz gotów poznać zasady tworzenia zaawansowanych struktur danych, skomplikowanych algorytmów oraz stosowania uniwersalnych technik algorytmicznych, np. znanej już starożytnym Rzymianom techniki dziel i zwyciężaj, używanej do dziś np. w silnikach 3D.

Studiowanie zagadnień algorytmicznych można kontynuować w różnych kierunkach:

  • Większość klasycznych algorytmów była konstruowana przy założeniu, że będą one wykonywane na komputerze z jednordzeniowym procesorem, mającym dostęp do wszystkich danych. Jedynym zadaniem programu było podanie końcowego wyniku obliczeń. Tymczasem obecnie mamy do czynienia z procesorami wielordzeniowymi, systemami wieloprocesorowymi, klastrami, i wreszcie sieciami komputerowymi. Ponadto, współczesne systemy informatyczne prowadzą na bieżąco interakcję z użytkownikami, umożliwiając modyfikację danych. Rozwiązania algorytmiczne uwzględniające te okoliczności można poznać m.in. na wykładach: Algorytmy rozproszone i Algorytmy on-line .
  • Dla niektórych problemów nie istnieją szybkie algorytmy je rozwiązujące, bądź nie udało się do dziś takich algorytmów znaleźć. W takiej sytuacji konstruuje się szybkie algorytmy znajdujące rozwiązania przybliżone. Poświęcony jest nim wykład Algorytmy aproksymacyjne .
  • Bardzo wiele praktycznych problemów ma naturę geometryczną bądź też formułowana jest w terminach bardziej ogólnej teorii grafów. Należą do nich zagadnienia związane z wyszukiwaniem najkrótszych połączeń, najbliższych obiektów, itp. Tematyce tej poświęcone są osobne wykłady: Algorytmy grafowe i Geometria obliczeniowa.
  • Chcąc wyszukać informację w pliku bądź sieci WWW, wpisujemy hasło i po ułamku sekundy dostajemy wynik. Genetyczne badania pokrewieństwa również polegają na wyszukiwaniu (a właściwie dopasowywaniu) tekstów. O rozwiązaniach stosowanych m.in. przy tych problemach można się dowiedzieć na wykładach z Algorytmów tekstowych i
    Wyszukiwania informacji.
  • Metody szyfrowania treści listów znane ze starożytności i kryminałów odeszły w dobie techniki cyfrowej do lamusa. Zapewnienie poufności połączeń przy transakcjach kupna/sprzedaży czy internetowym dostępie do kont bankowych możliwe jest dzięki algorytmom prezentowanym na wykładzie z kryptografii.
  • Możliwość wykorzystania losowości przez komputer przydaje się nie tylko do tego, aby grać w pokera przez internet. Dla wielu problemów rozwiązania wykorzystujące bity losowe są dużo wydajniejsze od najlepszych algorytmów tradycyjnych. Zagadnieniom tym poświęcony jest wykład z algorytmów probabilistycznych.
  • Dzięki nowym formatom cyfrowej reprezentacji zdjęć, obrazów i wideo odeszliśmy od tradycyjnych aparatów fotograficznych, odtwarzaczy wideo i płyt gramofonowych. Rewolucja ta była możliwa dzięki rozwojowi kompresji danych, której poświęcony jest osobny wykład na naszych studiach.

Technologie Internetowe

Współcześnie trudno jest wyobrazić sobie świat bez Internetu, poczty elektronicznej czy stron WWW. Panuje wręcz pogląd, że komputer niepodłączony do sieci jest bezużytecznym kłębkiem drutu. Jednak bliższe przyjrzenie się różnorodności mechanizmów rządzących Internetem wprowadza wielu ludzi w osłupienie: jak to się dzieje, że tak diametralnie różne technologie, różne architektury komputerowe, różne technologie transmisji danych, które powstawały w nieskoordynowany sposób na przestrzeni kilkudziesięciu lat są w stanie w efekcie dać sieć, w której dowolna para użytkowników może swobodnie wymieniać dane?

Na to pytanie staramy się odpowiedzieć podczas wykładu Sieci komputerowe. Poznasz na nim protokoły stosowane w sieciach ze szczególnym uwzględnieniem TCP/IP będącego lingua franca Internetu czy też protokołów dla przewodowych i bezprzewodowych sieci lokalnych. Przede wszystkim wykład ten pozwoli Ci zrozumieć, dlaczego protokoły zostały zaprojektowane w ten a nie inny sposób; dzięki temu nie będziesz tylko biernym użytkownikiem sieci, lecz będziesz w stanie w aktywny sposób ją współtworzyć. Uzyskaną na Sieciach komputerowych praktyczną wiedzę można pogłębiać na innych przedstawionych poniżej wykładach i kursach.

Na przedmiotach Kurs CCNA (Cisco Certified Network Administrator) i Praktyczne aspekty sieci komputerowych niektóre tematy, zwłaszcza związane z budowaniem sieci i administracją nią, przedstawione są znacznie dokładniej. Można się na nich nauczyć sprawnego znajdowania problemów w istniejących konfiguracjach czy też zaawansowanych ustawień routingu, zapór i zarządzania pasmem. Zajęcia te prowadzone są w pracowni doskonale wyposażonej we wszelakiej maści sprzęt sieciowy, taki jak zaawansowane konfigurowalne przełączniki, routery i stacje dostępowe. Studentom, którzy chcieliby dowiedzieć się jakie sprzętowe technologie będą wykorzystywane za kilka lat w Internecie oferujemy wykład Nowe technologie bezprzewodowe dla potrzeb Internetu Przyszłości prowadzony przez zewnętrznych specjalistów. Choć na Sieciach komputerowych nauczysz się podstaw tworzenia aplikacji sieciowych, jeśli chcesz tworzyć aplikacje komunikujące się przez WWW, nieoceniony stanie się Kurs WWW.

Sieci komputerowe to nie tylko praca administratora czy programisty. Jeśli chcesz zostać specjalistą od bezpieczeństwa sieci musisz nie tylko rozumieć poszczególne protokoły i widzieć ich słabości, ale też wprawnie posługiwać się narzędziami pozwalającymi na szyfrowanie danych i uwierzytelnianie użytkowników. Ich matematyczne podstawy i techniki ataku można poznać na Kryptografii i Bezpieczeństwie informacji.

Przedstawione do tej pory wykłady pozwolą Ci zdobyć solidne wykształcenie w zakresie technologii internetowych i biegle się nimi posługiwać. Jednak jeśli chcesz poznać od podszewki współczesne technologie, które zmieniły oblicze Internetu, warto dowiedzieć się na czym polegają matematyczne odkrycia, które umożliwiły odnieść sukces takim firmom jak Google, Facebook, Amazon czy Cisco. Na przedmiotach Algorytmy internetu i Wyszukiwarki Internetowe dowiesz się między innymi jak działają wyszukiwarki internetowe, jakie algorytmy stosowane są w serwerach proxy, jak należy konstruować aukcje cyfrowe, jak uzyskiwać efektywny dostęp do petabajtów danych i jak są zbudowane wewnętrznie wydajne urządzenia sieciowe.

Grafika Komputerowa

Wszyscy jesteśmy specjalistami w dziedzinie grafiki komputerowej. Przecież to co chcemy wyświetlić na ekranie komputera widzimy naokoło nas każdego dnia. Nasze oczy i umysł są znakomicie wytrenowane w rozpoznawaniu kształtów wśród skomplikowanych sygnałów. Dlatego interfejs graficzny komputera
jest dla nas tak wygodny. Z tego samego powodu środowisko graficzne komputera wydaje się nam niekiedy zbyt ubogie komputer specjalizuje się w tworzeniu prostych, zorganizowanych obrazów,
niepodobnych do chaosu świateł do jakiego jesteśmy przyzwyczajeni w świecie rzeczywistym. Kiedy uruchamiamy grę komputerową, oczekujemy że wirtualny świat będzie równie bogaty jak świat realny.
Blask ognia powinien pełznąć po powierzchni kamienia, cienie tańczyć na ścianach, a woda odbijać i załamywać światło w przekonujący sposób. Jednak wierna symulacja tych zjawisk nie zawsze jest wykonalna w rozsądnym czasie. Dlatego oszukujemy, wykonując symulacje prostsze, i starając się by były równie efektowne. Na przedmiocie Podstawy grafiki komputerowej poznacie podstawowy arsenał programisty-grafika: podstawowe modele oświetlenia, metody cieniowania, rasteryzacji. Dowiecie się także co to są shadery. Na wykładzie Procesory graficzne w obliczeniach równoległych (CUDA) opowiemy sobie jak skutecznie wykorzystać nowoczesne karty graficzne żeby przeprowadzać obliczenia ponad sto razy szybciej niż najdroższy procesor na płycie głównej.

Atakując problem z drugiej strony, możemy postawić sobie za cel generowanie obrazów równie perfekcyjnych jak prawdziwe zdjęcia, za wszelką cenę. Być może wygenerowanie takiego obrazu zajmie dłuższą chwilę, ale rezultat będzie tego wart. Aby to osiągnąć, wystarczy budować nasze algorytmy dokładnie na podstawie fizycznych praw określających proces transportu światła. Na wykładzie Realistyczna grafika komputerowa poznamy wiele takich algorytmów, poczynając od klasycznego śledzenia promieni poprzez metody Monte Carlo, radiosity i inne.

Przetwarzaniu Obrazów poświęcony jest kolejny wykład. Zajmiemy się tam zarówno obróbką zdjęć jak i przetwarzaniem wygenerowanych przez komputer obrazów. Na Seminarium z Rozpoznawania Obiektów 3D dowiecie się nawet jak odzyskiwać informację o świecie 3D ze zdjęć.

W wielu zagadnieniach dotyczących grafiki komputerowej, projektowania, planowania ruchu, czy przetwarzania danych geograficznych, pojawiają się nietrywialne problemy obliczeniowe. Efektywne przeprowadzenie obliczeń wymaga nie tylko dobrej znajomości geometrycznej natury problemu, lecz również odpowiednich algorytmów i struktur danych. Konstrukcja i analiza efektywnych algorytmów geometrycznych jest omawiana w ramach wykładu.

Geometria obliczeniowa . Typowymi rozważanymi zagadnieniami są tu: triangulacja wielokątów, wyznaczanie przecięć obiektów geometrycznych, konstrukcja otoczki wypukłej zbioru punktów czy diagramów Voronoi'a.

Dla komputera, najprostszą reprezentacją świata są precyzyjnie płaskie ściany oddzielone perfekcyjnie ostrymi kantami. Ale w rzeczywisty świat tak nie wygląda u nas wszystko jest gładkie, wygięte, nieco krzywe. Krzywe i powierzchnie występujące w grafice komputerowej muszą być opisane w sposób matematyczny, żeby można było je wizualizować i modelować. Przedmiot Matematyczne metody grafiki komputerowej przedstawia jedno z najważniejszych odkryć w tej dziedzinie: krzywe i powierzchnie Béziera opracowane w latach sześćdziesiątych XX wieku przez Béziera i de Casteljau, matematyków pracujących w fabrykach samochodów Renault i Citroën. Obecnie krzywe i powierzchnie Béziera są powszechnie używane w przemyśle samochodowym i lotniczym. Znalazły one wiele innych zastosowań, m.in. w typografii i diagnostyce medycznej. Poznamy również inne efektywne narzędzia: krzywe i powierzchnie sklejane, powierzchnie Gordona-Coonsa, krzywe i powierzchnie wygładzające.

Języki programowania

Programowanie jest jedną z najważniejszych umiejętności, jakich oczekuje się od dobrze wykształconego informatyka. Tworzenie niezawodnego i efektywnego oprogramowania wymaga znajomości zarówno algorytmiki i podstaw teorii obliczeń, jak i szerokiej wiedzy praktycznej na temat istniejących paradygmatów programowania oraz konkretnych języków programowania, a także znajomości ich podstaw teoretycznych. Te umiejętności pozwalają na tworzenie poprawnego, bezpiecznego, efektywnego i czytelnego oprogramowania.

Podstawowymi przedmiotami, których zadaniem jest wprowadzenie studenta w arkana programowania są: wykład Wstęp do programowania , który ma na celu nauczenie studenta podstawowych technik programowania strukturalnego i obiektowego na przykładzie języka Python oraz Kurs języka ANSI C z elementami C++ , który oferuje możliwość dogłębnego zapoznania się z jednym z najbardziej powszechnie używanych imperatywnych języków programowania jakim jest C. Paradygmat programowania obiektowego, od lat wiodący w zastosowaniach przemysłowych, może być w dalszej części studiów zgłębiany w ramach takich przedmiotów jak Programowanie obiektowe , Kurs języka Java , Kurs zaawansowany języka C++ czy też serii kursów programowania w technologii .NET.

W ostatnich latach coraz większym zainteresowaniem cieszą się tak zwane języki deklaratywne, które w przeciwieństwie do języków imperatywnych w mniejszym lub większym stopniu nawiązujących do architektury komputera umożliwiają programiście wysokopoziomowy, abstrakcyjny opis rozwiązywanego problemu. Przedmiot Programowanie otwiera przed studentem bogaty świat programowania deklaratywnego z uwzględnieniem programowania logicznego (na przykładzie języka Prolog), oraz funkcyjnego (na przykładzie języka Haskell). Tematy te są następnie rozwijane w ramach przedmiotów Programowanie logiczne , Programowanie funkcyjne , Kurs języka Haskell , Algorytmy funkcjonalne i trwałe struktury danych oraz Kurs języka Erlang , gdzie prezentowane są inne nowoczesne języki i techniki programowania deklaratywnego o szerokich zastosowaniach m.in. w sztucznej inteligencji i telekomunikacji.

Przedmiot Programowanie stanowi również wstęp do teoretycznych aspektów języków programowania, takich jak formalna semantyka języków programowania (temat kontynuowany w ramach przedmiotów Semantyka języków programowania , Zastosowanie teorii kategorii
do konstrukcji oprogramowania
i Analiza programów komputerowych ), a także interpretacja i kompilacja programów (temat rozwijany w ramach przedmiotów Struktura i interpretacja programów komputerowych i Konstrukcja kompilatorów ).

W ostatnich latach rośnie znaczenie logiki w informatyce, głównie za sprawą rosnącej potrzeby tworzenia oprogramowania certyfikowanego, czyli takiego, którego poprawność i bezpieczeństwo są formalnie weryfikowalne. Podstawy teoretyczne oraz praktyczne wprowadzenie
do takiego podejścia do programowania są omawiane m. in. w ramach przedmiotów Obliczenia i wnioskowanie w systemie Coq oraz Teoretyczne podstawy języków programowania , który stanowi uzupełnienie Programowania o bardziej zaawansowane aspekty
dotyczące typów w językach programowania i ich logicznej interpretacji.

Uzupełnieniem oferty dydaktycznej dotyczącej języków programowania są kursy tworzenia aplikacji i serwisów internetowych z użyciem najnowszych technologii wykorzystujących HTML, CSS, JavaScript, PHP oraz XML ( Kurs WWW i Kurs XML ).

Metody i algorytmy numeryczne

Obliczenia numeryczne są od stuleci obecne w wielu dziedzinach nauki i techniki,
że wymienimy analizę matematyczną, algebrę liniową, teorię aproksymacji, fizykę, biologię, ekonomię, budownictwo, nauki społeczne i medycynę. Nowoczesna wersja tych obliczeń z użyciem komputerów, która pojawiła się ponad 60 lat temu, była fundamentem nowej dyscypliny matematycznej, nazwanej analizą numeryczną. Możliwość wykonywania miliardów działań arytmetycznych doprowadziła do powstania nowych klas algorytmów, których dokładność i stabilność wymaga gruntownego zbadania.
Specyficzną cechą obliczeń komputerowych jest konieczność zapisania każdej liczby przy użyciu skończenie wielu cyfr, co wymusza powstanie błędu zaokrąglenia. To z kolei oznacza, że skomplikowane algorytmy, wymagające wykonania miliardów działań, mogą kumulować błędy w sposób lawinowy. Spektakularny przykład z 1991 r.: po stu godzinach nieprzerwanej pracy komputer sterujący obronną rakietą Patriot odmierzył czas z błędem 0.34 sekundy, co przełożyło się na 687-metrową niedokładność w ocenie odległości do atakującej rakiety Scud (skutki pomyłki były tragiczne ...). Analiza błędów metod jest zatem bardzo istotna, ponieważ pozwala ocenić poziom zaufania do otrzymanego wyniku.

Analiza numeryczna jest przedmiotem wprowadzającym podstawowe pojęcia i omawiającym metody numeryczne rozwiązania typowych zagadnień obliczeniowych: rozwiązywania równań nieliniowych, interpolacji i aproksymacji funkcji, całkowania numerycznego i rozwiązywania układów równań liniowych. Specyfika obliczeń numerycznych, w szczególności drobne, choć nieuchronne błędy towarzyszące zarówno reprezentacji liczb w pamięci komputera, jak również wykonywanym na nich działaniom arytmetycznym, powoduje, że klasyczne metody rozwiązania powyższych zadań tracą przydatność. Zastąpiły je nowoczesne algorytmy o gwarantowanej skuteczności i wysokim poziomie bezpieczeństwa. Zdarza się również, że bardzo szacowna metoda zostaje zmodyfikowana w sposób istotnie podnoszący jej wartość obliczeniową.

Powyższe spektrum tematyczne poszerzają inne przedmioty.

    Metody obliczeniowe algebry liniowej omawiają zadania związane z macierzami i wektorami, jak np. obliczanie wartości i wektorów własnych macierzy, czy liniowe zadanie najmniejszych kwadratów. Przykłady zastosowań: problem odpowiedniego uporządkowania odnośników do stron internetowych wyświetlanych jako odpowiedź na nasze zapytanie w przeglądarkach internetowych; obróbka danych w tomografii komputerowej.

    Metody przyspieszania zbieżności , zajmuje się takimi przekształceniami bardzo wolno zbieżnych ciągów i szeregów, które czynią z nich sprawne narzędzie przybliżania funkcji.

    Obliczenia w technice i Modelowanie zjawisk przyrodniczych prezentują metody numeryczne rozwiązywania równań różniczkowych zwyczajnych i cząstkowych, opisujących zjawiska i procesy fizyczne.

    Uzupełnieniem oferty dydaktycznej są przedmioty wprowadzające w tematykę algebry komputerowej, czyli przekształceń symbolicznych: Kurs systemów wspomagających obliczenia: Maple i Matlab oraz wykład Pewne algorytmy symboliczne .

Sztuczna Inteligencja

Sztuczna inteligencja (SI) jest ważną i budzącą emocje dziedziną informatyki, w której próbuje się opracowywać metody rozwiązywania problemów, które (jak się wydaje) wymagają czegoś ponad to, co zwyczajowo oferują komputery. Zajmując się sztuczną inteligencją chcemy wyciągać wnioski z obserwacji inteligentnego zachowania ludzi (i niektórych zwierząt), rozwiązując problemy trudne do formalnego opisan ii zalgorytmizowania. W naszej ofercie znajduje się przede wszystkim
podstawowy przedmiot wprowadzający w te zagadnienia, czyli po prostu Sztuczna inteligencja . Naukę można kontynuować na wiele sposobów, przykładowo można wybrać któryś z przedmiotów opisujących wybrane metody sztucznej inteligencji, lub też przedmiot koncentrujący się na jakiejś jej poddziedzinie. Wśród przedmiotów z pierwszej grupy wymienimy Sztuczne sieci neuronowe , w których pewne problemy rozwiązuje się tworząc struktury nawiązujące do układów nerwowych zwierząt (i człowieka). Wiele algorytmów używanych w SI osiąga sukces dzięki możliwościom znac znego zrównoleglenia obliczeń, co w dobie coraz powszechniejszych systemów wieloprocesorowych jest poważnym atutem. Posłuchać o tym można na przedmiocie Równoległe algorytmy sztucznej inteligencji . Tradycyjnie do dziedziny sztucznej inteligencji przypisuje się pewne grupy algorytmów heurystycznych, z których bodaj najważniejszą są Algorytmy ewolucyjne . W algorytmach ewolucyjnych rozwiązanie problemu powstaje w sposób nawiązujący do ewolucji żywych organizmów.

Natomiast jeśli chodzi o przedmioty omawiające pewne zastosowania sztucznej inteligencji, to wspomnimy tu o dwóch przedmiotach. Pierwszym z nich jest Przetwarzanie języka naturalnego, podczas którego można się nauczyć, jak komputer jest w stanie przetwarzać teksty napisane w takich
językach jak polski czy angielski, i jak (bardzo powoli) zbliżamy się do stworzenia programów, które rozumieją, co się do nich mówi ''po ludzku''. Warto tu zaznaczyć, że rozumienie tekstów w języku naturalnym w stopniu umożliwiającym konwersację na dowolny temat jest powszechnie uznawane za ''ostateczny cel'' sztucznej inteligencji. W drugim przedmiocie z tej grupy, czyli w Automatycznym dowodzeniu twierdzeń można zobaczyć, jakie algorytmy sprawiają, że za pomocą komputerów
ludzie potrafią dowodzić prawdziwość twierdzeń, z którymi wcześniej nie umiały sobie przez dziesięciolecia poradzić najtęższe matematyczne umysły.

Osoby zainteresowane mniej poważnym obliczem Sztucznej inteligencji mogą zapisać się na wykład lub seminarium np. Programowania gier (na których, między innymi, omawia się tworzenie inteligentnych postaci w grach komputerowych), czy też na seminarium pt. General Game Playing , na którym rozważa się programy grające w gry, których się wcześniej musiały same nauczyć.

Teoria Obliczeń

Dzięki dynamicznemu rozwojowi techniki współczesne komputery stają się coraz sprawniejsze i pozwalają nam liczyć coraz więcej coraz szybciej. Naturalne wydają się pytania: Czy są rzeczy, których komputery nigdy nie będą potrafiły policzyć? Czy istnieją problemy, których nawet możliwie najszybszy komputer nie rozwiąże w mig? Tego typu rozważania stanowią ważną gałąź informatyki i są w naszym instytucie omawiane na wielu przedmiotach. Przedmiot wprowadzający podstawowe pojęcia z tym związane nazywa się Języki formalne i złożoność obliczeniowa (JFIZO) ; jest to przedmiot obowiązkowy na studiach drugiego stopnia, ale ambitniejszym studentom zaleca się jego zaliczenie już na czwartym semestrze studiów pierwszego stopnia. JFIZO składa się z trzech części:

Pierwsza część poświęcona została uproszczonym maszynom. Na początku rozważa się automaty, które mogą korzystać jedynie z ograniczonej ilości pamięci. Takie ograniczenie nie jest wcale nieżyciowe (bo przecież każdy komputer ma tylko skończoną pamięć do swojej dyspozycji), a mocno upraszcza rozumowania. Więcej informacji o automatach można zdobyć wielu przedmiotach, w tym na Automatach z wagami , Teorii i zastosowaniach automatów skończonych i Automatycznej weryfikacji systemów komputerowych . Okazuje się też, że automaty pełnią ważną rolę przy budowie kompilatorów (czyli narzędzi, które przekładają programy przez nas napisane na język komputerów) więcej na ten temat można się dowiedzieć na przedmiocie Compiler construction .

Traktowanie komputera jako skończonego automatu bardzo ułatwia rozumowanie, jednak nie oddaje dobrze rzeczywistości, w której komputerowi zawsze możemy dołożyć kolejną pamięć RAM czy flash. Bardziej naturalne wydaje się więc rozważanie maszyn, których pamięć jest potencjalnie nieskończona (to znaczy, że mogą używać jej bardzo dużo, zwłaszcza gdy dostaną bardzo dużo danych do przetworzenia). Okazuje się, że nawet wtedy pojawiają się problemy, których takie maszyny nie potrafią rozwiązać nie da się na przykład automatycznie sprawdzać, czy dany program zapętla się po uruchomieniu. Podczas drugiej części JFIZO poznaje się dowód tego twierdzenia, a także kilka narzędzi pozwalających na rozpoznawanie, które zadania nie dają się rozwiązać. Wiedza z tej części może być poszerzana na wielu przedmiotach, m.in. Matematycznych podstawach informatyki , Problemach decyzyjnych czy Równaniach w słowach .

Gdy już wiemy, że pewien problem daje się rozwiązać na komputerze, pozostaje pytanie: jak szybko można to zrobić? Trzecia część JFIZO wprowadza narzędzia pozwalające klasyfikować problemy ze względu na czas i pamięć potrzebne do ich rozwiązania. Co ciekawe, choć dział ten stanowi jedną z najdynamiczniej rozwijających się gałęzi informatyki, to wciąż nie znamy odpowiedzi na bardzo proste pytania, np. czy każdy problem, który można rozwiązać w wielomianowej (względem rozmiaru danych wejściowych) pamięci daje się rozwiązać w wielomianowym czasie? W naszej ofercie dydaktycznej znajduje się wiele przedmiotów z tej dziedziny, m.in. Logiki modalne i temporalne , Parametryczna złożoność obliczeniowa , Problemy spełniania więzów , Złożoność obliczeniowa oraz Złożoność obliczeniowa 2 3/4

.