Inżynierskie studia pierwszego stopnia
Zgodnie z obowiązującym w Polsce systemem bolońskim, który ujednolica strukturę studiów w UE, studia zostały podzielone na dwa stopnie:
Stopień studiów |
Czas trwania |
Tytuł zawodowy |
|
|
|
|
|
|
|
|
|
|
|
|
Stopień I studiów (inżynierskie) |
3,5 roku (7 semestrów) |
Inżynier informatyki |
|
|
|
|
|
|
|
|
|
|
|
|
Stopień II studiów (magisterskie) |
1,5 roku (3 semestry) |
Magister inżynier informatyki |
|
|
|
|
|
|
|
|
|
|
|
|
Na inżynierskich studiach pierwszego stopnia prowadzimy kierunek Informatyka Algorytmiczna (bez podziału na specjalizacje).
Nasz kierunek charakteryzuje się dużą dawką kursów matematycznych na pierwszym roku studiów. Poniższy wykres przedstawia tygodniową liczbę godzin zajęć w kolejnych semestrach z podziałem na kursy:
Nasz kierunek charakteryzuje się dużą dawką kursów matematycznych na pierwszym roku studiów. Poniższy wykres przedstawia tygodniową liczbę godzin zajęć w kolejnych semestrach z podziałem na kursy:
- Matematyczne i fizyczne (analiza, algebra, logika, probabilistyka, statystyka, fizyka)
- Informatyczne (programowanie, algorytmy i struktury danych, bezpieczeństwo, architektura komputerów, bazy danych, technologie sieciowe)
- Inne (prawne, humanistyczne, ekonomiczne)
Na wykresie nie uwzględniono zajęć z wychowania fizycznego i kursów języków obcych.
Znajomość podstaw matematyki jest konieczna gdyż bez niej:
- nie zaprojektujesz poprawnie algorytmu,
- nie przeprowadzisz jego analizy,
- nie uzasadnisz jego poprawności,
- nie zaimplementujesz go poprawnie, uwzględniając wszystkie czynniki jakie wpływają na jego działanie.
Począwszy od początku drugiego roku studiów kursy informatyczne stanowią większość odbywanych na naszym kierunku zajęć.
Pierwszy rok studiów
Przyjrzyjmy się dokładniej kursom jakie odbywają się w pierwszych dwóch semestrach.
I semestr
Analiza matematyczna I (3h W, 2h C)
Centralnym punktem tego wykładu jest następujący wzór:
$$\frac{d}{dx} \int_0^x f(t) dt = f(x)$$
gdzie \(f\) jest ciągła funkcją zmiennej rzeczywistej. Jest to tak zwane Podstawowe Twierdzenie Rachunku Całkowego. Udowodnił je Isaac Barrow, nauczyciel Issaca Newtona. Do zrozumienia tego wzoru potrzebne jest rozumienie całki Riemana oraz pojęcia różniczkowania. Łączy on w piękny sposób różniczkowania z całkowaniem.
Nawet tak klasyczny wykład jak ten jest specjalnie przygotowany dla Informatyków. Pod koniec tego wykładu zapoznasz się z pojęciem szeregu potęgowego oraz klasy kombinatorycznej. Pojęcie to będzie wykorzystywane w przyszłości na wykładzie z Matematyki Dyskretnej.
Analizę Matematyczną stworzył Isaak Newton (to jego portret znajduje się na tej stronie). Czasami zalicza się ją do tak zwanej "matematyki wyższej". Jest to jednak dużą przesadą. Newton żył około 300 lat temu. Ucząc się Analizy Matematycznej I zapoznajesz się więc, po prostu, z historią nauki. Pamiętaj, że Analiza Matematyczna jest podstawą ścisłego wykształcenia wyższego.
Analiza matematyczne jest niezbędna informatykowi!!! Bez jej opanowania nie można zrozumieć działania większości algorytmów. Oto pierwszy z brzegu przykład: tak podstawowe pojęcie jak \(f=O(g)\) jest równoważne temu, że \(\lim \sup |f(n)/g(n)|\) jest skończone. Informatyk musi umieć dobrze rozumieć zdania typu "algorytm sortowania przez scalanie używa \(O(n \ln(n))\) porównań". A to tylko jeden z najprostszych przykładów.
W szkole średniej mogłeś już zapoznać się z wieloma zagadnieniami poruszanymi na tym wykładzie. Bądź jednak ostrożny: w szkole średniej posługiwałeś się nieprecyzyjnymi pojęciami. Na przykład, czy wiesz z jakiej własności liczb rzeczywistych wynika twierdzenie Darboux o wartości średniej? Czy umiesz w pamięci rozwinąć funkcję \(f(x) = 1 + x + 2 x^2\) w szereg Taylora w punkcie \(0\)?
Algebra z geometrią analityczną (4h W, 2h C)
Jednym z głównych faktów z tego wykładu jest następujący wzór:
$$ dim(U) = dim(ker(L)) + dim(img(L)),$$
gdzie \(L : U \mapsto V\) jest odwzorowaniem liniowym pomiędzy przestrzeniami liniowymi \(U\) i \(V\). Ze wzoru tego wyprowadzić można wszystkie podstawowe własności układów równań liniowych (w szczególności, bardzo ważne Twierdzenie Kroneckera-Capellego).
Po wykładzie tym będziesz znał szereg fajnych wzorów takich jak
$$\left( \begin{array}{cc} a& b \\ c & d \end{array}\right)^{-1} =
\frac{1}{ad-bc} \left( \begin{array}{cc} d & -b \\ -c & a \end{array} \right) $$
oraz dowiesz się, że cała trygonometria ze szkoły średniej jest zawarta w jednym prostym wzorku: \(e^{it} = \cos t + i \sin t\).
Algebra liniowa wykorzystywana jest w wielu działach informatyki. Za jej pomocą opisuje się w grafice komputerowej transformacje obiektów i przestrzeni. Wykorzystuje się ją we współczesnej kryptografii. Firma Google kilka razy w miesiącu oblicza wartości własne pewnych wielkich macierzy opisujących powiązania pomiędzy wszystkimi stronami WWW.
W materiale szkole średniej znajduje się mało elementów z tego wykładu. Być może liczyłeś już w liczbach zespolonych i rozwiązywałeś małe układy równań. Na wykładzie tym trzeba uważać od samego początku - opuścisz jeden wykład i możesz mieć wielkie problemy z nadrobieniem materiału.
Logika i struktury formalne (4h W, 3h C)
W trakcie tego wykładu zapoznasz się z rachunkiem zdań, rachunkiem zbiorów, kwantyfikatorami, podstawowymi klasami relacji (częściowe porządki, relacje równoważności, kraty), różnymi wariantami indukcji matematycznej (zasada dobrego uporządkowania, zasada Dirichletta), elementami teorii mocy (zbiory przeliczalne, zbiory mocy continuum), systemami przepisującymi, elementami logik nieklasycznych ( LTL).
Duża część tego wykładu poświęcona będzie teorii mnogości. Teoria ta stanowi szkielet współczesnej matematyki. Jej twórcą jest George Cantor, którego podobizna znajduje się na tej stronie. Teoria mnogości powstała w XX wieku, na wykładzie tym spotykać się będziesz więc z elementami współczesnej matematyki.
Po omówieniu elementów teorii mocy będziesz wiedział, że tyle samo jest punktów na płaszczyźnie jak punktów na prostej. Dowiesz się również, że liczb naturalnych jest tyle samo co liczb wymiernych. Po wykładzie tym powinno być dla Ciebie oczywiste, że funkcji obliczalnych (czyli takich, które potrafimy oprogramować w dowolnym rozsądnym języku programowania) jest bardzo mało (dokładniej - przeliczalnie wiele), a więc, że istnieje bardzo dużo funkcji nieobliczalnych.
Wykład ten jest bardzo ważny dla informatyków. Dobre poznanie podstawowych tautologii rachunku zdań ułatwi ci pisanie poprawnych instrukcji warunkowych. Poznanie podstawowych własności kwantyfikatorów pozwoli ci na precyzyjne zapisywanie własności algorytmów. Logiki nieklasyczne służą, między innymi, do automatycznej weryfikacji poprawności algorytmów. Standardowe implementacje bazodanowego języka SQL posługują się pewną prostą nieklasyczną logiką.
Musisz uważać na tym wykładzie - większość materiału będzie dla ciebie nowa; nie było tego w szkole średniej. Spotkasz się na nim z wieloma łatwymi, lecz bardzo abstrakcyjnymi pojęciami. Będziesz potrzebował trochę czasu aby z każdym z nich się oswoić - trzeba więc będzie systematycznie pracować.
Wstęp do informatyki i programowania (2h W, 2h C, 1h L)
Wykład składa się z dwóch części.
W pierwszej omawiane są podstawowe pojęcia związane z programowaniem (program, instrukcja, pętla, instrukcja warunkowa, funkcja). Podczas laboratorium będziesz je ćwiczyć pisząc programy w języku C oraz Ada. Dlaczego w dwóch językach? Abyś zrozumiał(a), że omawiane konstrukcje są uniwersalne.
Poniżej zamieszczono źródła funkcji obliczającej największy wspólny dzielnik w języku C (po lewej) i w języku Ada (po prawej). Jak widzisz są one bardzo podobne do siebie. W obu wykorzystywane są zmienne o wartościach całkowitych nieujemnych; w obu występuje pętla while powtarzana tak długo, dopóki wartość zmiennej Y jest różna od zera; w obu wewnątrz pętli wykonywane są trzy instrukcje podstawienia i w obu funkcja kończy się instrukcją return zwracającą aktualną wartość zmiennej X.
Druga część wykładu omawia podstawowe metody konstruowania algorytmów (rekursja, zasada dziel i zwyciężaj, przegląd z nawrotami). Dzięki nim będziesz potrafił(a) zaprojektować proste algorytmy, które potem zaimplementujesz (oprogramujesz).
Na ćwiczeniach będziemy rozwiązywać zadania, które pomogą ci opanować omówione na wykładzie pojęcia. Między innymi dowiesz się jak uzasadnia się poprawność programów i dlatego na ćwiczeniach każde z naszych rozwiązań będziemy analizować pod względem jego poprawności oraz efektywności (jak szybko działa i czy może działać jeszcze szybciej). Będziemy się również zastanawiać czy zaproponowany przez nas algorytm zawsze kończy pracę (nie wpada w nieskończoną pętlę).
Na ćwiczeniach będziemy rozwiązywać zadania, które pomogą ci opanować omówione na wykładzie pojęcia. Między innymi dowiesz się jak uzasadnia się poprawność programów i dlatego na ćwiczeniach każde z naszych rozwiązań będziemy analizować pod względem jego poprawności oraz efektywności (jak szybko działa i czy może działać jeszcze szybciej). Będziemy się również zastanawiać czy zaproponowany przez nas algorytm zawsze kończy pracę (nie wpada w nieskończoną pętlę).
II semestr
Analiza matematyczna II (2h W, 1h C)
Kolejnym omawianym zagadnieniem będzie całkowanie funkcji wielu zmiennych. Okaże się, że sprawa jest prosta: dzięki Twierdzeniu Fubbiniego sprawdza się ono do całkowania funkcji jednej zmiennej. Poćwiczysz sobie trochę licząc objętości klasycznych figur geometrycznych (nie należy jednak w tym momencie wpadać w samozachwyt, bo część z tych rachunków wykonał już Archimedes około 2200 lat temu).
Potem omawiane będą pewne elementy analizy wektorowej. Poznasz pojęcie całki krzywoliniowej, pola wektorowego i potencjalnego, całki powierzchniowej, twierdzenie Gaussa i Stokesa.
Następnie na wykładzie pojawi się transformata Fouriera, omówione zostaną jej własności oraz zastosowania Wykład zakończony zostanie przeglądem podstawowych klas równań różniczkowych oraz omówione zostaną równania różniczkowe liniowe o stałych współczynnikach.
Jeśli porządnie przyłożysz się w pierwszym semestrze do wykładu z Analizy I to wykład ten przypuszczalnie bardzo Ci się spodoba. Narzędzia i techniki które opanujesz na tym wykładzie mają uniwersalne zastosowanie. Dzięki nim będziesz mógł w przyszłości badać, projektować i optymalizować skomplikowane protokoły które większość gorzej wykształconych informatyków badać może tylko eksperymentalnie.
Analiza II nie zakończy Twoich przygód z Analizą Matematyczną na tych studiach. Na wykładzie z Matematyki Dyskretnej dowiesz się jak można korzystać z narzędzi analitycznych do rozwiązywania zagadnień kombinatorycznych. Jeśli zagadnienia te Cię zainteresują to będziesz mógł wybrać wykład z Kombinatoryki Analitycznej na studiach II stopnia.
Algebra abstrakcyjna i kodowanie (2h W, 2h C)
$$\mbox{\(H\) jest podgrupą grupy \(G\)} \rightarrow card(H)\,|\, card(G)$$
które ma wiele fajnych konsekwencji. Poznasz pierwsze wyniki o klasyfikacji grup skończonych. Nauczyć się liczyć w grupach cyklicznych \(C_n\), pierścieniach \(Z_n\), ciałach \(Z_p\), grupach \((Z_n)^*\) oraz w pierścieniach wielomianów.
Następnie zajmiesz się serią zagadnień z teorii kodów. Poznasz pojęcie kodów korekcyjnych, odległości Hamminga, wykrywaniem i korekcją błędów, kodów liniowych kodów Hamminga, Golaya. Poznasz pojęcie elementu pierwotnego, wielomianu nierozkładalnego, algebraicznego rozszerzenie ciała, ciała Galoisa, wielomianu minimalnego, kod BCH
Wykład zakończy się omówieniem struktury i konstrukcji skończonych ciał algebraicznych. Dowiesz się, że dla każdej liczby pierwszej \(p\) oraz dodatniej liczby naturalnej \(n\) istnieje dokładnie jedno ciało liczbowe, które ma \(p^n\) elementów.
Algebra abstrakcyjna jest ważnym narzędziem współczesnej informatyki. Podstawowe dzisiaj techniki kryptograficzne, takie jak algorytm RSA i algorytm ElGamala opierają się na własnościach algebraicznych omawianych na tym wykładzie struktur. Bardzo wiele protokołów wykorzystuje pierścień \(\{0, 1\}^n\), skończona płaszczyzna \((Z_n)^2\) jest wykorzystywana do predystrybucji kluczy. Przykładów można by podać tu znacznie więcej.
Większość omawianych na tym wykładzie zagadnień może być dla Ciebie zupełnie nowa. Ale szybko polubisz abstrakcyjne struktury algebraiczne. Ze zdziwieniem zorientujesz się, że umiesz liczyć w dowolnych ciałach (bo umiesz już liczyć w liczbach rzeczywistych i zespolonych, a pojęcie ciała algebraicznego jest uogólnieniem tych dwóch konkretnych ciał).
Matematyka dyskretna (2h W, 2h C)
Na zajęciach opanujesz formalne narzędzia Matematyki Dyskretnej oraz nabierzesz wprawy w posługiwaniu się podstawowymi obiektami matematyki dyskretnej:
- zbiory skończone
- multizbiory
- partycje
- permutacje
- podziały
- klasy kombinatoryczne
- funkcje tworzące
- drzewa
Zostanie wyprowadzony wzór na \(n\)-ty wyraz ciągu Catalana:
$$C_n = \frac{1}{n+1} \binom{2n}{n} = \frac{(2n)!}{(n+1)! n!} = \prod_{k=2}^n \frac{n+k}{k},\; \mbox{dla \(n \ge 0\)},$$
który jest równy liczbie triangulacji wielokąta o \(n+2\) bokach, ale również równy liczbie drzew binarnych o \(n+1\) liściach a nawet równy liczbie możliwych rozstawień nawiasów grupujących \(n+1\) czynników.
$$C_n = \frac{1}{n+1} \binom{2n}{n} = \frac{(2n)!}{(n+1)! n!} = \prod_{k=2}^n \frac{n+k}{k},\; \mbox{dla \(n \ge 0\)},$$
który jest równy liczbie triangulacji wielokąta o \(n+2\) bokach, ale również równy liczbie drzew binarnych o \(n+1\) liściach a nawet równy liczbie możliwych rozstawień nawiasów grupujących \(n+1\) czynników.
Kurs programowania (2h W, 2h L)
Nauczysz się zasad projektowania obiektowych aplikacji.
Opanujesz języki programowania C++ i JAVA. Będziesz umiał zaprojektować i zaimplementować graficzny interfejs użytkownika i prostą aplikację sieciową.
Będziesz potrafił stworzyć dokumentację swojego kodu.
Fizyka (2h W)
Z większością materiału omawianego na tym wykładzie spotkałeś się już w szkole średniej. Jednak będziesz już po wykładzie Analiza I, więc do analizy omawianych zagadnień będzie można zastosować rachunek różniczkowy. Zobaczysz jak fizyka upraszcza się, gdy znasz już podstawy rachunku różniczkowego
Wykład zaczyna się od kinematyki. Omawiany będzie ruch jednostajnie przyśpieszony, prawa Newtona, konsekwencje podstawowego prostego równania
$$ m \frac{d^2 x(t)}{d^2 t} = F(t).$$
Zobaczysz, że stosując całkę wzór \(x(t) = (1/2) \cdot a \cdot t^2 + v_0 \cdot t + x_0\) na drogę w ruchu jednostajnie przyśpieszonym wyprowadza się w ciągu kilku sekund. Następnie omawiane będą pojęcia pracy i energii, pojęcie pędu i analiza zderzeń sprężystych, ruch obrotowy i jego kinematyka oraz ruch oscylacyjny.
Wykład zaczyna się od kinematyki. Omawiany będzie ruch jednostajnie przyśpieszony, prawa Newtona, konsekwencje podstawowego prostego równania
$$ m \frac{d^2 x(t)}{d^2 t} = F(t).$$
Zobaczysz, że stosując całkę wzór \(x(t) = (1/2) \cdot a \cdot t^2 + v_0 \cdot t + x_0\) na drogę w ruchu jednostajnie przyśpieszonym wyprowadza się w ciągu kilku sekund. Następnie omawiane będą pojęcia pracy i energii, pojęcie pędu i analiza zderzeń sprężystych, ruch obrotowy i jego kinematyka oraz ruch oscylacyjny.
Ostatnie grupa zagadnień to fale i interferencja, elektrostatyka, pole elektryczne i potencjał, prąd elektryczny, pole magnetyczne, fale elektromagnetyczne. Zwieńczeniem wykładu będą równania Maxwella. W momencie gdy zagadnienia te będą omawiane będziesz już na Analizie II miał omówione podstawy rachunku różniczkowego funkcji wielu zmiennych i analizy wektorowej, będziesz więc miał opanowany aparat matematyczny do zrozumienia tych wspaniałych równań. Zobaczysz, że w tych czterech równaniach ukryte jest prawo Gaussa dla pola elektrycznego, prawo Gaussa dla pola magnetycznego, prawo Faradaya i prawo Ampera (a w szczególności jak z nich wynika, że siła działająca pomiędzy dwoma ładunkami punktowymi wyraża się wzorem \(F = C \cdot q_1 \cdot q_2 / r^2\).
Metodologia nauk (2h W)
Kolejne lata studiów
Począwszy od drugiego roku studiów przybywa kursów informatycznych. Szczególnie bogata jest oferta kursów wybieralnych (ponad dwadzieścia). Wśród nich są między innymi:
Podczas studiowania na naszym kierunku poznasz wiele różnych języków programowania. Poniżej wymieniono ważniejsze z tych, które omawiane są na naszych kursach:
- Wprowadzenie do sztucznej inteligencji
- Grafika komputerowa i wizualizacja
- Nowoczesne technologie WWW
- Aplikacje mobilne
Podczas studiowania na naszym kierunku poznasz wiele różnych języków programowania. Poniżej wymieniono ważniejsze z tych, które omawiane są na naszych kursach:
Trzy z powyższych języków programowania można uznać za fundamentalne gdyż ich opanowanie stanowi podstawę uczenia się kolejnych języków:
- C (Wstęp do informatyki i programowania, Programowanie, Architektura komputerów i systemy operacyjne, Algorytmy i struktury danych, Systemy wbudowane)
- C++ (Programowanie, Algorytmy i struktury danych, Systemy wbudowane)
- Java (Programowanie, Algorytmy i struktury danych, Aplikacje mobilne)
Aktualny program studiów
Aktualny program studiów pierwszego stopnia możesz znaleźć na stronie: cs.pwr.edu.pl/programs/1-2024.html