Uniwersytet Mikołaja Kopernika w Toruniu - Centralny punkt logowaniaNie jesteś zalogowany | zaloguj się
katalog przedmiotów - pomoc

Podstawy programowania

Informacje ogólne

Kod przedmiotu: 1000-ZiPPR Kod Erasmus / ISCED: (brak danych) / (0613) Tworzenie i analiza oprogramowania i aplikacji
Nazwa przedmiotu: Podstawy programowania
Jednostka: Wydział Matematyki i Informatyki
Grupy: Informatyka, studia inżynierskie 1 stopnia, 1 rok, nst.
Punkty ECTS i inne: 12.00
Język prowadzenia: polski
Wymagania wstępne:

Znajomość matematyki szkolnej na poziomie podstawowym. Podstawowa obsługa komputera (uruchomienie aplikacji, korzystanie z serwisów www, obsługa prostego edytora tekstowego).

Rodzaj przedmiotu:

przedmiot obowiązkowy

Całkowity nakład pracy studenta:

30h - wykład,

5h - egzamin,

30h - laboratoria,

15h – konsultacje stacjonarne lub on-line

50h - praca własna - bieżące przygotowanie do zajęć i kolokwiów

30h - studiowanie literatury i materiałów on-line

70h - praca własna - implementacja programów w języku C++

40h - praca własna – przygotowanie projektu w języku C++

30h - praca własna - przygotowanie do egzaminu


Razem 300h,

12pkt. ECTS

Efekty uczenia się - wiedza:

Po zakończeniu przedmiotu student:

(W1) opisuje podstawowe pojęcia teorii algorytmów, ich złożoności i poprawności (por. K_W02),

(W2) zna podstawowe konstrukcje programistyczne (por. K_W03),

(W3) zna podstawową składnię języka C++, rozróżnia proste typy danych i typy złożone (por. K_W03, K_W10),

(W4) zna podstawowe metody i techniki projektowania, analizowania i programowania algorytmów (por. K_W04).

Efekty uczenia się - umiejętności:

Po zakończeniu przedmiotu student:

(U1) projektuje algorytmy na rozwiązanie typowych zadań i implementuje je w języku C++ w wybranym środowisku programistycznym np. Code::Blocks (por. K_U05, K_U07, K_U03),

(U2) poprawnie wykorzystuje proste i złożone typy danych stosownie do sytuacji, pamiętając o ich ograniczeniach, np. związanych z arytmetyką komputera (por. K_U08),

(U3) ocenia rząd złożoności czasowej algorytmu (por. K_U07, K_U01, K_U06),

(U4) uzasadnia poprawność algorytmu oraz własnej implementacji (por. K_U07, K_U01),

(U5) umie czytać ze zrozumieniem schematy blokowe oraz programy zapisane w języku C++ (por. K_U06).

Efekty uczenia się - kompetencje społeczne:

Po zakończeniu przedmiotu student:

(K1) służy swoją wiedzą i umiejętnościami, skutecznie przekazuje innym swoje myśli w zrozumiały sposób; właściwie posługuje się terminologią fachową w obrębie zagadnień związanych z podstawami programowania (por. K_K02),

(K2) jest nastawiony na jak najlepsze wykonanie zadania; dba o szczegół; jest systematyczny (por. K_K04),

(K3) krytycznie ocenia swoją wiedzę i doskonali ją z wykorzystaniem różnych źródeł informacji (por. K_K03).


Metody dydaktyczne:

Zagadnienia dyskutowane na tym przedmiocie podawane są studentom w formie wykładów informacyjnych i problemowych przeplatanych pokazami działania algorytmów na konkretnych, reprezentatywnych danych wejściowych. Wykłady uzupełnione są zajęciami laboratoryjnymi poświęconymi zarówno implementacji poznawanych algorytmów i struktur danych jak i rozwiązywaniu teoretycznych ćwiczeń problemowych pozwalających pogłębić wiedzę przyswojoną w czasie wykładów.

Metody dydaktyczne eksponujące:

- pokaz

Metody dydaktyczne podające:

- wykład informacyjny (konwencjonalny)
- wykład konwersatoryjny
- wykład problemowy

Metody dydaktyczne poszukujące:

- ćwiczeniowa
- projektu
- referatu

Metody dydaktyczne w kształceniu online:

- metody oparte na współpracy
- metody służące prezentacji treści

Skrócony opis:

Celem wykładu jest wprowadzenie słuchaczy w podstawowe zagadnienia teoretyczne i praktyczne programowania. W szczególności, zapoznanie ich z terminologią i wybranymi zagadnieniami teorii algorytmów oraz elementami języków programowania C/C++.

Głównym celem ćwiczeń laboratoryjnych jest przećwiczenie w praktyce wiedzy z wykładu, w tym zdobycie praktycznych umiejętności implementacji w języku C++ prostych algorytmów.

Pełny opis:

  1. Algorytmy - wstęp. Pojęcie algorytmu. Specyfikacja algorytmu (programu). Języki zapisu algorytmów: schematy blokowe, pseudokod, języki programowania. Przykłady algorytmów rozwiązujących proste zadania.
  2. Język programowania. Podstawowe struktury sterujące (instrukcje: warunkowe, pętla repetycyjna i iteracyjna). Syntaktyka i semantyka instrukcji. Zapisywanie algorytmów za pomocą instrukcji. Struktura programu. Kompilacja programów. Obsługa wejścia i wyjścia. Środowiska programistyczne.
  3. Przegląd podstawowych typów prostych (typy całkowite, rzeczywiste, logiczny, znakowy). Zmienne i stałe. Reprezentacja liczb całkowitych i rzeczywistych w komputerze.
  4. Złożone typy danych: tablice, łańcuchy (napisy), struktury, typy wyliczeniowe. Przykłady użycia poszczególnych typów.
  5. Funkcje - definicja i deklaracja. Przekazywanie parametrów przez wartość i przez nazwę (referencję). Zmienne lokalne i globalne. Biblioteki.
  6. Rekurencja w programowaniu. Funkcje rekurencyjne. Wady i zalety stosowania rekurencji. Przykłady algorytmów rekurencyjnych.
  7. Złożoność obliczeniowa algorytmów. Funkcja kosztu - funkcja pesymistycznej czasowej złożoności algorytmu, jej rząd wielkości. Notacja asymptotyczna. Wyznaczanie pesymistycznej złożoności czasowej algorytmu.
  8. Typowe metody algorytmiczne. Przegląd metod projektowania algorytmów: metoda zachłanna, metoda „dziel i zwyciężaj”, programowanie dynamiczne. Przegląd algorytmicznych rozwiązań wybranych problemów obliczeniowych (w tym, algorytmy wyszukujące oraz algorytmy sortowania).
  9. Poprawność algorytmów (programów). Dowodzenia częściowej poprawności algorytmów. Problem stopu, sposoby sprawdzania (dowodzenia) własności stopu.
  10. Praca z plikami i napisami. Strumienie.
  11. Wskaźniki i podstawowe dynamiczne struktury danych.
Literatura:

Literatura podstawowa:

  1. N. Wirth, Algorytmy + struktury danych = programy, WNT, Warszawa,
  2. M. Sysło, Algorytmy, WSiP, Warszawa,
  3. J. Grębosz, Symfonia C++ Standard, t.1, Edition 2000,
  4. J. Grębosz, Opus magnum C++11. Programowanie w języku C++, Gliwice, Helion 2018,
  5. Portal "Studia Informatyczne" - http://wazniak.mimuw.edu.pl/.

Literatura uzupełniająca:

  1. D. Harel, Rzecz o istocie informatyki: Algorytmika, WNT, Warszawa.
  2. L. Banachowski, K. Diks, W. Rytter, Algorytmy i struktury danych, WNT, Warszawa.
  3. T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Wprowadzenie do algorytmów, WNT, Warszawa.
Metody i kryteria oceniania:

Zaliczenie ćwiczeń laboratoryjnych na ocenę oraz egzamin z wykładu.

Elementami składowymi zaliczenia ćwiczeń są:

  • sprawdzian praktyczny „przy komputerze" weryfikujący umiejętność samodzielnego rozwiązywania problemów algorytmicznych i programowania w C/C++ (efekty W2-W4, U1, U2, K1, K2),
  • sprawdzian teoretyczny weryfikujący przyswojenie wiedzy i umiejętności z zakresu złożoności i poprawności algorytmów (efekty W1, W4, U3-U5, K1, K2),
  • aktywność na zajęciach i samodzielne przygotowanie rozwiązań prostych zadań programistycznych i teoretycznych (efekt W1-W4, U1-U5, K1-K3).

