Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Programowanie logiczne i programowanie z ograniczeniami
Tok studiów:
2019/2020
Kod:
ZSDA-3-0166-s
Wydział:
Szkoła Doktorska AGH
Poziom studiów:
Studia III stopnia
Specjalność:
-
Kierunek:
Szkoła Doktorska AGH
Semestr:
0
Profil:
Ogólnoakademicki (A)
Język wykładowy:
Polski i Angielski
Forma studiów:
Stacjonarne
Prowadzący moduł:
prof. dr hab. inż. Ligęza Antoni (ligeza@agh.edu.pl)
Dyscypliny:
Moduł multidyscyplinarny
Treści programowe zapewniające uzyskanie efektów uczenia się dla modułu zajęć

Przedmiotem nauczania jest programowanie logiczne (ang. Logic Programming) i programowanie z ograniczeniami (ang. Constraint Programming). Podstawowy paradygmat to programowanie deklaratywne polegające na definiowaniu relacji, reguł (klauzul) i ograniczeń, dla których poszukiwane jest rozwiązanie.
Treści nauczania obejmują:
– Wprowadzenia do koncepcji programowania logicznego i programowania z ograniczeniami,
– Zmienne, termy, listy, fakty i klauzule,
– Typy i definiowanie ograniczeń,
– Bazowy algorytm Backtracking Search i jego modyfikacje,
– Metody i algorytmy propagacji ograniczeń,
– Informacje o wybranych narzędziach i przykłady problemów.

