Algorytmy i Struktury Danych
Ćwiczenia z algorytmiki w Pythonie. Od zmiennych i typów, przez listy, słowniki, klasy i listę z dowiązaniami, po rekurencję, sortowanie, drzewa, grafy i wyszukiwanie wzorca w tekście. Pracujesz w notatniku Jupyter.
UEP · studia stacjonarne I stopnia · ćwiczenia · 2026/27
Program — 11
- 01
Organizacja i pierwsze kroki w Pythonie
Zasady zaliczenia i program. Potem pierwszy notatnik Jupyter: zmienne jako etykiety, typy, operatory, warunek, funkcje, print kontra return i styl PEP 8.
- 02
Listy
Indeksy i wycinki, zmiany i ich trzy pułapki, kopie i referencje. Lista pod maską: pomiar pamięci i czasu, złożoność, stos i kolejka. Ćwiczenie na kartkach, bez komputera.
- 03
Słowniki, krotki i zbiory
Słownik i funkcja skrótu, czyli szafa z szufladami. Krotka i jej pułapka, zbiory na diagramach Venna, wyrażenia składane i JSON. Która struktura do którego zadania.
- 04
Struktury zaawansowane
Notacja O i szukanie binarne z pomiarem. Kolejka dwustronna, Counter na inwokacji „Pana Tadeusza”, kopiec i kolejka priorytetowa z remisami, przeszukiwanie wszerz.
- 05
Programowanie obiektowe
Wszystko jest obiektem. Klasa i obiekt, self i __init__, reprezentacja tekstowa, atrybut klasy i pułapka wspólnej listy, dziedziczenie, metody specjalne i dataclass.
- 06
Lista z dowiązaniami
Budujesz własną listę z węzłów: wstawianie i usuwanie krok po kroku, złożoność w porównaniu z listą Pythona, pomiar czasu i pamięci. Co siedzi w deque i OrderedDict, lista dwukierunkowa.
- 07
Funkcje, moduły i dobre praktyki
Parametry nazwane i domyślne, pułapka listy jako wartości domyślnej, *args i **kwargs. Gdzie Python szuka nazwy (LEGB), funkcja jako argument key, własny moduł i blok __main__. Zen Pythona i kod, który przeczyta ktoś inny.
- 08
Zapis algorytmu, wyszukiwanie i rekurencja
Jeden algorytm w czterech zapisach: słowa, pseudokod, schemat blokowy i Python. Wyszukiwanie liniowe i binarne na milionie liczb, rekurencja i stos wywołań, Fibonacci przyspieszony zapamiętywaniem wyników.
- 09
Sortowanie
Bąbelkowe, przez wybieranie i przez wstawianie krok po kroku, potem scalanie i quicksort. Porównujesz algorytmy liczbą porównań, bez stopera, i sprawdzasz, dlaczego n log n to granica. Sortowanie przez zliczanie ją omija.
- 10
Drzewa i grafy
Na start mosty Królewca. Drzewo binarne poszukiwań, jego zdegenerowana wersja i cztery sposoby przejścia drzewa. Graf jako słownik i macierz, BFS kontra DFS, najkrótsza droga algorytmem Dijkstry z kopcem.
- 11
Wyszukiwanie wzorca w tekście
Ile razy w „Panu Tadeuszu” pada słowo „Tadeusz”? Szukanie naiwne i jego najgorszy przypadek, algorytm Horspoola z tabelą przesunięć, str.find. Wyrażenia regularne i wzorzec, który potrafi zawiesić program.