Spis treści

Logic Programming 2023/2024-winter

  1. Introduction to Logic Programming. Syllabus. Terms, Predicates, Clauses. Basic Examples. [2.10.2023;ali]
  2. Introduction to Prolog. 3 Core Mechanisms: Unification, Resolution, DFS Backtracking Search. Examples. Numbers generation. SEND+MORE=MONEY [16.10.2023;ali]
  3. E-Learning: 30.10.2023: Prolog: Lists and Data Structures Chapters 0,1,2,3 and especially 4 Also lectures Prolog-3 and Prolog-4 on lists (links below) [30.10.2023;ali]
  4. Prolog: Lists as Data Structures. Basic Operations on Lists. Advanced Operations on Lists. Recursion vs. Iteration. [13.11.2023;ali]
  5. Knowledge Engineering with Prolog. Meta-Programming in Prolog. Example Applications. [27.11.2023;ali]

The Power of Prolog

Programowanie Logiczne

Programowanie w języku Prolog - wykłady 2020/2021

Wykłady odbywają się we wtorki, 14:40-16:10 na UPEL/Moodle: Programowanie w języku Prolog 2021

  1. Paradygmaty programowania: klasyfikacje języków programowania. Języki proceduralne a deklaratywne. Programowanie logiczne: Prolog. Intuicyjne przedstawienie Prologu. Składnia Prologu. Model obliczeniowy: implementacja DFS, nawroty, backtracking. Indeterminizm. Zmienne i ich rola. 10 prostych przykładów [2.03.2021; ALi]
  2. Składnia Prologu. Termy i ich rola. Termy a listy. Obliczenia numeryczne w Prologu. Silnia. Rozmiana pieniędzy: rekurencja a iteracje. Mechanizm DFS z nawrotami. Przykład liczby.pl/różne warianty. Wymuszanie nawrotów: fail. Predykat odcięcia - cut. Warianty rozwiązania: SEND+MORE=MONEY. [9.03.2021; Ali]
  3. E-Learning [16.03.2021]
  4. Prolog: kontynuacja przykładów. Prolog: składnia i semantyka. Termy. Generacja termów: huge_tree. Unifikacja. Algorytm unifikacji termów. Podstawy logiczne Prologu: fakty, klauzule Horna, rezolucja, strategia SLD. Struktury listowe - wprowadzenie. Konstrukcja, rola i obsługa list. Predykaty member/2, select/3 i append/2. Interpretacja działania - drzewo wnioskowania, nawroty. Listy jako sekwencje, zbiory i zbiory z powtórzeniami. [23.03.2021; ALi]
  5. Listy: Przykład: (Bridge and Torch). Pobieranie i wstawianie elementu do listy. Mechanizmy obliczeniowe: rekurencja, iteracja, nawroty. Struktury listowe: operacje na zbiorach i sekwencjach. Wybrane operacje na listach: 1-N, N-1, sumowanie, odwracanie; mechanizm akumulatora. Przykłady zaawansowanych definicji/zadania ze str. 14, wykład 3. [30.03.2021; ALi]
  6. Struktury listowe. Operacje na zbiorach - realizacja. Sortowanie. Zaawansowane operacje na listach; przykłady zadań i ich rozwiązań. Listy-Tricks. Rekurencja a iteracje; pętle z fail. Pamięć globalna: assert/retract. [13.04.2021; ALi]
  7. Listy - operacje zaawansowane - dokończenie. Metapredykaty operacji na listach. Prolog: reprezentacja i przetwarzanie wiedzy. Sterowanie wnioskowaniem: negacja (not), cut i fail. Wstęp do metaprogramowania. Przykłady metaprogramowania. [20.04.2021; ALi]
  8. Metaprogramowanie. Reprezentacja i przetwarzanie wiedzy. Przykłady zastosowań. Programowanie deklaratywne a proceduralne; Prolog a Python - porównanie wybranych konstrukcji. Programowanie z ograniczeniami (Constraint Programming). Biblioteka clpfd. ECLiPSe CLP. B-Prolog, GNU Prolog. MiniZinc; Numberjack. ASP. Picat. Problog. Logica (Google). [27.04.2021.04.2021; ALi]

Materiały do pobrania:



