WYKŁADY

ĆWICZENIA

PROPEDEUTYKA INFORMATYKI

python logo (10 kB)

Przedmiot wprowadzający do świata informatyki, algorytmów, języków programowania, kompilatorów i komputerów. Przedstawiona zostanie w skrócie historia informatyki, komputerów, języków programowania i teorii obliczeń stojącej u podstaw współczesnej informatyki. Wspólnie zastanowimy się nad podstawowymi pojęciami i aksjomatami, które porównamy z inteligentnymi systemami biologicznymi, wyprowadzając ciekawe wnioski dotyczące informacji, wiedzy i inteligencji. W ramach wykładów poruszane będą zagadnienia złożoności obliczeniowej, błędów numerycznych, stabilności. Przedstawione będą systemy kodowania i sposoby reprezentacji liczb (standard IEEE 754), jak również metody reprezentacji danych symbolicznych. Omówione będą algorytmy konwersji liczb pomiędzy różnymi systemami liczbowymi oraz arytmetyka operacji na liczbach binarnych. Przedmiot wprowadza pojęcia z obszaru algorytmiki i teorii obliczeń oraz omawia zagadnienia rozwiązywalności, efektywności oraz zmniejszania złożoności obliczeniowej poprzez odpowiednie stosowanie struktur danych, sortowanie oraz reprezentację relacji pomiędzy danymi i obiektami. Omawiane są paradygmaty programowania imperatywnego, proceduralnego, obiektowego, funkcyjnego, deklaratywnego, logicznego i asocjacyjnego. Przedmiot stanowi też elementarne wprowadzenie do metod inteligencji obliczeniowej oraz zagadnień obliczeń przybliżonych na przykładzie klasycznych modeli sieci neuronowych, systemów logiki rozmytej, algorytmów genetycznych i metod ewolucyjnych. Poruszone zostaną zagadnienia eksploracji i asocjacji danych, reprezentacji i przetwarzania informacji, lingwistyki komputerowej oraz kryptografii.

Wszystkie zagadnienia prezentowane będą na przykładzie nowoczesnego języka Python, który obecnie cieszy się dużym uznaniem wśród specjalistów, dzięki któremu programowanie staje się szybkie, miłe i przyjemne. Studenci na ćwiczeniach i laboratoriach będą mieli możliwość zaimplementować wiele ciekawych algorytmów oraz przetestować różne podejścia do problemów z zakresu złożoności obliczeniowej, arytmetyki komputerowej, czy też operowania na różnych liniowych i nieliniowych strukturach danych, wykorzystując ich specyfikę i potencjał. Wyjaśnione zostaną podstawy programowania strukturalnego oraz możliwości statycznego i dynamicznego definiowania i implementacji struktur danych. Omówione zostaną dobre praktyki programowania, odpluskwiania kodu i wykonywania testów, wprowadzając studentów w zagadnienia inżynierii oprogramowania. Będzie również okazja do przetestowania popularnego algorytmu stosowanego w nawigacjach satelitarnych, który wykorzystuje struktury grafowe w celu optymalizacji trasy. Wykorzystane zostaną popularne i często stosowane strategie dziel i zwyciężaj, algorytmów z wartownikiem, wyszukiwania połówkowego, zastosowane również w wybranych najefektywniejszych metodach sortowania, tj. sortowanie szybkie, stogowe, przez zliczanie. Porównamy również algorytmy iteracyjne i rekurencyjne, określając ich przydatność w różnych zagadnieniach.

Celem przedmiotu jest zapoznanie studentów z podstawowymi obszarami nauk informatycznych, zaprezentowaniem ich możliwości oraz zagadnień, którymi się zajmują, w celu umożliwienia studentom bardziej świadomego ukierunkowania się na wybrane zagadnienia na wyższych latach studiów, np. na przedmiocie dotyczącym sztucznej inteligencji.

Ze względu na zagrożenie koronawirusem i czasowe zawieszanie zajęć na uniwersytecie musimy kontynuować nasze wykłady i zajęcia zdalnie przez Internet.

Przygotowałem dla ciebie wykłady na tej stronie.

Zajęcia laboratoryjne będą prowadzone zdalnie. Możesz spróbować wykonać przygotowane zadania online w swoim miejscu zamieszkania.

Jeśli masz jakieś problemy, możesz skonsultować się ze mną przez e-mail lub Skype.

Polecane środowiska programistyczne Pythona:

pycharmlogo (21 kB) spiderlogo (22 kB) jupyterlogo googlecolablogo
PyCharm
Jet Brains
Spyder
the Scientific PYthon
Development EnviRonment
Jupyter Notebook Google Colab

Zaliczenie i egzamin:

Mimo wprowadzającego w różne zagadnienia przedmiotu, zostaną postawione przed studentami ambitne cele, gdyż współczesna technika, informatyka i komputeryzacja wymaga od przyszłych adeptów głębokiej wiedzy, doświadczenia oraz umiejętności analitycznego myślenia i twórczego rozwiązywania problemów poprzez uogólnienie wiedzy i jej aplikację z wykorzystaniem podobieństw oraz wyuczonych wzorców i schematów.

Bibliografia i literatura:

  • D.Harel, F.Yishai, Rzecz o istocie informatyki – algorytmika, WNT
  • N.Wirth, Algorytmy + struktury danych = programy, WNT
  • J.G.Brookshear ,Informatyka w ogólnym zarysie, WNT
  • Krzysztof Diks, Wojciech Rytter, Lech Banachowski, Algorytmy i struktury danych, WNT
  • Alfred V. Aho, Jeffrey Ullman i John Hopcroft, Algorytmy i struktury danych, Helion
  • T. H. Cormen, Ch. E. Leiserson, R. L. Rivest, C. Stein, Wprowadzenie do algorytmów, PWN, Wydanie VII, Warszawa, 2018.

Ciekawe hiperłącza i dodatkowe materiały: