Nazwa przedmiotu:
Podstawy programowania i przetwarzania danych
Koordynator przedmiotu:
dr Anna Cena
Status przedmiotu:
Obowiązkowy
Poziom kształcenia:
Studia I stopnia
Program:
Inżynieria i Analiza Danych
Grupa przedmiotów:
Wspólne
Kod przedmiotu:
1120-DS000-ISP-0115
Semestr nominalny:
1 / rok ak. 2020/2021
Liczba punktów ECTS:
5
Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
1. godziny kontaktowe – 80 h; w tym a) obecność na wykładach – 30 h b) obecność na ćwiczeniach – 15 h c) obecność na laboratoriach – 30 h d) konsultacje – 5 h 2. praca własna studenta – 50 h; w tym a) przygotowanie do ćwiczeń i kolokwium – 10 h b) przygotowanie do laboratoriów – 10 h c) zapoznanie się z literaturą – 5 h d) zrobienie prac domowych – 25 h Razem 130 h, co odpowiada 5 pkt. ECTS
Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
1. obecność na wykładach – 30 h 2. obecność na ćwiczeniach – 15 h 3. obecność na laboratoriach – 30 h 4. konsultacje – 5 h Razem 80 h, co odpowiada 3 pkt. ECTS
Język prowadzenia zajęć:
polski
Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
1. obecność na laboratoriach – 30 h 2. przygotowanie do laboratoriów – 15 h 3. zrobienie prac domowych – 25 h Razem 70 h, co odpowiada 3 pkt. ECTS
Formy zajęć i ich wymiar w semestrze:
  • Wykład30h
  • Ćwiczenia15h
  • Laboratorium30h
  • Projekt0h
  • Lekcje komputerowe0h
Wymagania wstępne:
brak
Limit liczby studentów:
.
Cel przedmiotu:
Kurs jest wprowadzeniem do programowania imperatywnego z użytkowymi elementami technik programowania obiektowego na przykładzie języka Python 3. Student poznaje pojęcie algorytmu, funkcji, programu, rekurencji, tablicy (listy), a także najbardziej podstawowe algorytmy, które mogą być wykorzystywane w przetwarzaniu danych, m.in. proste algorytmy sortowania i działania na wektorach oraz macierzach. Zapoznaje się także z wybranymi funkcjami z biblioteki pakietów dla środowiska Python, np. służącymi do generowania wykresów lub operacji na wektorach i macierzach (tensorach). Na zajęciach ćwiczeniowych student rozwija umiejętności analizy zagadnień problemowych i tworzenia algorytmów służących do ich rozwiązania z wykorzystaniem poznanych na wykładzie wiadomości teoretycznych. Na zajęciach laboratoryjnych student uczy się praktycznych umiejętności tworzenia pełnych programów, które są oparte na poznanych algorytmach. Szczególną uwaga zwraca się więc na: implementację programu z użyciem gotowych, udokumentowanych bibliotek, umiejętność przetestowania programu, jego użycia na konkretnych danych wejściowych, interpretację otrzymanego wyniku. Na 5-7 zajęciach laboratoryjnych student rozwiązuje samodzielnie zadania sprawdzające.
Treści kształcenia:
1. Pojęcie problemu obliczeniowego 2. Typy skalarne, podstawowe operatory i ich priorytety 3. Reprezentacja liczb całkowitych, zmiennopozycyjnych oraz znaków drukowanych. Błędy arytmetyki zmiennopozycyjnej 4. Instrukcja warunkowa i pętle. Definiowanie i dokumentowanie własnych funkcji 5. Listy (tablice) 6. Złożoność obliczeniowa i pamięciowa algorytmów, Notacje asymptotyczne: O, Θ, Ω. Przykłady rzędów wielkości funkcji, Szacowanie złożoności różnych algorytmów w problemie wyszukiwania zadanego elementu w liście 7. Referencje do obiektów, Kopiowanie płytkie a głębokie, 8. Problem sortowania i jego zastosowania. Permutacje. Stabilność algorytmów sortowania. Proste algorytmy sortowania przez porównywanie: bąbelkowe, przez wybór i przez wstawianie 9. Rekurencja: Wprowadzenie. Wieże z Hanoi; Fraktale i żółw, Sortowanie przez scalanie jako przykład zastosowania techniki dziel i rządź, Dolne ograniczenie złożoności sortowania przez porównywanie; Sortowanie szybkie, 10. Tablice dynamiczne. Analiza kosztu zamortyzowanego operacji append() i pop() 11. Sortowanie małych liczb naturalnych (np. danych jakościowych lub porządkowych): szufladkowe, przez zliczanie, kubełkowe i pozycyjne (LSD, MSD), 12. Elementy programowania obiektowego: proste klasy, pola i metody, Przeciążanie operatorów (metody specjalne). Klasa DynamicArray 13. Lista jednokierunkowa (z dowiązaniami); Binarne drzewo poszukiwań 14. Rekurencja – spamiętywanie, programowanie dynamiczne; Algorytmy z nawrotami 15. Tablice z haszowaniem. Abstrakcyjny typ danych słownik i zbiór
Metody oceny:
Dwa kolokwia; 6-7 laboratoryjnych zadań punktowanych; Do zdobycia maks. 100 p. Ocena końcowa wynika z sumy punktów; ≤50 p. - 2,0; (50,60] – 3,0; (60,70] – 3,5; (70,80] – 4,0; (80,90] – 4,5; >90 – 5,0. Szczegółowy regulamin zaliczenia podawany jest na początku semestru.
Egzamin:
nie
Literatura:
1. Harel D., Feldman Y., Rzecz o istocie informatyki. Algorytmika (Algorithmics: The Spirit of Computing), WNT, 2008. 2. Wirth N., Algorytmy + struktury danych = programy (Algorithms + Data Structures = Programs), WNT, 2004. 3. Cormen T.H., Leiserson C.E., Rivest R.L., Stein C., Wprowadzenie do algorytmów (Introduction to Algorithms), PWN, 2017. 4. Bentley J., Perełki programowania (Programming Pearls), Helion, 2012.
Witryna www przedmiotu:
.
Uwagi:
.