Opis efektów uczenia się dla modułu zajęć
Kod MEU Student, który zaliczył moduł zajęć zna i rozumie/potrafi/jest gotów do Powiązania z KEU Sposób weryfikacji i oceny efektów uczenia się osiągniętych przez studenta w ramach poszczególnych form zajęć i dla całego modułu zajęć
Wiedza: zna i rozumie
M_W001 ma podstawową wiedzę na temat różnych paradygmatów programowania w tym programowania deklaratywnego, w tym zwłaszcza programowania logicznego, oraz opartego na koncepcji relacji i proceduralnego; wie jak dobierać paradygmat do rozwiązywania konkretnych problemów decyzyjnych i obliczeniowych w różnych dziedzinach informatyki SDA3A_W03, SDA3A_W01 Egzamin
M_W002 ma podstawową wiedzę na temat logiki i jej zastosowań w programowaniu; zna składnię i semantykę logiki rachunku zdań i rachunku predykatów; ma wiedzę dotyczącą modelowania ograniczeń z wykorzystaniem elementów logiki i algebry SDA3A_W03, SDA3A_W01 Egzamin
M_W003 ma podstawową wiedzę na temat paradygmatu programowania deklaratywnego w logice; zna podstawy opisu problemów i programowania w logice; zna podstawowe techniki i algorytmy rozwiązywania problemów z ograniczeniami. SDA3A_W03, SDA3A_W01 Egzamin
Umiejętności: potrafi
M_U001 potrafi ocenić przydatność różnych paradygmatów programowania i związanych z nimi środowisk programistycznych, w tym zwłaszcza w zakresie programowania deklaratywnego/programowania z ograniczeniami SDA3A_U02, SDA3A_U01 Kolokwium
M_U002 potrafi czytać ze zrozumieniem, pisać, uruchamiać i weryfikować programy zapisane w języku programowania deklaratywnego; potrafi wykorzystać podstawowe pojęcia i konstrukcje języka programowania z ograniczeniami do zapisu programów SDA3A_U06, SDA3A_U02, SDA3A_U01 Kolokwium
M_U003 potrafi czytać ze zrozumieniem, pisać, uruchamiać i weryfikować programy zapisane w języku programowania logicznego, rozumie potrzebę, zasady i zastosowania programowania deklaratywnego, w tym zwłaszcza programowania z ograniczeniami SDA3A_U06, SDA3A_U02, SDA3A_U01 Kolokwium
Kompetencje społeczne: jest gotów do
M_K001 potrafi mysleć samodzielnie i konstruktywnie; studiować w celu podnoszenia swoich kwalifikacji i rozwoju osobowego; potrafi komunikować się i przekazywać wiedzę innym SDA3A_K01, SDA3A_K03, SDA3A_K02 Prezentacja
Liczba godzin zajęć w ramach poszczególnych form zajęć:
SUMA (godz.)
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Prace kontr. przejść.
Lektorat
30 0 0 0 0 0 0 0 0 30 0 0
Matryca kierunkowych efektów uczenia się w odniesieniu do form zajęć i sposobu zaliczenia, które pozwalają na ich uzyskanie
Kod MEU Student, który zaliczył moduł zajęć zna i rozumie/potrafi/jest gotów do Forma zajęć dydaktycznych
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Prace kontr. przejść.
Lektorat
Wiedza
M_W001 ma podstawową wiedzę na temat różnych paradygmatów programowania w tym programowania deklaratywnego, w tym zwłaszcza programowania logicznego, oraz opartego na koncepcji relacji i proceduralnego; wie jak dobierać paradygmat do rozwiązywania konkretnych problemów decyzyjnych i obliczeniowych w różnych dziedzinach informatyki - - - - - - - - + - -
M_W002 ma podstawową wiedzę na temat logiki i jej zastosowań w programowaniu; zna składnię i semantykę logiki rachunku zdań i rachunku predykatów; ma wiedzę dotyczącą modelowania ograniczeń z wykorzystaniem elementów logiki i algebry - - - - - - - - + - -
M_W003 ma podstawową wiedzę na temat paradygmatu programowania deklaratywnego w logice; zna podstawy opisu problemów i programowania w logice; zna podstawowe techniki i algorytmy rozwiązywania problemów z ograniczeniami. - - - - - - - - + - -
Umiejętności
M_U001 potrafi ocenić przydatność różnych paradygmatów programowania i związanych z nimi środowisk programistycznych, w tym zwłaszcza w zakresie programowania deklaratywnego/programowania z ograniczeniami - - - - - - - - + - -
M_U002 potrafi czytać ze zrozumieniem, pisać, uruchamiać i weryfikować programy zapisane w języku programowania deklaratywnego; potrafi wykorzystać podstawowe pojęcia i konstrukcje języka programowania z ograniczeniami do zapisu programów - - - - - - - - + - -
M_U003 potrafi czytać ze zrozumieniem, pisać, uruchamiać i weryfikować programy zapisane w języku programowania logicznego, rozumie potrzebę, zasady i zastosowania programowania deklaratywnego, w tym zwłaszcza programowania z ograniczeniami - - - - - - - - + - -
Kompetencje społeczne
M_K001 potrafi mysleć samodzielnie i konstruktywnie; studiować w celu podnoszenia swoich kwalifikacji i rozwoju osobowego; potrafi komunikować się i przekazywać wiedzę innym - - - - - - - - + - -
Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 92 godz
Punkty ECTS za moduł 3 ECTS
Udział w zajęciach dydaktycznych/praktyka 30 godz
Przygotowanie do zajęć 20 godz
przygotowanie projektu, prezentacji, pracy pisemnej, sprawozdania 17 godz
Samodzielne studiowanie tematyki zajęć 20 godz
Dodatkowe godziny kontaktowe 5 godz
Szczegółowe treści kształcenia w ramach poszczególnych form zajęć (szczegółowy program wykładów i pozostałych zajęć)
Zajęcia warsztatowe (30h):
  1. Programowanie logiczne i programowanie z ograniczeniami

    Wstęp: wprowadzenie do programowania z ograniczeniami i programowania logicznego z ograniczeniami; elementarny przegląd problematyki i przykładów zastosowań programowania logicznego i z ograniczeniami. Podstawy algebraiczne i logiczne definiowania ograniczeń. Strategia Backtracking Depth-First Search w Prologu i jej modyfikacje.
    Wybrane elementy programowania deklaratywnego, modele obliczeń, elementy lingwistyki formalnej, elementarny przegląd paradygmatów programowania. Krótka charakterystyka języków w konkretnych paradygmatach: proceduralnym, obiektowym, programowania w logice, funkcyjnym.
    Programowanie w logice na przykładzie języka Prolog:

    • Intuicyjne wprowadzenie do Prologu,
    • Składnia, semantyka i podstawy logiczne Prologu,
    • Przetwarzanie struktur listowych,
    • Reprezentacja i przetwarzanie wiedzy w Prologu
    • Metaprogramowanie.
      Wybrane zastosowania i kierunki rozwojowe programowania w logice.
      Typy i definiowanie ograniczeń; przegląd wybranych predefiniowanych ograniczeń globalnych.
      Bazowy algorytm Backtracking Search w programowaniu z ograniczeniami i jego modyfikacje; inne podejścia.
      Metody i algorytmy propagacji ograniczeń.
      Zwiększanie efektywności obliczeń: dekompozycja, relaksacja, sterowanie wnioskowaniem, heurystyki.
      6. Informacje o wybranych narzędziach i przykłady problemów.

  2. Tematyka zajęć warsztatowych (zajęcia praktyczne przy komputerze)

    1. Programowanie w wybranym języku (standardowo SWI Prolog i MiniZinc) (20g)
    2. Samodzielne przygotowanie i prezentacja modułu (10g)

