Paradygmaty programowania: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Linia 80: Linia 80:
 
# [[Paradygmaty programowania/Wykład 8: U podstaw programowania funkcyjnego — rachunek lambda|U podstaw programowania funkcyjnego — rachunek lambda]] ([[Paradygmaty programowania/Ćwiczenia 8: U podstaw programowania funkcyjnego — rachunek lambda|ćwiczenia]]) ([[Paradygmaty programowania/Test 8: U podstaw programowania funkcyjnego — rachunek lambda|test]])
 
# [[Paradygmaty programowania/Wykład 8: U podstaw programowania funkcyjnego — rachunek lambda|U podstaw programowania funkcyjnego — rachunek lambda]] ([[Paradygmaty programowania/Ćwiczenia 8: U podstaw programowania funkcyjnego — rachunek lambda|ćwiczenia]]) ([[Paradygmaty programowania/Test 8: U podstaw programowania funkcyjnego — rachunek lambda|test]])
 
# [[Paradygmaty programowania/Wykład 9: U podstaw programowania obiektowego — rachunek sigma|U podstaw programowania obiektowego — rachunek sigma]] ([[Paradygmaty programowania/Ćwiczenia 9: U podstaw programowania obiektowego — rachunek sigma|ćwiczenia]]) ([[Paradygmaty programowania/Test 9: U podstaw programowania obiektowego — rachunek sigma|test]])
 
# [[Paradygmaty programowania/Wykład 9: U podstaw programowania obiektowego — rachunek sigma|U podstaw programowania obiektowego — rachunek sigma]] ([[Paradygmaty programowania/Ćwiczenia 9: U podstaw programowania obiektowego — rachunek sigma|ćwiczenia]]) ([[Paradygmaty programowania/Test 9: U podstaw programowania obiektowego — rachunek sigma|test]])
# [[Paradygmaty_programowania/Wykład 10: Programowanie funkcyjne w Haskellu I|Programowanie funkcyjne w Haskellu I]] ([[Paradygmaty_programowania/Ćwiczenia 10|ćwiczenia]]) ([[Paradygmaty_programowania/Test 10|test]])
+
# [[Paradygmaty_programowania/Wykład 10: Programowanie funkcyjne w Haskellu I|Programowanie funkcyjne w Haskellu I]] ([[Paradygmaty_programowania/Ćwiczenia 10: Programowanie funkcyjne w Haskellu I|ćwiczenia]]) ([[Paradygmaty_programowania/Test 10: Programowanie funkcyjne w Haskellu I|test]])
 
# [[Paradygmaty programowania/Wykład 11: Programowanie funkcyjne w Haskellu II|Programowanie funkcyjne w Haskellu II]] ([[Paradygmaty programowania/Ćwiczenia 11: Programowanie funkcyjne w Haskellu II|ćwiczenia]]) ([[Paradygmaty programowania/Test 11: Programowanie funkcyjne w Haskellu II|test]])
 
# [[Paradygmaty programowania/Wykład 11: Programowanie funkcyjne w Haskellu II|Programowanie funkcyjne w Haskellu II]] ([[Paradygmaty programowania/Ćwiczenia 11: Programowanie funkcyjne w Haskellu II|ćwiczenia]]) ([[Paradygmaty programowania/Test 11: Programowanie funkcyjne w Haskellu II|test]])
 
# [[Paradygmaty programowania/Wykład 12: Programowanie funkcyjne w Haskellu III|Programowanie funkcyjne w Haskellu III]] ([[Paradygmaty programowania/Ćwiczenia 12: Programowanie funkcyjne w Haskellu III|ćwiczenia]]) ([[Paradygmaty programowania/Test 12: Programowanie funkcyjne w Haskellu III|test]])
 
# [[Paradygmaty programowania/Wykład 12: Programowanie funkcyjne w Haskellu III|Programowanie funkcyjne w Haskellu III]] ([[Paradygmaty programowania/Ćwiczenia 12: Programowanie funkcyjne w Haskellu III|ćwiczenia]]) ([[Paradygmaty programowania/Test 12: Programowanie funkcyjne w Haskellu III|test]])

Wersja z 20:41, 25 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, Wydział Matematyki i Informatyki, Instytut Informatyki,
  • Włodzimierz Moczurad - Uniwersytet Jagielloński, Wydział Matematyki i Informatyki, Instytut Informatyki,

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)