Programowanie obiektowe
  1. Wykład 1
    Cel przedmiotu.
    Rozwój konstrukcji programistycznych jako naturalna potrzeba lepszego wyrażania intencji programisty (do struktur).
    • Materiały
    • Zadania
    • Co po tych zajęciach powinno się znać / wiedzieć / umieć
  2. Wykład 2
    Główne koncepcje programowania obiektowego (na przykładzie języka Java):
    klasy i obiekty
  3. Wykład 3
    Główne koncepcje programowania obiektowego (na przykładzie języka Java):
    inicjalizacja obiektów, sygnatura metody, dziedziczenie (w tym IS-A, HAS-A), this
  4. Wykład 4
    Główne koncepcje programowania obiektowego (na przykładzie języka Java):
    • Materiały
    • Zadania
    • Co po tych zajęciach powinno się znać / wiedzieć / umieć
      • Użycie static.
      • Czym jest abstrakcja.
      • Różnica pomiędzy klasą abstrakcyjną a interfejsem.
      • Interfejs jako metoda wprowadzania zależności poziomej między klasami.
      • Czym jest enkapsulacja.
      • Czym jest polimorfizm.
      • Słowo kluczowe super i final.
  5. Wykład 5
    Główne koncepcje programowania obiektowego (na przykładzie języka Java):
  6. Wykład 6
    Algorytmy: bubble sort, selection sort, insertion sort
    • Materiały
    • Zadania
    • Co po tych zajęciach powinno się znać / wiedzieć / umieć
      • Opisać poszczególne kroki rozważanych algorytmów: bubble sort, selection sort, insertion sort.
      • Zilustrować poszczególne kroki rozważanych algorytmów (bubble sort, selection sort, insertion sort) na konkretnym przykładzie.
  7. Wykład 7
    Algorytmy: merge sort, quick sort (wersja uproszczona)
    • Materiały
    • Zadania
    • Co po tych zajęciach powinno się znać / wiedzieć / umieć
      • Opisać poszczególne kroki rozważanych algorytmów: merge sort, quick sort (wersja uproszczona).
      • Zilustrować poszczególne kroki rozważanych algorytmów na konkretnym przykładzie.
  8. Wykład 8
    Algorytmy: quick sort, radix sort, natural merge
    • Materiały
    • Zadania
    • Co po tych zajęciach powinno się znać / wiedzieć / umieć
      • Opisać poszczególne kroki rozważanych algorytmów: quick sort, radix sort, natural merge.
      • Zilustrować poszczególne kroki rozważanych algorytmów na konkretnym przykładzie.
  9. Wykład 9
    Złożoność obliczeniowa
  10. Wykład 10
    Złożoność obliczeniowa - ciąg dalszy
    Rekurencja (w tym m.in. rola stosu, drzewo wywołań rekurencyjnych)
  11. Wykład 11
    Rekurencja - ciąg dalszy
    • Materiały
    • Zadania
    • Co po tych zajęciach powinno się znać / wiedzieć / umieć
      • Wyjaśnić, czym jest tzw. rekurencja ogonowa.
      • Umieć zastosować rekurencję ogonową dla prostych problemów, np. silnia czy ciąg Fibonacciego.
  12. Wykład 12
    Rekurencja inaczej, czyli programowanie dynamiczne na przykładzie liczenia odległości pomiędzy dwoma napisami.
    • Materiały
    • Zadania
    • Co po tych zajęciach powinno się znać / wiedzieć / umieć
      • Na czym polega programowanie dynamiczne.
  13. Wykład 13
    Kontynuacja - liczenie odległości pomiędzy dwoma napisami w wersji rekurencyjnej i tablicowej.
    • Materiały
    • Zadania
    • Co po tych zajęciach powinno się znać / wiedzieć / umieć
      • Na czym polega programowanie dynamiczne.
  14. Wykład 14
    Podsumowanie materiału, dyskusje na wybrane tematy
    • Materiały
      • ...
    • Zadania
    • Co po tych zajęciach powinno się znać / wiedzieć / umieć
      • ...
  15. Wykład 15
    Podsumowanie materiału, dyskusje na wybrane tematy
    • Materiały
      • ...
    • Zadania
    • Co po tych zajęciach powinno się znać / wiedzieć / umieć
      • ...

Materiały