Pozostałe informacje
Metody i techniki kształcenia:
  • Zajęcia warsztatowe: Treści prezentowane na wykładzie są przekazywane w formie prezentacji multimedialnej w połączeniu z klasycznym wykładem tablicowym wzbogaconymi o pytania i problemy do rozwiązania oraz demonstrację działania prostych programów ilustrujących prezentowane zagadnia. Pytania, dyskusja, propozycje i prezentacja własnych rozwiązań oraz prezentacje problemowe są pożądane i mile widziane.
Warunki i sposób zaliczenia poszczególnych form zajęć, w tym zasady zaliczeń poprawkowych, a także warunki dopuszczenia do egzaminu:

Ocena końcowa jest wystawiana na podstawie oceny z laboratorium oraz ewentualnie zaliczenia wykładu/wyniku egzaminu.

Wiedza i umiejętności każdego studenta oceniane są w skali 0-100 pkt.

Przy zaliczeniach zajęć i egzaminach oraz wystawianiu oceny końcowej stosuje się aktualny Regulamin Studiów, np. następującą skalę ocen:
a) od 90% bardzo dobry (5.0);
b) od 80% plus dobry (4.5);
c) od 70% dobry (4.0);
d) od 60% plus dostateczny (3.5);
e) od 50% dostateczny (3.0);

Zasady udziału w zajęciach:
  • Zajęcia warsztatowe:
    – Obecność obowiązkowa: Tak
    – Zasady udziału w zajęciach: Studenci uczestniczą w zajęciach poznając kolejne treści nauczania zgodnie z syllabusem przedmiotu. Studenci winni na bieżąco zadawać pytania i wyjaśniać wątpliwości. Prowadzenie notatek z wykładu jest usilnie rekomendowane. Rejestracja audiowizualna wykładu wymaga zgody prowadzącego.
Sposób obliczania oceny końcowej:

Przy zaliczeniach zajęć i egzaminach oraz wystawianiu oceny końcowej stosuje się aktualny Regulamin Studiów, np. następującą skalę ocen:
a) od 90% bardzo dobry (5.0);
b) od 80% plus dobry (4.5);
c) od 70% dobry (4.0);
d) od 60% plus dostateczny (3.5);
e) od 50% dostateczny (3.0);
f) poniżej 50% niedostateczny (2.0).

Sposób i tryb wyrównywania zaległości powstałych wskutek nieobecności studenta na zajęciach:

W trybie konsultacji indywidualnych; jedynie w uzasadnionych i dopuszczanych regulaminem przypadkach, w ograniczonych ramach czasowych.

Wymagania wstępne i dodatkowe, z uwzględnieniem sekwencyjności modułów :

Znajomość podstawowych zagadnień z zakresu:
1. Znajomość podstaw informatyki.
2. Podstawowa znajomość logiki i teorii relacji oraz funkcji.
3. Narzędzia: Linux/Unix, system plików, edytor ASCII.
Generalnie:
Znajomość matematyki w zakresie wymaganym dla studentów studiów informatycznych.
Entuzjazm i zapał do STUDIOWANIA – w tym samodzielnego poszerzania i pogłębiania wiedzy.
Uważność na zajęciach, zdolność do samodzielnego myślenia i wytężonej pracy. Otwartość, kreatywność i zdolność do myślenia niestandardowego.

