Paradygmaty programowania

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Forma zajęć

Wykład (30 godzin) + laboratorium (30 godzin)

Opis

Kurs omawia cztery najistotniejsze paradygmaty pojawiające się we współczesnym programowaniu: programowanie imperatywne, obiektowe, funkcyjne i programowanie w logice. Skrótowo wspomniane są również inne paradygmaty. Kurs pozwala spojrzeć szerzej na programowanie, a w szczególności pogłębić znajomość języków programowania i zrozumieć podstawowe zagadnienia implementacyjne.

Sylabus

Autor

  • Małgorzata Moczurad — Uniwersytet Jagielloński
  • Włodzimierz Moczurad — Uniwersytet Jagielloński

Wymagania wstępne

  • Logika i teoria mnogości
  • Wstęp do programowania
  • Algorytmy i struktury danych

Zawartość

  • Pojęcia ogólne:
    • opis składni i semantyki języków programowania
    • typy
    • przekazywanie parametrów do podprogramów
    • abstrakcyjne typy danych
    • przeciążanie operatorów i podprogramów
    • polimorfizm
  • Programowanie imperatywne:
    • zmienne
    • struktura blokowa
    • wiązanie statyczne i dynamiczne
    • organizacja wywołań podprogramów
    • przydział pamięci na stosie i na stercie
    • przykłady z języków Ada, C, Pascal
  • Programowanie obiektowe:
    • klasy jako abstrakcyjne typy danych
    • dziedziczenie
    • późne (dynamiczne) wiązanie wywołań
    • polimorfizm
    • szablony i klasy rodzajowe
    • przykłady z języków C++, Java, C#, Ada 95, Smalltalk
  • Programowanie funkcyjne:
    • funkcje jako model programowania
    • rachunek lambda
    • dopasowywanie wzorca
    • nadawanie typów
    • rekursja
    • leniwa ewaluacja
    • funkcje wyższego rzędu
    • przykłady z języków Lisp, Scheme, ML, Haskell
  • Programowanie w logice:
    • rachunek predykatów w Prologu
    • rezolucja
    • listy

Literatura

  1. Robert Sebesta: Concepts of Programming Languages. Addison Wesley, 2005
  2. Peter Van Roy, Seif Haridi: Concepts, Techniques, and Models of Computer Programming. MIT Press, 2004
  3. Ken Arnold, James Gosling: The Java Programming Language. Addison Wesley, 2005 / Java. Wydawnictwa Naukowo-Techniczne, 1999
  4. Richard Bird: Introduction to Functional Programming using Haskell. Prentice Hall, 1988
  5. Małgorzata Moczurad: Wybrane zagadnienia z teorii rekursji. Wydawnictwo UJ, 2002
  6. Martin Abadi, Luca Cardelli: A Theory of Objects. Springer, 1996.
  7. John Reynolds: Theories of Programming Languages. Cambridge University Press, 1998
  8. Feliks Kluźniak, Stanisław Szpakowicz: Prolog. Wydawnictwa Naukowo-Techniczne, 1983
  9. Ulf Nilsson, Jan Małuszyński: Logic, Programming and Prolog. John Wiley & Sons, 1995

Moduły

  1. Co to jest paradygmat programowania? (ćwiczenia) (test)
  2. Semantyka zmiennych (ćwiczenia) (test)
  3. Typy, typy abstrakcyjne (ćwiczenia) (test)
  4. Podprogramy (ćwiczenia) (test)
  5. Programowanie obiektowe — przegląd (ćwiczenia) (test)
  6. Programowanie funkcyjne — przegląd (ćwiczenia) (test)
  7. Programowanie w logice — przegląd (ćwiczenia) (test)
  8. U podstaw programowania funkcyjnego — rachunek lambda (ćwiczenia) (test)
  9. U podstaw programowania obiektowego — rachunek sigma (ćwiczenia) (test)
  10. Programowanie funkcyjne w Haskellu I (ćwiczenia) (test)
  11. Programowanie funkcyjne w Haskellu II (ćwiczenia) (test)
  12. Programowanie funkcyjne w Haskellu III (ćwiczenia) (test)
  13. Programowanie w logice w Prologu I (ćwiczenia) (test)
  14. Programowanie w logice w Prologu II (ćwiczenia) (test)
  15. Inne paradygmaty warte wspomnienia (ćwiczenia) (test)