Strona wykładu Programowanie 1 (Python) w semestrze zimowym 2023/2024

Informacje o wykładzie i zasady zaliczania
Listy zadań
Reguły egzaminu
Zakres materiału

Termin egzaminu: 09.02.2024 w godzinach 10:00-13:00 oraz 13:30-16:30.
Przydział godziny, sali i stanowiska jest widoczny w USOSie.
Wyniki w USOSie. Progi na oceny:
Termin A: 3.0 - 10, 3.5 - 18, 4 - 21, 4.5 - 24, 5.0 - 27
Termin B: 3.0 - 10, 3.5 - 15, 4 - 18, 4.5 - 21, 5.0 - 24
Oglądanie prac i reklamacje: w poniedziałek 12.02.2024 w pokoju 701.
Data drugiego terminu: piątek 16.02, 10:00, sala 416.
Wyniki w USOSie. Progi na oceny: 3.0 - 10.5, 3.5 - 13.5, 4 - 16.5, 4.5 - 19.5, 5.0 - 22.5
Oglądanie prac i reklamacje: w poniedziałek 19.02.2024 o 12:00 w pokoju 701.

Środowisko

Przydatne linki

Literatura do wykładu

  1. Amit Saha — Doing Math with Python: Use Programming to Explore Algebra, Statistics, Calculus, and More!, link.
  2. Al Sweigart — Automate the Boring Stuff with Python: Practical Programming for Total Beginners, link.
  3. Eric Matthes — Python Crash Course: A Hands-On, Project-Based Introduction to Programming, link.
  4. Luciano Ramalho — Fluent Python: Clear, Concise, and Effective Programming, link.

Omówiony materiał

  1. Języki programowania: składnia i semantyka. Wyrażenia arytmetyczne i ogólne. Nazwy i przypisania. Elementarne typy oraz konwersje obiektów. input i print. Podstawowe elementy kontroli przepływu sterowania: instrukcja warunkowa if i (uproszczona) pętla for. Slajdy. Przykłady: elementarne wyrażenia, konwersje i wejście/wyjście, pierwiastki funkcji kwadratowej, test pierwszości liczby. Bonus: o przedziałach [a, b) i naturalnym zerze.
  2. Elementarne różnice między int i float, pętla while. Przykłady użycia pętli, kontrola działania pętli przez break i continue. Iteracja, pojęcie obiektów iterowalnych i przykłady operacji na nich. Krotki. Formatowanie tekstu: napisy interpolowane i z użyciem % (informacyjnie). Slajdy. Przykłady: pętle, iterowalność, przykłady formatowania + wersja HTML.
  3. Funkcje i zasięg zmiennej, wstęp do rekurencji, funkcje jako obiekty. Slajdy. Przykłady: proste funkcje, wczytywanie liczby z przedziału, wyznaczanie wartości ciągu, test pierwszości liczby; przykłady na wizualizację zasięgu zmiennych: 1, 2, 3, 4, 5. Funkcje jako obiekty.
  4. Rekurencja, symbol Newtona i największy wspólny dzielnik. Organizacja kodu: pisanie własnych modułów. Podstawy list. Slajdy (rekurencja). Przykłady: symbol Newtona, największy wspólny dzielnik, prosty moduł, proste operacje listowe, pomiary czasu działania kodu.
  5. Liczby zespolone. Pojęcie atrybutu i metody. Listy: podstawowe operacje, schematy konstrukcji list (listy składane), [extended] slicing. Tablice (np. macierze) jako listy list. Slajdy (metody). Przykłady: różne operacje listowe, slicing, trójkąt Pascala. Bonus: transpozycja macierzy 2x2
  6. Argumenty nazwane. Biblioteka matplotlib (patrz: [A, rozdział 2]): rysowanie wykresów funkcji i krzywych parametrycznych. Przykłady: argumenty nazwane, wykresy temperatury I, wykresy temperatury II, rysowanie wykresów funkcji, wykres siły przyciągania, rysowanie krzywych parametrycznych, wykresy rzutów piłką, skale i zakresy osi.
  7. Metody typu str (patrz: [B, rozdział 6]), manipulacja napisami. Symbole ucieczki, unicode. Podstawy obsługi plików tekstowych, format csv. Wykresy punktowe. Przykłady: operacje na napisach, obsługa plików.
  8. Zbiory i słowniki (patrz: [C, rozdział 6]) i podstawy wyjątków. Slajdy. Przykłady: słowniki/zbiory (HTML), zliczanie słów, wyjątki.
  9. Pisanie własnych klas, metody specjalne i przeciążanie operatorów. Slajdy. Przykłady: kolory, wektory, konto bankowe. Bank (wstępna postać, zostanie rozwinięta). Bonus: kolejność przeszukiwania metod specjalnych.
  10. Atrybuty klasy a atrybuty instancji. Więcej przeciążania operatorów na przykładzie permutacji. Testy jednostkowe z użyciem unittest. Przykłady: atrybuty, Bank + BankAccount (do zadania na liście), testy jednostkowe.
  11. Obliczenia symboliczne w SymPy: symbole, konstrukcje wyrażeń, rozwiązywanie układów równań. Liczenie granic, pochodnych i całek. Przykłady: wyrażenia, podstawianie i solve, funkcje i stałe w SymPy, granice, pochodne, całki; całki/pochodne w Jupyter notebook.
  12. Obiekty w SymPy, dziedziny symboli. Zbieżność szeregów jako przykład zaawansowanych zastosowań SymPy. Wstęp do modułu random. Metody Monte Carlo i symulacje procesów losowych. Przykłady: obiekty SymPy, dziedziny symboli, zbieżność i (jako bonus) rekurencje, moduł random, symulacje i metody Monte Carlo.
  13. Obiekty w matplotlib i proste animacje. Prawdopodobieństwo ważone i układy funkcji iterowanych. Przykłady: osie i wykresy, animacje, układy funkcji iterowanych.
  14. Biblioteka numpy. Tablice: konstrukcja, slicing, dane statystyczne. Operacje macierzowe, operacje na plikach i zastosowania dla matplotlib. Materiały z wykładu (prezentacja w JupyterLab, wersja .html, .py oraz materiały). Bonus: "atrapa sktyptu".
  15. Kopie płytkie i głębokie. isinstance i klasy liczbowe. Wyrażenia lambda i obiekty iterowalne. Krótki przegląd modułu itertools. Slajdy (kopie) + przykład. Przykłady: isinstance, wyrażenia lambda; iteracje i itertools: 1, 2; redukcje list. Wyliczanie wyrażeń.