Efekty uczenia się

Profil ogólnoakademicki - wiedza

Charakterystyka W01
Zna podstawy programowania w języku Python (w tym konstrukcje programistyczne: operacje przypisania, pętle, wyrażenia warunkowe, funkcje) i najważniejsze typy danych (w tym skalary, listy, słowniki, zbiory, wektory i macierze) oraz pojęcie problemu i algorytmu.
Weryfikacja: kolokwia, zadania punktowane na laboratoriach
Powiązane charakterystyki kierunkowe: DS_W08, DS_W14
Powiązane charakterystyki obszarowe: I.P6S_WG
Charakterystyka W02
Zna proste metody i algorytmy wykorzystywane w przetwarzaniu danych
Weryfikacja: kolokwia, zadania punktowane na laboratoriach
Powiązane charakterystyki kierunkowe: DS_W09
Powiązane charakterystyki obszarowe: I.P6S_WG

Profil ogólnoakademicki - umiejętności

Charakterystyka U01
Potrafi implementować proste algorytmy w postaci funkcji oraz oceniać ich złożoność obliczeniową i pamięciową oraz stosować je do konstrukcji prostych programów
Weryfikacja: kolokwia, zadania punktowane na laboratoriach
Powiązane charakterystyki kierunkowe: DS_U11, DS_U13, DS_U14
Powiązane charakterystyki obszarowe: I.P6S_UW
Charakterystyka U02
Umie stosować wybrane narzędzia zaimplementowane w pakietach dla środowiska Python 3, w tym funkcje do tworzenia wykresów oraz wybrane operacje na wektorach i macierzach
Weryfikacja: kolokwia, zadania punktowane na laboratoriach
Powiązane charakterystyki kierunkowe: DS_U13, DS_U14
Powiązane charakterystyki obszarowe: I.P6S_UW

Profil ogólnoakademicki - kompetencje społeczne

Charakterystyka K01
Zna potrzebę uczenia się przez całe życie i podnoszenia kompetencji zawodowych.
Weryfikacja: kolokwia, zadania punktowane na laboratoriach
Powiązane charakterystyki kierunkowe: DS_K01
Powiązane charakterystyki obszarowe: I.P6S_KK