Inne - ciekawe materiały do studiowania w ramach samodzielnej aktywności:

Inne - do uzgodnienia.

Selected links:

—-

Useful pages: courses + tutorials + examples:

WYKŁADY: Programowanie w Logice (Prolog)

Programowanie w Logice: Edycja 2019 (zima; 2h/week)

Wykłady odbywają się we wtorki, 9:30-11:00, sala 224/C-2.

  1. Paradygmaty programowania: klasyfikacje języków programowania. Języki proceduralne a deklaratywne. Programowanie logiczne: Prolog. Intuicyjne przedstawienie Prologu. Składnia Prologu. Model obliczeniowy: implementacja DFS, nawroty, backtracking. Indeterminizm. Zmienne i ich rola. 10 prostych przykładów [1.10.2019; ALi]
  2. Obliczenia numeryczne w Prologu. Silnia. Mechanizm DFS z nawrotami. Przykład liczby.pl/warianty. Wymuszanie nawrotów: fail. Pamięć globalna: assert/retract. Wprowazdzenie do termów. Zmienne i ich rola oraz interpretacja/uzytkowanie. [8.10.2019; Ali]
  3. Prolog: kontynuacja przykładów. Prolog: składnia i semantyka. Termy. Unifikacja. Pamięć wewnętrzna. Podstawy logiczne Prologu: fakty, klauzule Horna, rezolucja. Struktury listowe - wprowadzenie. [15.10.2019; ALi]
  4. Algorytm unifikacji termów. Mechanizmy obliczeniowe: rekurencja, iteracja, nawroty. Struktury listowe. Termy a listy. Konstrukcja, rola i obsługa list. Predykaty member/2, select/3 i append/2. Interpretacja działania - drzewo wnioskowania, nawroty. Listy jako sekwencje, zbiory i zbiory z powtórzeniami. Wybrane operacje na listach. Przykłady zaawansowanych definicji/zadania. [22.10.2019; ALi]
  5. Struktury listowe. Bazowe definicje rekurencyjne. Sortowanie. Zaawansowane operacje na listach; przykłady zadań i ich rozwiązań (Bridge and Torch; Einstein). Listy-Tricks. Rekurencja a iteracje; pętle z fail. [29.10.2018; ALi]
  6. Listy - operacje zaawansowane - dokończenie. Metapredykaty operacji na listach. Prolog: reprezentacja i przetwarzanie wiedzy. Sterowanie wnioskowaniem: negacja (not), cut i fail. Wstęp do metaprogramowania. Przykłady metaprogramowania. [5.12.2019; ALi]
  7. Metaprogramowanie. Reprezentacja i przetwarzanie wiedzy. Przykłady zastosowań. Programowanie deklaratywne a proceduralne; Prolog a Python - porównanie wybranych konstrukcji. Programowanie z ograniczeniami (Constraint Programming). Biblioteka clpfd. ECLiPSe CLP. B-Prolog. Numberjack. ASP. [12.11.2019; ALi]

Prezentacje specjalne:

Kolokwium zaliczeniowe: termin do ustalenia.

Materiały na mojej stronie www; zakładki:

E-Learning/materiał uzupełniający:


Przykłady z wykładów - do pobrania: Examples prezentacja i komentarze - na wykładzie.



Inne - ciekawe materiały do studiowania w ramach samodzielnej aktywności:

Inne - do uzgodnienia.

Selected links:

—-

Useful pages: courses + tutorials + examples:

Programowanie w Logice: Edycja 2018 (zima; 3h/week)

  1. Paradygmaty programowania: klasyfikacje języków programowania. Języki proceduralne a deklaratywne. Programowanie logiczne: Prolog. Intuicyjne przedstawienie Prologu. Składnia Prologu. Model obliczeniowy: implementacja DFS, nawroty, backtracking. Indeterminizm. Zmienne i ich rola. 10 prostych przykładów [5.10.2018; ALi]
  2. Prolog: składnia i semantyka. Termy. Unifikacja. Pamięć wewnętrzna. Struktury listowe. Konstrukcja, rola i obsługa list. Predykaty member/2, select/3 i append/2. [12.10.2018; ALi]
  3. Wykład w dn. 19.10.2018 nie odbędzie się [ALi]
  4. Struktury listowe. Termy a listy. Konstrukcja, rola i obsługa list. Predykaty member/2, select/3 i append/2. Interpretacja działania - drzewo wnioskowania, nawroty. Listy jako sekwencje, zbiory i zbiory z powtórzeniami. Wybrane operacje na listach. Przykłady zaawansowanych definicji/zadania. [26.10.2018; ALi]
  5. Prolog: Struktury listowe. Sortowanie. Zaawansowane operacje na listach; przykłady zadań i ich rozwiązań. Rekurencja a iteracje; pętle z fail. Metapredykaty operacji na listach. Wstęp do metaprogramowania. Przykłady metaprogramowania. [9.11.2018; ALi]
  6. Njabliższy wykład - już ostatni : Prolog: reprezentacja i przetwarzanie wiedzy. Metaprogramowanie. Programowanie z ograniczeniami (Constraint Programming). Biblioteka clpfd. [16.11.2018; ALi] Prezentacja specjalna: deklaratywny język programowania z ograniczeniami Picat
  7. Programowanie deklaratywne a proceduralne. Prolog a Python - porównanie wybranych konstrukcji. Programowania z ograniczeniami (clp(fd)). ECLiPSe CLP. B-Prolog. Numberjack. ASP. Problog. Picat. [materiał fakultatywny]
  8. E-Learning: Prolog: programowanie deklaratywne. [materiał fakultatywny] Prolog


Propozycje prezentacji do przygotowania w ramach samodzielnej aktywności:

Inne - do uzgodnienia.

Selected links:

—-

Useful pages: courses + tutorials + examples:

Edycja 2018 (3h/week)

  1. Paradygmaty programowania: klasyfikacje języków programowania. Języki proceduralne a deklaratywne. Programowanie logiczne: Prolog. Intuicyjne przedstawienie Prologu. Składnia Prologu. Model obliczeniowy: implementacja DFS, nawroty, backtracking. Indeterminizm. Zmienne i ich rola. 10 prostych przykładów [1.03.2018; ALi]
  2. E-learning: Read: Prolog-syntax-terms [8.03.2018; ALi]. Przeanalizuj działanie programów z wykładu: prolog-simple-programs-1.tar.gz. Jak „usprawnić” SEND+MORE=MONEY?
  3. Prolog: składnia i semantyka. Termy. Unifikacja. Pamięć wewnętrzna. Struktury listowe. Konstrukcja, rola i obsługa list. Predykaty member/2, select/3 i append/2. [15.03.2018; ALi]
  4. Prolog: Struktury listowe. Sortowanie. Operacje zaawansowane. Rekurencja a iteracje. Metapredykaty operacji na listach. [22.03.2018; ALi]
  5. E-learning: Zadania do rozwiązania - z wykładu [Prolog-lists: str. 14]. [29.03.2018; ALi]
  6. E-learning: [5.04.2018; ALi] Materiał do samodzielnego studiowania: On-line Guide to Prolog Programming by Roman Bartak; polecam materiał dotyczący operacji na listach. Ponadto: Prolog 99; enjoy :-D
  7. Zaawansowane definicje operacji na listach. Prolog: reprezentacja i przetwarzanie wiedzy. Metaprogramowanie. [12.04.2018; ALi]
  8. Programowanie deklaratywne a proceduralne. Prolog a Python - porównanie wybranych konstrukcji. Programowania z ograniczeniami (clp(fd)). ECLiPSe CLP. B-Prolog. Numberjack. ASP. Problog. Picat. [19.04.2018; ALi]
  9. E-Learning: Prolog: programowanie deklaratywne. [materiał fakultatywny] Prolog
  10. Wprowadzenie do języka Haskell. [26.04.2018; PTM]

