Podstawy algorytmiki i programowania 1000-I1PAiP
- 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.
- 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.
- Przegląd podstawowych typów prostych (typy całkowite, rzeczywiste, logiczny, znakowy). Zmienne i stałe. Reprezentacja liczb całkowitych i rzeczywistych w komputerze.
- Złożone typy danych: tablice, łańcuchy (napisy), struktury, typy wyliczeniowe. Przykłady użycia poszczególnych typów.
- Funkcje - definicja i deklaracja. Przekazywanie parametrów przez wartość i przez nazwę (referencję). Zmienne lokalne i globalne. Biblioteki.
- Rekurencja w programowaniu. Funkcje rekurencyjne. Wady i zalety stosowania rekurencji. Przykłady algorytmów rekurencyjnych.
- 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.
- Wyjaśnienie poprawności własnej implementacji (bez narzędzi formalnych).
- 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).
- Praca z plikami i napisami. Strumienie.
- Wskaźniki i podstawowe dynamiczne struktury danych.
Całkowity nakład pracy studenta
Efekty uczenia się - wiedza
Efekty uczenia się - umiejętności
Efekty uczenia się - kompetencje społeczne
Metody dydaktyczne
Metody dydaktyczne eksponujące
Metody dydaktyczne podające
- wykład konwersatoryjny
- wykład problemowy
Metody dydaktyczne poszukujące
- laboratoryjna
- klasyczna metoda problemowa
Rodzaj przedmiotu
Wymagania wstępne
Koordynatorzy przedmiotu
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 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.
Egzamin z wykładu:
Dopuszcza się jedną z dwóch poniższych form (preferowana będzie pierwsza z nich):
- 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 - Egzamin pisemny jednoczęściowy:
- sprawdzający opanowanie zagadnień teoretycznych i praktycznych omawianych na wykładzie (efekty W1-W4, U1-U5, K1-K3).
Praktyki zawodowe
---
Literatura
Literatura podstawowa:
- N. Wirth, Algorytmy + struktury danych = programy, WNT, Warszawa,
- M. Sysło, Algorytmy, WSiP, Warszawa,
- J. Grębosz, Symfonia C++ Standard, t.1, Edition 2000,
- J. Grębosz, Opus magnum C++11. Programowanie w języku C++, Gliwice, Helion 2018,
- Portal "Studia Informatyczne" - http://wazniak.mimuw.edu.pl/.
Literatura uzupełniająca:
- D. Harel, Rzecz o istocie informatyki: Algorytmika, WNT, Warszawa.
- L. Banachowski, K. Diks, W. Rytter, Algorytmy i struktury danych, WNT, Warszawa.
- T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Wprowadzenie do algorytmów, WNT, Warszawa.
Uwagi
W cyklu 2022/23Z:
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. Zgodnie z obowiązującym na ten moment reżimem sanitarnym, egzamin odbędzie się w formie dwuczęściowej. |
W cyklu 2023/24Z:
Zgodnie z obowiązującym na ten moment reżimem sanitarnym, egzamin odbędzie się w formie dwuczęściowej. |
W cyklu 2024/25Z:
Zgodnie z obowiązującym na ten moment reżimem sanitarnym, egzamin odbędzie się w formie dwuczęściowej. |
W cyklu 2025/26Z:
Zgodnie z obowiązującym na ten moment reżimem sanitarnym, egzamin odbędzie się w formie dwuczęściowej. |
Więcej informacji
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i terminach zajęć) mogą być dostępne w serwisie USOSweb: