SylabUZ

Generate PDF for this page

Computer Programming 2 - course description

General information
Course name Computer Programming 2
Course ID 11.3-WK-IiEP-PK2-W-S14_pNadGen3JVWA
Faculty Faculty of Mathematics, Computer Science and Econometrics
Field of study Informatics and Econometrics
Education profile academic
Level of studies First-cycle studies leading to Bachelor's degree
Beginning semester winter term 2022/2023
Course information
Semester 2
ECTS credits to win 5
Course type obligatory
Teaching language polish
Author of syllabus
  • dr inż. Paweł Wolański
Classes forms
The class form Hours per semester (full-time) Hours per week (full-time) Hours per semester (part-time) Hours per week (part-time) Form of assignment
Lecture 30 2 - - Exam
Laboratory 30 2 - - Credit with grade

Aim of the course

Opanowanie umiejętności pisania programów w języku Python z wykorzystaniem złożonych struktur danych. Umiejętność implementacji w programach algorytmów sortowania, selekcji i wyszukiwania. Znajomość w zakresie podstawowym problemu NP-zupełności (klasy P, NP, NP-zupełne). Zapoznanie studenta z podstawowymi pojęciami programowania zorientowanego obiektowego.

Prerequisites

Programowanie komputerów 1.

Scope

Wykład

  1. Programowanie w języku Python
    Definiowanie własnych klas. Obiekty i referencje do obiektów. Konstruktory. Hermetyzacja. Tablice obiektów. Odczyt i zapis do plików tekstowych.

  2. Metody konstruowania efektywnych algorytmów.
    Rekurencja, metoda „dziel i zwyciężaj”, algorytmy zachłanne.

  3. Podstawowe algorytmy wyszukiwania.
    Wyszukiwanie liniowe, binarne, interpolacyjne.

  4. Podstawowe algorytmy sortowania i selekcji.

  5. Klasy złożoności obliczeniowej problemów.
    Problemy decyzyjne i optymalizacyjne. Klasy złożoności obliczeniowej problemów decyzyjnych: P, NP, NP-zupełne.

Laboratorium

  1. Definiowanie własnych klas.

  2. Tworzenie i operowanie na tablicach obiektów.

  3. Odczyt i zapis do plików tekstowych.

  4. Dynamiczne struktury danych (stosy, kolejki, listy).

  5. Pisanie programu będącego prostą bazą danych.

Teaching methods

Wykład: wykład problemowy.

Laboratorium: ćwiczenia laboratoryjne w pracowni komputerowej – pisanie i uruchamianie samodzielnie napisanych programów, na zadane przez prowadzącego tematy,  analiza tych programów i analiza stosowanych algorytmów. Nad niektórymi programami studenci będą pracowali w grupach 2-3 osobowych. Na ostatnich trzech laboratoriach każdy student pracuje nad samodzielnie zaprojektowaną aplikacją będącą prostą bazą danych, zawierającą wszystkie zdobyte na zajęciach umiejętności. Do aplikacji musi być dołączona  dokumentacja zgodna z zadaną specyfikacją.

Learning outcomes and methods of theirs verification

Outcome description Outcome symbols Methods of verification The class form

Assignment conditions

Wykład. Egzamin weryfikujący efekty kształcenia w zakresie wiedzy i umiejętności. Egzamin składa się z dwóch części, pisemnej i ustnej. Warunkiem przystąpienia do części ustnej jest uzyskanie 30% punktów z części pisemnej. Uzyskanie 50% punktów z części pisemnej gwarantuje uzyskanie pozytywnej oceny.

Laboratorium. Ocena końcowa  jest wystawiana na podstawie punktów uzyskanych na zajęciach. Punkty uzyskuje się za napisane na zajęciach sprawdziany, przedstawioną na ostatnich zajęciach aplikację, aktywność na zajęciach.

Na ocenę z przedmiotu składa się ocena z laboratorium (50%) oraz ocena z egzaminu (50%). Warunkiem przystąpienia do egzaminu jest pozytywna ocena z laboratorium. Warunkiem zaliczenia przedmiotu jest pozytywna ocena z egzaminu

Recommended reading

  1. Luciano Albert Sweigart, Programowanie w Pythonie dla średnio zaawansowanych. Najlepsze praktyki tworzenia czystego kodu. Wydawnictwo Helion,
    2021.

  2. Ramalho, Python 3: Zaawansowany Python. Jasne, zwięzłe i efektywne programowanie, Wydawnictwo Helion, 2020

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

Further reading

  1. http://pl.python.org

  2. https://docs.python.org/3/

Notes


Modified by dr Alina Szelecka (last modification: 04-07-2022 08:02)