Edycja 2017 (3h/week)

  1. Paradygmaty programowania: klasyfikacje języków programowania. Języki proceduralne a deklaratywne. Programowanie logiczne: Prolog. Intuicyjne przedstawienie Prologu. Składnia Prologu. Model obliczeniowy: implementacja DFS, nawroty, backtracking. Indeterminizm. Zmienne i ich rola. 10 prostych przykładów [2.03.2017; ALi]
  2. Prolog: składnia i semantyka. Termy. Unifikacja. Pamięć wewnętrzna. Struktury listowe. Konstrukcja, rola i obsługa list. Predykaty member/2, select/3 i append/2. [9.03.2017; ALi]
  3. Prolog: Struktury listowe. Sortowanie. Operacje zaawansowane. Rekurencja a iteracje. Metapredykaty operacji na listach. [16.03.2017; ALi]
  4. Zaawansowane definicje operacji na listach. Prolog: reprezentacja i przetwarzanie wiedzy. Metaprogramowanie. [23.03.2017; ALi]
  5. Wprowadzenie do języka Python. Prolog a Python - porównanie wybranych konstrukcji. ASP. Problog. Picat. [30.03.2017; ALi]
  6. E-Learning: Prolog: programowanie deklaratywne. [materiał fakultatywny] Prolog
  7. Wprowadzenie do języka Haskell. i dalej…

Edycja 2016 (3h/week)

  1. Paradygmaty programowania: klasyfikacje języków programowania. Języki proceduralne a deklaratywne. Programowanie logiczne: Prolog. Intuicyjne przedstawienie Prologu. Składnia Prologu. Model obliczeniowy: implementacja DFS, nawroty, backtracking. Indeterminizm. Zmienne i ich rola. Termy. [26.02.2016; ALi]
  2. Prolog: składnia i semantyka. Termy. Unifikacja. Pamięć wewnętrzna. Struktury listowe. Konstrukcja, rola i obsługa list. Predykaty member/2, select/3 i append/2. [4.03.2016; ALi]
  3. Prolog: Struktury listowe. Sortowanie. Operacje zaawansowane. Metapredykaty operacji na listach. [11.03.2016; ALi]
  4. Wprowadzenie do języka Haskell. [18.03.2016; PTM]
  5. Prolog: reprezentacja i przetwarzanie wiedzy. Metaprogramowanie. [31.03.2016; ALi]
  6. Wprowadzenie do języka Python. [7.04.2016; ALi]
  7. E-Learning: Prolog: programowanie deklaratywne. [materiał fakultatywny] Prolog
  8. Haskell [14.04.2016] i dalej…

Edycja 2015 (3h/week)

  1. Paradygmaty programowania: klasyfikacje języków programowania. Języki proceduralne a deklaratywne. Programowanie logiczne: Prolog. Intuicyjne przedstawienie Prologu. Składnia Prologu. Model obliczeniowy: implementacja DFS, nawroty, backtracking. Indeterminizm. Zmienne i ich rola. Termy. [5.03.2015]
  2. E-Learning: Prolog: programowanie deklaratywne. [12.03.2015] Data Structures + Lists (Do przerobienia: First Steps in Prolog oraz Prolog Data Structures: List Processing).
  3. Prolog: składnia i semantyka. Termy. Unifikacja. Pamięć wewnętrzna.
  4. Prolog: struktury listowe. Konstrukcja, rola i obsługa list. Predykaty member/2, select/3 i append/2.
  5. Prolog: wybrane zagadnienia zaawansowane.

Edycja 2014 (3h/week)

  1. Paradygmaty programowania: klasyfikacje języków programowania. Programowanie logiczne: Prolog. Intuicyjne przedstawienie Prologu. [6.03.2014]
  2. Prolog: programowanie deklaratywne. Model obliczeniowy: implementacja DFS, nawroty, backtracking. Indeterminizm. Zmienne i ich rola. [13.03.2014]
  3. Prolog: składnia i semantyka. Termy. Unifikacja. Pamięć wewnętrzna. [20.03.2014]
  4. Prolog: struktury listowe. Konstrukcja, rola i obsługa list. Predykaty member/2, select/3 i append/2. [27.03.2014]
  5. E-learning: Prolog: wybrane zagadnienia zaawansowane. [3.04.2014] Data Structures + Lists (Do przerobienia: First Steps in Prolog oraz Prolog Data Structures: List Processing).

LABORATORIUM

Prolog

Kurs z Prologu


Haskell

LABORATORIA:

Instrukcje opracowano na podstawie: podręcznika, kursu na edX, kursu na FutureLearn, zadań z HackerRank