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
- 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
- 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
Moduły
- Co to jest paradygmat programowania? (ćwiczenia) (test)
- Semantyka zmiennych (ćwiczenia) (test)
- Typy, typy abstrakcyjne (ćwiczenia) (test)
- Podprogramy (ćwiczenia) (test)
- Programowanie obiektowe — przegląd (ćwiczenia) (test)
- Programowanie funkcyjne — przegląd (ćwiczenia) (test)
- Programowanie w logice — przegląd (ćwiczenia) (test)
- U podstaw programowania funkcyjnego — rachunek lambda (ćwiczenia) (test)
- U podstaw programowania obiektowego — rachunek sigma (ćwiczenia) (test)
- Programowanie funkcyjne w Haskellu I (ćwiczenia) (test)
- Programowanie funkcyjne w Haskellu II (ćwiczenia) (test)
- Programowanie funkcyjne w Haskellu III (ćwiczenia) (test)
- Programowanie w logice w Prologu I (ćwiczenia) (test)
- Programowanie w logice w Prologu II (ćwiczenia) (test)
- Inne paradygmaty warte wspomnienia (ćwiczenia) (test)