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

Podstawy programowania

Informacje ogólne

Kod przedmiotu: 1000-I1PPR
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: Podstawy programowania
Jednostka: Wydział Matematyki i Informatyki
Grupy: Informatyka, studia I stopnia, 1 rok
Informatyka, studia inżynierskie 1 stopnia, 1 rok
Punkty ECTS i inne: 6.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.

zobacz reguły punktacji
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:

kanon (atrybut wycofany)

Całkowity nakład pracy studenta:

30h - wykład,

4h - egzamin,

45h - laboratoria,

20h - praca własna - bieżące przygotowanie do zajęć, studiowanie literatury

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

20h - praca własna - przygotowanie do egzaminu


Razem 174h,

6pkt. 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
- klasyczna metoda problemowa
- laboratoryjna

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),
  • samodzielny projekt programistyczny (efekty W2-W4, U1, U2, K1-K3),
  • 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.

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:

W zależności od obowiązujących reżimów sanitarnych egzamin przyjmie jedną z dwóch poniższych form:

  1. Egzamin dwuczęściowy:
    • Część I (teoretyczna/pisemna) - sprawdzający opanowanie zagadnień teoretycznych omawianych na wykładzie (efekty W1, W4, U1-U5, K1, K2).
    • Część II (praktyczna/przy komputerze) - proste zadanie programistyczne sprawdzające umiejętność implementacji i omówienia podstawowych konstrukcji programistycznych (efekty W2, W3, U1-U5, K1-K3).

    • Warunkiem koniecznym zdania egzaminu jest pozytywne (minimum 50%) zaliczenie części teoretycznej, która stanowi główny czynnik kształtujący ocenę końcową oraz pozytywne zaliczenie części praktycznej (mogącej w nieznacznym stopniu zmodyfikować wynik uzyskany w części pisemnej: ±0,5 oceny).
    lub
  2. Egzamin pisemny jednoczęściowy:
    • 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 "Semestr zimowy 2021/22" (zakończony)

Okres: 2021-10-01 - 2022-02-20
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 45 godzin, 16 miejsc więcej informacji
Wykład, 30 godzin, 200 miejsc więcej informacji
Koordynatorzy: Łukasz Mikulski, Andrzej Mróz
Prowadzący grup: Anna Gogolińska, Mariusz Kaniecki, Witold Kraśkiewicz, Łukasz Mikulski, Andrzej Mróz, Andrzej Polewczyński, Bartosz Ziemkiewicz
Lista studentów: (nie masz dostępu)
Zaliczenie: Przedmiot - Egzamin
Laboratorium - Zaliczenie na ocenę
Wykład - Egzamin
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 mapa serwisu USOSweb 7.1.1.0-2 (2024-11-25)