Uniwersytet Kardynała Stefana Wyszyńskiego w Warszawie - Centralny System Uwierzytelniania
Strona główna

Programowanie w logice i funkcyjne WM-I-U-PWL
Wykład (WYK) Semestr letni 2019/20

Informacje o zajęciach (wspólne dla wszystkich grup)

Liczba godzin: 30
Limit miejsc: (brak limitu)
Literatura:

Clocksin, Mellish, Prolog. Programowanie. Helion

Nilsson, Małuszyński, Programming in Prolog, Wiley & Sons Ltd, wolny dostęp: http://www.ida.liu.se/~ulfni53/lpp/

Harold Abelson, Gerald Jay Sussman, Julie Sussman, Struktura i interpretacja programów komputerowych, WNT.

Paul Hudak, John Peterson, Joseph Fasel,

A Gentle Introduction to Haskell, Version 98, 2000,

wolny dostęp: https://www.haskell.org/tutorial/

Richard Bird, Introduction to Functional Programming using Haskell.

Simon Peyton Jones (ed.), Haskell 98. Language and Libraries. The Revised Report. 2002, wolny dostęp: https://www.haskell.org/definition/haskell98-report.pdf

Metody i kryteria oceniania:

Egzamin pisemny.

Zakres tematów:

1. Podstawowe cechy paradygmatu programowania w logice:

deklaratywny styl programowania,

mechanizm wnioskowania, formuły Hornowskie,

środki kontroli nad wnioskowaniem/obliczeniem.

Mechanizm rezolucji dla klasycznego rachunku zdań.

2. Składnia logiki pierwszego rzędu. Uniwersum Herbranda.

Formuły Hornowskie.

Definicja spełniania dla formuł Hornowskich.

Unifikacja i rezolucja w logice pierwszego rzędu. Twierdzenie o istnieniu

najbardziej ogólnego unifikatora (MGU).

3. SLD rezolucja w logice pierwszego rzędu. Twierdzenie o pełności dla rezolucji i SLD rezolucji.

Twierdzenie o nierozstrzygalności SLD rezolucji.

Reprezentowanie wiedzy w Prologu.

Podstawy pracy z interpreterem Prologu (Swi-Prolog).

4. Znaczenie symboli '=' i '==' w Prologu. Kontrola nad przebiegiem wykonania programu: kolejność wyboru

klauzul do unifikacji, nawracanie, odcięcie (cut), wymuszenie nawrotu (fail).Sledzenie wykonania programu. Meta predykaty: clause/2, assert/1, retract/1.

5. Obsługa plików, programowanie wejścia i wyjścia.

Arytmetyka w Prologu. Znaczenie 'is' oraz '=:='.

6. Negacja w Prologu. Założenie o domkniętości świata (closed world assumption).

SLDNF rezolucja. Modele stabilne.

7. Reprezentowanie struktur rekurencyjnych: lista, drzewo.

Technika programowania z akumulatorem.

Listy różnicowe.

8. Wprowadzenie do rachunku lambda.

Interpretacje wartości logicznych, instrukcji

warunkowej, iloczynu kartezjańskiego w rachunku lambda.

Redukcje termów. Operator punktu stałego Y.

9. Arytmetyka w rachunku lambda.

Własności programowania funkcyjnego:

przejrzystość referencyjna, niezmienność danych, bezstanowość, brak efektów ubocznych,

funkcje jako podstawowe obiekty, rekursja, leniwa ewaluacja, typy,

polimorfizm, funkcje wyższych rzędów.

10. Wprowadzenie do języka Haskell.

Podstawy składni, konwencje nazewnicze i pierwsze programy.

Podstawowe typy: logiczny, znakowy, typy liczbowe.

Listy, pary, typy funkcji.

Operacje curry i uncurry.

Polimorfizm. Klasy typów.

Definiowanie typów.

11. Definiowanie funkcji: wyrażenia lambda, złożenie funkcji, rekursja, dopasowywanie wzorca.

Definiowanie funkcji przez równoległą rekursję.

Podstawowe operacje na listach.

12. Typy rekurencyjne. Definiowanie funkcji działających na typach

rekurencyjnych. Implementacja drzewa.

13. Kontynuacje i monady.

Problem obsługi wejścia i wyjścia w językach funkcyjnych, efekty uboczne, niepowtarzalność wyniku.

Typ IO. Obsługa plików.

14. Struktury nieskonczone w Haskellu.

15. Elementy programowania funkcyjnego w imperatywnych językach programowania.

Połączenie paradygmatów: funkcyjne programowanie w logice. Język Curry.

Grupy zajęciowe

zobacz na planie zajęć

Grupa Termin(y) Prowadzący Miejsca Liczba osób w grupie / limit miejsc Akcje
1 każda środa, 9:45 - 11:15, sala 108
Konrad Zdanowski 4/10 szczegóły
Wszystkie zajęcia odbywają się w budynku:
Kampus Wóycickiego Bud. 21
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Kardynała Stefana Wyszyńskiego w Warszawie.
ul. Dewajtis 5,
01-815 Warszawa
tel: +48 22 561 88 00 https://uksw.edu.pl
kontakt deklaracja dostępności USOSweb 7.0.2.0-1 (2024-03-12)