Warunkiem koniecznym jest uzyskanie pozytywnej oceny dla każdego z powyższych elementów. Zalecane jest równe traktowanie każdego z nich. Bardziej szczegółowe zasady zaliczenia ćwiczeń mogą znajdować się w informacjach dla zajęć w konkretnym cyklu i będą podane przez prowadzących laboratoria.

Uwaga: W zależności od rozwoju epidemii koronawirusa oraz obowiązujących reżimów sanitarnych, dopuszcza się realizację części (lub wszystkich) powyższych składowych zaliczenia w formie zdalnej.

Egzamin z wykładu:

  • pisemny egzamin sprawdzający opanowanie zagadnień teoretycznych i praktycznych omawianych na wykładzie (efekty W1-W4, U1-U5, K1-K3).

Uwaga: W zależności od rozwoju epidemii koronawirusa oraz obowiązujących reżimów sanitarnych, dopuszcza się realizację części (lub całości) egzaminu w formie zdalnej.

Praktyki zawodowe:

--

Zajęcia w cyklu "Rok akademicki 2017/18" (zakończony)

Okres: 2017-10-01 - 2018-09-30
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Laboratorium, 30 godzin, 16 miejsc więcej informacji
Wykład, 30 godzin, 150 miejsc więcej informacji
Koordynatorzy: Łukasz Mikulski
Prowadzący grup: Michał Dudkiewicz, Anna Gogolińska, Łukasz Mikulski, Jerzy Szymański, Bartosz Ziemkiewicz
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Egzamin
Laboratorium - Zaliczenie na ocenę
Wykład - Egzamin

Zajęcia w cyklu "Rok akademicki 2018/19" (zakończony)

Okres: 2018-10-01 - 2019-09-30
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Laboratorium, 34 godzin, 16 miejsc więcej informacji
Wykład, 30 godzin, 100 miejsc więcej informacji
Koordynatorzy: Łukasz Mikulski, Andrzej Mróz
Prowadzący grup: Bartosz Bieganowski, Mariusz Kaniecki, Łukasz Mikulski, Jakub Siemianowski, Jerzy Szymański
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Egzamin
Laboratorium - Zaliczenie na ocenę
Wykład - Egzamin

Zajęcia w cyklu "Rok akademicki 2019/20" (zakończony)

Okres: 2019-10-01 - 2020-09-30
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Laboratorium, 34 godzin, 20 miejsc więcej informacji
Wykład, 30 godzin, 100 miejsc więcej informacji
Koordynatorzy: Andrzej Mróz
Prowadzący grup: Mariusz Kaniecki, Damian Kurpiewski, Andrzej Mróz, Mateusz Topolewski, Bartosz Ziemkiewicz
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Egzamin
Laboratorium - Zaliczenie na ocenę
Wykład - Egzamin

Zajęcia w cyklu "Rok akademicki 2020/21" (w trakcie)

Okres: 2020-10-01 - 2021-09-20
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Laboratorium, 34 godzin, 20 miejsc więcej informacji
Wykład, 30 godzin, 100 miejsc więcej informacji
Koordynatorzy: Andrzej Mróz
Prowadzący grup: Andrzej Mróz, Mikołaj Szczupak, Jerzy Szymański, Bartosz Ziemkiewicz
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Egzamin
Laboratorium - Zaliczenie na ocenę
Wykład - Egzamin
Uwagi:

Wykład w cyklu 2020/21 odbywa się w całości zdalnie z wykorzystaniem platform Moodle oraz BigBlueButton. Szczegółowe informacje w kursie Moodle przedmiotu: https://plas.mat.umk.pl/moodle/course/view.php?id=1759 klucz: PP2020_NSI

Laboratoria w cyklu 2020/21 planowane są w trybie hybrydowym (mieszanym): częściowo stacjonarnie, częściowo zdalnie. Podział grup oraz harmonogramy spotkań będą przedstawione przez kierownika NSI oraz prowadzących poszczególne grupy laboratoryjne. Materiały do części zdalnej laboratoriów będą umieszczane w kursach Moodle dla poszczególnych grup laboratoryjnych. Kursy te znajdują się w kategorii: https://plas.mat.umk.pl/moodle/course/index.php?categoryid=152

Uwaga: w związku z decyzją Rządu RP od 16 października 2020 nastąpiła zmiana prowadzenia laboratoriów na w pełni zdalne. Kursy Moodle j.w.

Egzamin i zaliczenia odbędą się w formie tradycyjnej lub zdalnej w zależności od sytuacji epidemicznej.

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Mikołaja Kopernika w Toruniu.