Zalecana literatura i pomoce naukowe:

Prolog:
1. GEIST Lab z Prologu, http://ai.ia.agh.edu.pl/wiki/pl:prolog:prolog_lab
2. Jan Wielemaker et. al., SWI-Prolog
3. Universidade de Porto, YAP Prolog
4. I. Bratko, Prolog Programming for Artificial Intelligence, 4th ed, Addison-Wesley, 2011.
5. Dave Stuart Robertson, Quick Prolog
6. Dennis Merritt, Adventure In Prolog, Amzi!, 2010.
7. Dennis Merritt, Building Expert Systems in Prolog, Amzi!, 2010.
8. Ulf Nilsson and Jan Małuszyński, Logic, Programming and Prolog (2ed)., Wiley, 2006
9. Michael Covington et. al., Prolog Programming in Depth., 1995.

Programowanie z ograniczeniami:
F. Rossi, P. van Beek, T. Walsh (eds.): Handbook of Constraint Programming, Elsevier, 2006.
R. Dechter: Constraint Processing, Morgan Kaufmann, 2003.
Krzysztof R. Apt: Principles of Constraint Programming. Cambridge University Press, 2003, 2006.
Krzysztof R. Apt and Mark G. Wallace: Constraint Programming usinc ECLiPSe. Cambridge University Press, 2007.2003, 2006.
http://kti.mff.cuni.cz/~bartak/constraints/
http://www.anclp.pl/

Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

Antoni Ligęza: Logical Foundations for Rule-Based Systems. Springer, 2006.

Improving efficiency in constraint logic programming through constraint modeling with rules and hypergraphs / Antoni LIGĘZA // W: FedCSIS [Dokument elektroniczny] : proceedings of the Federated Conference on Computer Science and Information Systems 2012 : September 9–12, 2012 Wrocław, Poland / eds. M. Ganzha, L. Maciaszek, M. Paprzycki. — Dane tekstowe. — Warsaw : Polskie Towarzystwo Informatyczne ; Los Alamitos : IEEE Computer Society Press, 2012. — Dane na dysku Flash. — W bazie Web of Science ISBN 978-83-60810-48-4. — ISBN: 978-83-60810-51-4. — S. 101–107.

A study of methodological issues in design and development of rule-based systems: proposal of a new approach / Antoni LIGĘZA, Grzegorz J. NALEPA // Data Mining and Knowledge Discovery ; ISSN 1384-5810. — 2011 vol. 1 iss. 2, s. 117–137. — Bibliogr. s. 135–137

Models and tools for improving efficiency in constraint logic programming / Antoni LIGĘZA // Decision Making in Manufacturing and Services ; ISSN 1896-8325. — 2011 vol. 5 no. 1–2, s. 69–78. — Bibliogr. s. 78, Abstr.. — tekst: http://journals.bg.agh.edu.pl/DECISION/2011-01-02/DM_2011_1_2_06.pdf

The HeKatE methodology : hybrid engineering of intelligent systems / Grzegorz J. NALEPA, Antoni LIGĘZA // International Journal of Applied Mathematics and Computer Science ; ISSN 1641-876X. — 2010 vol. 20 no. 1: Computational intelligence in modern control systems, s. 35–53. — Bibliogr. s. 51–53

Informacje dodatkowe:

Wybrane źróḍła internetowe:

Implementacja Prologu i dokumentacja: http://www.swi-prolog.org/
Materiały do Prologu: http://ai.ia.agh.edu.pl/wiki/pl:dydaktyka:pp:start
http://home.agh.edu.pl/~ligeza/wiki/prolog:course

https://en.wikipedia.org/wiki/Constraint_programming
http://ktiml.mff.cuni.cz/~bartak/podminky/
http://www.hakank.org/
http://www.pathwayslms.com/swipltuts/clpfd/clpfd.html
https://www.minizinc.org/

http://home.agh.edu.pl/~ligeza/wiki/ke:essential_thinking