MIMINF:Paradygmaty programowania
Z Studia Informatyczne
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
- Podstawy matematyki
- 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
- R. Sebesta, Concepts of Programming Languages, Addison Wesley, 2005
- P. Van Roy, S. Haridi, Concepts, Techniques, and Models of Computer Programming, MIT Press, 2004
- K. Arnold, J. Gosling, The Java Programming Language Addison Wesley, 2005
- R. Bird, Introduction to Functional Programming using Haskell, Prentice Hall, 1988
- M. Moczurad, Wybrane zagadnienia z teorii rekursji, Wydawnictwo UJ, 2002
- M. Abadi, L. Cardelli, A Theory of Objects, Springer, 1996.
- J. Reynolds, Theories of Programming Languages, Cambridge University Press, 1998
- F. Kluźniak, S. Szpakowicz, Prolog, Wydawnictwa Naukowo-Techniczne, 1983
- U. Nilsson, J. Małuszyński, Logic, Programming and Prolog, John Wiley & Sons, 1995