Paradygmaty programowania: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
 
Linia 59: Linia 59:
=== Literatura ===
=== Literatura ===


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


==Moduły==
==Moduły==

Aktualna wersja na dzień 13:33, 27 wrz 2006

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. R. Sebesta, Concepts of Programming Languages, Addison Wesley, 2005
  2. P. Van Roy, S. Haridi, Concepts, Techniques, and Models of Computer Programming, MIT Press, 2004
  3. K. Arnold, J. Gosling, The Java Programming Language Addison Wesley, 2005
  4. R. Bird, Introduction to Functional Programming using Haskell, Prentice Hall, 1988
  5. M. Moczurad, Wybrane zagadnienia z teorii rekursji, Wydawnictwo UJ, 2002
  6. M. Abadi, L. Cardelli, A Theory of Objects, Springer, 1996.
  7. J. Reynolds, Theories of Programming Languages, Cambridge University Press, 1998
  8. F. Kluźniak, S. Szpakowicz, Prolog, Wydawnictwa Naukowo-Techniczne, 1983
  9. U. Nilsson, J. 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)