Nicolaus Copernicus University in Torun - Central Authentication Service
Strona główna

Fundamentals of programming

General data

Course ID: 1000-I1PPR
Erasmus code / ISCED: (unknown) / (0613) Software and applications development and analysis The ISCED (International Standard Classification of Education) code has been designed by UNESCO.
Course title: Fundamentals of programming
Name in Polish: Podstawy programowania
Organizational unit: Faculty of Mathematics and Computer Science
Course groups:
ECTS credit allocation (and other scores): (not available) Basic information on ECTS credits allocation principles:
  • the annual hourly workload of the student’s work required to achieve the expected learning outcomes for a given stage is 1500-1800h, corresponding to 60 ECTS;
  • the student’s weekly hourly workload is 45 h;
  • 1 ECTS point corresponds to 25-30 hours of student work needed to achieve the assumed learning outcomes;
  • weekly student workload necessary to achieve the assumed learning outcomes allows to obtain 1.5 ECTS;
  • work required to pass the course, which has been assigned 3 ECTS, constitutes 10% of the semester student load.

view allocation of credits
Language: Polish
Prerequisites:

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

Type of course:

core frame (attribute withdrawn)

Total student workload:

(in Polish) 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

Learning outcomes - knowledge:

(in Polish) 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).


Learning outcomes - skills:

(in Polish) 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).


Learning outcomes - social competencies:

(in Polish) 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).


Teaching methods:

(in Polish) 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.

Observation/demonstration teaching methods:

- display

Expository teaching methods:

- informative (conventional) lecture
- participatory lecture
- problem-based lecture

Exploratory teaching methods:

- classic problem-solving
- laboratory
- practical

Short description: (in Polish)

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.

Full description: (in Polish)

  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.
Bibliography: (in Polish)

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.
Assessment methods and assessment criteria: (in Polish)

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.

Internships: (in Polish)

---

This course is not currently offered.
Course descriptions are protected by copyright.
Copyright by Nicolaus Copernicus University in Torun.
ul. Jurija Gagarina 11, 87-100 Toruń tel: +48 56 611-40-10 https://usosweb.umk.pl/ contact accessibility statement site map USOSweb 7.1.1.0-7 (2025-03-24)