WYKŁADY

WSTĘP DO 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.

Polecane środowiska programistyczne Pythona:

spiderlogo (22 kB) pycharmlogo (21 kB)
Spyder
the Scientific PYthon
Development EnviRonment
PyCharm
Jet Brains

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.
Warunkiem koniecznym do przystąpienia do egzaminu jest zaliczenie ćwiczeń i laboratoriów na ocenę pozytywną, poprzez rzetelną realizację wszystkich ćwiczeń zrealizowanych w Pythonie oraz oddanie ich prowadzącemu. Konieczne będzie też pozytywne zaliczenie kolokwium oraz oddanie wybranego projektu zaliczeniowego dokumentującego zdobyte umiejętności i wiedzę.
W trakcie egzaminu dokładnie sprawdzana będzie wiedza teoretyczna, zrozumienie prezentowanych zagadnień oraz umiejętność zastosowania zdobytej wiedzy do rozwiązania przykładowych problemów. Egzamin odbędzie się w formie pisemnej, przyjmując formę testu wielokrotnego wyboru, uzupełniania, łączenia, wnioskowania i wykonania przykładowych obliczeń na podstawie wiedzy prezentowanej na wykładach.

TERMINY EGZAMINÓW: styczeń i luty

  1. 30.01.2018 - od 9:30 do 11:00 sala H24 w B1 (pisemny)
  2. 06.02.2018 - od 9:30 do 11:00 sala H24 w B1 (pisemny)
  3. 13.02.2018 - od 9:30 do 11:00 sala H24 w B1 (pisemny lub ustny w zależności od ilości osób, sala może ulec zmianie w zależności od ilości zdających)

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
  • D. T. Larose, Odkrywanie wiedzy z danych. Wprowadzenie do eksploracji danych, PWN

Ciekawe hiperłącza i dodatkowe materiały: