Uniwersytet Mikołaja Kopernika w Toruniu - Centralny punkt logowania
Strona główna

Programowanie i algorytmika

Informacje ogólne

Kod przedmiotu: 1000-M1PiA
Kod Erasmus / ISCED: (brak danych) / (0613) Tworzenie i analiza oprogramowania i aplikacji Kod ISCED - Międzynarodowa Standardowa Klasyfikacja Kształcenia (International Standard Classification of Education) została opracowana przez UNESCO.
Nazwa przedmiotu: Programowanie i algorytmika
Jednostka: Wydział Matematyki i Informatyki
Grupy: Przedmioty z polskim językiem wykładowym
Strona przedmiotu: http://plas.mat.umk.pl
Punkty ECTS i inne: 7.00 Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.
Język prowadzenia: polski
Wymagania wstępne:

Praca z komputerem w zakresie podstawowym: umiejętność pracy z prostym edytorem tekstowym, uruchamianie aplikacji, korzystanie z serwisów www.

Znajomość matematyki szkolnej na poziomie podstawowym.


Całkowity nakład pracy studenta:

godziny kontaktowe:

30 godz. wykładu

60 godz. ćwiczeń,


zadania domowe i bieżące przygotowanie się do ćwiczeń: 77 godz.

przygotowanie się do kolokwiów 20 godz.

przygotowanie się do egzaminu: 20 godz.


Egzamin: 3


Razem 210 godzin

7 pkt. ECTS


Efekty uczenia się - wiedza:

W1: ma uporządkowaną wiedzę ogólną w zakresie algorytmów, ich złożoności i zastosowań K_W02, K_W07

W2: zna podstawowe techniki i metody projektowania algorytmów oraz przykłady algorytmów je wykorzystujących, zna podstawowe struktury danych i wykonywane na nich operacje K_W03, K_W07

W3: zna przynajmniej jeden język programowania wyższego rzędu w zakresie podstawowym; zna zasady programowania strukturalnego, zna zasady programowania obiektowego, zna przynajmniej dwa narzędzia pracy z kodem źródłowym, zna ograniczenia w zakresie reprezentacji liczb komputerze. K_W07

Efekty uczenia się - umiejętności:

U1: projektuje samodzielnie algorytmy rozwiązujące typowe zadania (obliczeniowe, wyszukujące, porządkujące); potrafi podać specyfikacje algorytmów i zapisać algorytmy w postaci schematu blokowego lub pseudokodu; dobiera odpowiednie struktury danych; analizuje wpływ struktur danych na złożoność obliczeniową programów, K_U01, K_U18, K_U15

U2: pisze, uruchamia i testuje programy w wybranym środowisku programistycznym; czyta ze zrozumieniem programy zapisane w wybranym języku programowania; pracuje z obiektami, wykorzystuje biblioteki funkcji i złożone struktury danych, buduje hierarchiczną strukturę programu, K_U13

U3: projektuje algorytm rozwiązujący konkretny problem matematyczny; pisze kod kontrolując niedokładność obliczeń wynikającą z ograniczeń w reprezentacji liczb. K_U13, K_U22

U4: wyszukuje samodzielnie informacje w literaturze, także w językach obcych, K_U26


Efekty uczenia się - kompetencje społeczne:

K1: zna ograniczenia własnej wiedzy i rozumie potrzebę dalszego kształcenia z wykorzystaniem różnych źródeł informacji, krytycznie ocenia informacje dostępne w Internecie, K_K03

K2: wykonuje zadania sumiennie i dokładnie, jest nastawiony na jak najlepsze wykonanie zadania; dba o szczegół; jest systematyczny. K_K04


Metody dydaktyczne:

Wykład ma charakter informacyjno-problemowy. Ważnym elementem wykładu jest wizualizacja działania algorytmów oraz ich implementacji w języku Python z uwzględnieniem optymalnego doboru struktur danych.

Laboratoria dotyczą praktycznej realizacji algorytmów w postaci programów prowadzącej do poznania języka programowania oraz rozwiązywania teoretycznych ćwiczeń problemowych pozwalających pogłębić wiedzę przyswojoną w czasie wykładów

Metody dydaktyczne eksponujące:

- drama
- pokaz
- symulacyjna (gier symulacyjnych)

Metody dydaktyczne podające:

- opis
- pogadanka
- wykład informacyjny (konwencjonalny)
- wykład problemowy

Metody dydaktyczne poszukujące:

- giełda pomysłów
- klasyczna metoda problemowa
- laboratoryjna
- obserwacji
- projektu

Metody dydaktyczne w kształceniu online:

- gry i symulacje
- metody oparte na współpracy
- metody rozwijające refleksyjne myślenie

Skrócony opis:

Przedmiot wprowadza w świat algorytmiki i programowania, kształci przy tym myślenie algorytmiczne, doskonali logiczne wnioskowanie. Głównym celem jest przygotowanie do rozwiązywania i programowania rozwiązań zagadnień z matematyki przez zapoznanie z podstawowymi algorytmami, struktura danych i językiem programowania Python

Podczas wykładu są omawiane podstawowe pojęcia teorii algorytmów, klasyczne algorytmy i struktury danych oraz zasady programowania w języku Python. Przy omawianiu kolejnych algorytmów wprowadzane są potrzebne do ich implementacji elementy języka programowania z uwzględnieniem różnorodnych technik i metod.

Podczas zajęć laboratoryjnych kształcone są umiejętności: samodzielnego projektowania algorytmów przez rozwiązywanie typowych zadań (obliczeniowe, wyszukujące, porządkujące), implementacji algorytmów w języku programowania Python z wykorzystaniem standardowych bibliotek i złożonych struktur danych.

Pełny opis:

Tematyka kolejnych wykładów i ćwiczeń jest ściśle skorelowana. Na każdy dwugodzinny wykład przypadają cztery godziny ćwiczeń w laboratorium komputerowym, podczas których implementowane są algorytmy omówione na wykładzie oraz na ich bazie odkrywane są przez studentów algorytmy rozwiązujące problemy pokrewne. Ćwiczona jest przez to również umiejętność efektywnej implementacji rozwiązań w języku programowania Python.

Tematy wykładów i ćwiczeń:

1) Wprowadzenie do algorytmiki - definicja i własności algorytmu, baza algorytmiczna, sposoby zapisywania algorytmów: język naturalny, schematy blokowe dla prostych problemów warunkowych i iteracji, pseudokod, języki programowania [1] [11].

2) Wprowadzenie do języka programowania, syntaktyka i semantyka, struktura programu, zmienne, instrukcje (podstawienia, warunkowa i iteracji), komentarze, korzystanie z dodatkowych bibliotek programistycznych [4][5] - algorytmy dotyczące badania różnorodnych własności liczb i tekstów: podzielność[3], algorytm Euklidesa [1][2], palindromy[11].

3) Funkcje, przekazywanie parametrów - zastosowanie algorytmu Euklidesa (działania na ułamkach, przelewanie wody) [1][2], systemy liczbowe [1], generowanie liczb o zdanych własnościach [1][2][11].

4) Dokładność obliczeń - losowość danych, błąd względny, błąd bezwzględny obliczeń [11], wyznaczanie miejsc zerowych funkcji metodą połowienia [1], obliczania przybliżonej wartości pierwiastka kwadratowego [1], wielkości pola obszarów zamkniętych[11], liczby pi metodą Monte Carlo [11].

5) Listy, krotki i słowniki, właściwości oraz operacje, jakie można przeprowadzać na tego typu zmiennych [4] [5] - algorytmy wyszukiwania elementów i ciągów o różnorodnych własnościach i porządkowania metodami: bąbelkową, przez wybór, wstawianie, zliczanie [1][2][3].

6) Iteracja a rekurencja - obliczanie wartości elementów ciągu zadanego rekurencyjnie (np. liczb Fibonacciego) metodą rekurencyjną i iteracyjną[1][2]; rekurencyjny algorytm Euklidesa[1][2], obliczania wartości wielomianu za pomocą schematu Hornera[1], szybkie potęgowanie w wersji iteracyjnej i rekurencyjnej[1].

7) Operacje na plikach - podstawowe operacje odczytu i zapisu danych[4].

8) Podstawowe paradygmaty programowania: strukturalne, obiektowe, funkcyjne[4][5][10]. Maszyna Turinga[6]. Złożoność obliczeniowa[6][11].

9) Podstawowe algorytmy geometryczne - położenie punktu względem prostej[3][7], przecinanie się odcinków[3][7], wypukła otoczka[3][7].

10) Grafika: fraktale i wizualizacja metody Monte Carlo[9][11], ruchy Browna[11].

11) Algorytmy na tekstach: wyszukiwanie wzorca[3][7], szyfrowanie[3][7].

12) Algorytmy rekurencyjne: jednoczesne szukanie elementu najmniejszego i największego, sortowanie przez scalanie i szybkie, sortowanie na kopcu[1][3].

13) Podejście zachłanne: wydawanie reszty[11], planowanie zajęć[7], kompresja Huffmana [7].

14) Programowanie dynamiczne: zasada optymalności Bellmana, optymalne nawiasowanie[7], szukanie najdłuższego wspólnego podciągu[7], problem plecakowy[1].

15) Dynamiczne struktury danych: stos, kolejka, lista [4][5] - odwrotna notacja polska[11], sortowania leksykograficzne[1], problem Flawiusza[11].

Literatura:

Literatura podstawowa:

[1] M. Sysło, Algorytmy, WSiP, Warszawa

[2] M. Sysło, Piramidy, szyszki i inne konstrukcje algorytmiczne, Helion,

[3] L. Banachowski, K. Diks, W. Rytter, Algorytmy i struktury danych, WNT, Warszawa

[4] M. Dawson, Python dla każdego. Podstawy programowania, Helion

[5] M. Gągolewski, M. Bartoszuk, A. Cena, Przetwarzanie i analiza danych w języku Python

Literatura uzupełniająca:

[6] D. Harel, Rzecz o istocie informatyki: Algorytmika, WNT, Warszawa.

[7] T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Wprowadzenie do algorytmów, WNT, Warszawa.

[8] E. Matthes, Python - instrukcje dla programisty, Helion 2016

Materiały dostępne on-line:

[9] Oficjalna dokumentacja Pythona, http://docs.python.org

[10] Wykłady UW, http://wazniak.mimuw.edu.pl/

[11] Notatki i materiały wykładowcy dostępne na platformie elektronicznego wspomagania zajęć moodle.

Metody i kryteria oceniania:

Wykład:

egzamin pisemny składający się z dwóch części:

teoretycznej (wiedza) 50 punktów

praktycznej (umiejętności) 50 punktów

Weryfikacja efektów W1, W2, W3

Laboratoria:

Na ocenę końcową składają się oceny za:

1. dwa kolokwia 2*30 punktów

2. sześć zadań domowych 6*5 punktów

3. znajomość zagadnień poruszanych na wykładzie 2*5 punktów

Weryfikacja efektów U1, U2, U3, U4, K1, K2

Aby otrzymać zaliczenie za każdą ze składowych oceny trzeba zdobyć co najmniej 50% punktów. Dopuszczalne są tylko dwie

Praktyki zawodowe:

nie dotyczy

Zajęcia w cyklu "Semestr letni 2022/23" (w trakcie)

Okres: 2023-02-20 - 2023-09-30
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć:
Laboratorium, 60 godzin, 16 miejsc więcej informacji
Wykład, 30 godzin, 50 miejsc więcej informacji
Koordynatorzy: Anna Kwiatkowska
Prowadzący grup: Alicja Jaworska-Pastuszak, Anna Kwiatkowska, Andrzej Mróz
Strona przedmiotu: http://plas.mat.umk.pl
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Egzamin
Laboratorium - Zaliczenie na ocenę
Wykład - Egzamin
Skrócony opis:

Jak w podstawowej informacji o przedmiocie.

Pełny opis:

Jak w podstawowej informacji o przedmiocie.

Literatura:

Jak w podstawowej informacji o przedmiocie.

Uwagi:

Jak w podstawowej informacji o przedmiocie.

Zajęcia w cyklu "Semestr letni 2023/24" (jeszcze nie rozpoczęty)

Okres: 2024-02-20 - 2024-09-30

Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć:
Laboratorium, 60 godzin, 16 miejsc więcej informacji
Wykład, 30 godzin, 50 miejsc więcej informacji
Koordynatorzy: (brak danych)
Prowadzący grup: Alicja Jaworska-Pastuszak, Andrzej Mróz
Strona przedmiotu: http://plas.mat.umk.pl
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Egzamin
Laboratorium - Zaliczenie na ocenę
Wykład - Egzamin
Skrócony opis:

Jak w podstawowej informacji o przedmiocie.

Pełny opis:

Jak w podstawowej informacji o przedmiocie.

Literatura:

Jak w podstawowej informacji o przedmiocie.

Uwagi:

Jak w podstawowej informacji o przedmiocie.

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Mikołaja Kopernika w Toruniu.
ul. Jurija Gagarina 11, 87-100 Toruń tel: +48 56 611-40-10 https://usosweb.umk.pl/ kontakt deklaracja dostępności USOSweb 7.0.0.0-1 (2023-09-06)