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
studia I stopnia
(inżynierskie)

3,5 roku
(7 semestrów)

inżynier informatyki
studia II stopnia
(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 wykładów 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)
Stacks Image 64
Stacks Image 80
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)
Stacks Image 140
W trakcie tego wykładu zapoznasz się z pojęciem ciągu, granicy ciągu, szeregami, podstawowymi kryteriami zbieżności szeregów, ciągłością funkcji, różniczkowaniem, wzorem Taylora, całką Riemana oraz szeregami potęgowymi. Wszystkie wymienione zagadnienia dotyczą funkcji jednej zmiennej rzeczywistej.

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)
Stacks Image 143
W trakcie tego wykładu nauczysz się liczyć w ciele liczb zespolonych, zapoznasz się z Zasadniczym Twierdzeniem Algebry którego pierwszy poprawny dowód podał Carl Friedrich Gauss (jego portret znajduje się obok), z pojęciem przestrzeni i odwzorowań liniowych, nauczysz się rachunku macierzowego, rozwiązywania układów równań liniowych, zapoznasz się z metodą ortogonalizacji Grama-Schmidta, poznasz pojęcie formy kwadratowej i krzywych stożkowych.

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, 2h C)
Stacks Image 146
Wykład ten służy do precyzyjnego sformułowania podstawowych obiektów matematycznych, którymi posługujemy się w innych działach matematyki oraz w informatyce. Dowiesz się, na przykład, że funkcja jest pewną relacją, że relacja jest zbiorem par uporządkowanych a parę uporządkowaną można zdefiniować przy pomocą pary nieuporządkowanej ( wzór Kuratowskiego). Dowiesz się, że nie istnieje zbiór wszystkich zbiorów, oraz, że istnieje tylko jeden zbiór pusty. Na wykładzie tym zostaną wprowadzone pierwsze elementy matematyki dyskretnej: będziemy zajmowali się liczeniem mocy zbiorów skończonych, pojawi się taki wzór jak \(|A \cup B| = |A| + |B| - |A \cap B|\) oraz jego fajne uogólnienia.

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, 1h C, 1h L)
Stacks Image 194
Każdy student(ka) kierunku informatyka musi umieć programować. Na kursie poznasz podstawowe konstrukcje, które ułatwią ci późniejszą naukę dowolnego języka algorytmicznego (takiego, w którym program jest implementacją algorytmu).

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.
Stacks Image 199
Stacks Image 201
Druga część wykładu omawia podstawowe metody konstruowania algorytmów (rekursja, zasada dziel i zwyciężaj, programowanie dynamiczne). 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ę).

II semestr

Analiza matematyczna II (2h W, 1h C)
Stacks Image 149
Wykład ten jest kontynuacją wykładu o nazwie Analiza matematyczna I. Rozpocznie się on od badania funkcji wielu zmiennych. Metody badania tych obiektów są uogólnieniem metod poznanych na wykładzie z Analizy I. Poznasz pojęcie granicy, ciągłości i pochodnej funkcji wielu zmiennych, dowiesz się co to są pochodne cząstkowe. Poznasz uogólnienie wzoru Taylora na funkcje wielu zmiennych.

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, 1h C)
Stacks Image 152
Wykład rozpocznie się od wprowadzenie trzech podstawowych struktur algebraicznych: grup, pierścieni i ciał. Poznasz wiele przykładów tych stuktur. Zrozumiesz piękne twierdzenie Lagrange`a:

$$\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.
Stacks Image 155
Następnie omówione zostaną podstawowe pojęcia i fakty z Teorii Liczb. Nauczysz się rozwiązywać równania diofantyczne, poznasz małe twierdzenie Fermata, zapoznasz się z własnościami funkcji Eulera, poznasz chińskie twierdzenie o resztach i jego zastosowania.

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)
Stacks Image 158
Na wykładzie omawiane są najważniejsze elementy Matematyki Dyskretnej wykorzystywane w Informatyce do analizy i projektowania algorytmów.

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
Stacks Image 163
Dowiesz się na przykład, jak policzyć liczbę możliwych triangulacji wielokąta, liczbę drzew binarnych i liczbę sposobów rozstawienia nawiasów.
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.

Kurs programowania (2h W, 2h L)
Stacks Image 168
Poznasz podstawowe pojęcia i zagadnienia związane z programowaniem obiektowy.

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.
Stacks Image 173
Następnie omówione zostaną podstawy kinematycznej teorii gazów oraz podstawowe zagadnienia termodynamiki. Zetkniesz się tutaj z pojęciem entropii, którego inne warianty będziemy wykorzystywali w do analizy wielu zagadnień Informatyki.

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\).


Problemy społecze i zawodowe informatyki (2h W)
Stacks Image 176
W ramach kursu zapoznasz się z zasadami funkcjonowania systemu prawa tj. reguł interpretacji oraz realizacji norm prawnych.

Zrozumiesz podstawowe zasady prawa cywilnego, zasady działania administracji publicznej oraz podstawowe reguły dotyczące działalności gospodarczej.

Omówione zostaną zasady funkcjonowania systemu karnego w zakresie związanym z działalnością informatyczną.

Poznasz zasady ochrony własności intelektualnej wynikające z prawa autorskiego, prawa patentowego i praw pokrewnych.

Zapoznasz się z zasadami świadczenia usług drogą elektroniczną, regułami związanymi z dokumentami elektronicznymi i ich ochroną oraz z przetwarzaniem danych osobowych.

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:
  • 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:
Stacks Image 207
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