Politechnika Warszawska - Centralny System Uwierzytelniania
Strona główna

Języki przetwarzania symbolicznego

Informacje ogólne

Kod przedmiotu: 103A-INIIT-ISP-JPS
Kod Erasmus / ISCED: (brak danych) / (brak danych)
Nazwa przedmiotu: Języki przetwarzania symbolicznego
Jednostka: Wydział Elektroniki i Technik Informacyjnych
Grupy: ( Algorytmy i języki - albo - Projektowanie systemów )-Inżynieria systemów informatycznych-inż.-EITI
( Przedmioty techniczne )---EITI
Punkty ECTS i inne: 4.00 Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.
Język prowadzenia: polski
Jednostka decyzyjna:

103000 - Wydział Elektroniki i Technik Informacyjnych

Kod wydziałowy:

JPS

Numer wersji:

1

Skrócony opis:

Kurs jest wprowadzeniem do języków przetwarzania danych symbolicznych. Omawiane są dwa najszerzej używane języki tego typu-LISP i PROLOG, zwłaszcza w aspekcie ich przydatności jako języków implementacyjnych w dziedzinie sztucznej inteligencji.

Pełny opis:

Kurs jest wprowadzeniem do języków przetwarzania danych symbolicznych. Omawiane są dwa najszerzej używane języki tego typu-LISP i PROLOG, zwłaszcza w aspekcie ich przydatności jako języków implementacyjnych w dziedzinie sztucznej inteligencji.

Treść wykładu
Wprowadzenie. Cechy języków do przetwarzania danych symbolicznych. Ogólna charakterystyka języków LISP i PROLOG. Znaczenie języków LISP i PROLOG jako języków programowania zastosowań sztucznej inteligencji.


CZĘŚĆ I: PRZETWARZANIE DANYCH SYMBOLICZNYCH W JĘZYKU LISP

  • Wprowadzenie do języka LISP. Koncepcja programowania funkcyjnego. Podstawowe wyrażenia symboliczne: atomy, listy. Wartość wyrażenia symbolicznego, przypisywanie wartości symbolom, formy. Zasady ewaluacji form. Lista jako podstawowa struktura danych w języku LISP. Elementarne funkcje do przetwarzania list. Wykonanie programu jako proces ewaluacji form. Rekurencja w języku LISP.

  • Podstawowe konstrukcje programowe. Definiowanie funkcji. Zmienne leksykalne i zmienne specjalne. Bloki leksykalne. Predykaty, wyrażenia warunkowe. Argumenty funkcyjne, wyrażenia lambda. Użycie funkcji funcall, apply, funkcji typu mapcar. Iteracja. Operacje wprowadzania i wyprowadzania danych.

  • Przetwarzanie struktur danych. Konstruowanie struktur przez zagnieżdżanie list. Listy asocjacyjne. Przypisywanie atrybutów symbolom. Definiowanie typów strukturalnych. Przykłady przetwarzania złożonych struktur. Strumienie.

  • LISP jako język implementacji zastosowań sztucznej inteligencji -wybrane przykłady. Planowanie sekwencji akcji na przykładzie "świata klocków". Implementacja systemu wnioskującego "wprzód" i systemu wnioskującego "wstecz".


  • CZĘŚĆ II: PRZETWARZANIE DANYCH SYMBOLICZNYCH W JĘZYKU PROLOG
  • Podstawy składni i semantyki. Program jako zbiór faktów i reguł. Wykonanie interpretacyjne programu jako proces wnioskowania zstępującego. Operacja dopasowania wyrażeń symbolicznych. Mechanizm wycofywania (backtracking) w procesie interpretacji programu. Znaczenie deklaratywne i znaczenie proceduralne programu.

  • Podstawy teoretyczne języka. Fakty i reguły jako formuły rachunku predykatów. Podstawy formalne interpretacji programów: dowodzenie twierdzeń, zasada rezolucji.

  • Struktury danych. Listy: reprezentacja, deklaratywna i proceduralna specyfikacja operacji na listach. Przykłady programowania operacji na listach. Ogólna składnia struktur: struktury jako wyrażenia funkcyjne. Przetwarzanie struktur: mechanizm dopasowania dla struktur. Przykłady przetwarzania złożonych struktur danych. Arytmetyka w języku PROLOG: wyrażenia arytmetyczne jako struktury, wbudowane predykaty arytmetyczne, notacja operatorowa.

  • Sterowanie wykonaniem programu. Wpływ kolejności klauzul na przebieg wykonania programu. Sterowanie mechanizmem wycofywania: odcięcie. Przykłady zastosowania odcięcia do modyfikacji zachowania programu. Negacja w języku PROLOG.

  • Operacje wprowadzania i wyprowadzania danych. Czytanie i wyprowadzanie danych atomicznych i struktur.
    Wbudowane predykaty do manipulowania strukturami programu. Konstruowanie i dekomponowanie struktur, operacje na bazie faktów, procedury do konstruowania wyników "zbiorczych" (bagof, setof, findall).

  • PROLOG jako język implementacji zastosowań sztucznej inteligencji -wybrane przykłady. Przeszukiwanie przestrzeni stanów. Przykłady prostych programów planujących sekwencje akcji. Przeszukiwanie drzew AND/OR. Implementacja systemu wnioskującego "wprzód" (forward chaining) i systemu wnioskującego "wstecz" (backward chaining). Przykładowa realizacja powłoki systemu eksperckiego (expert system shell).



    Zakres projektu
    W ramach ćwiczeń projektowych studenci wykonują zadania ilustrujące techniki przetwarzania danych symbolicznych. Programy są pisane w języku PROLOG

  • Literatura:


      1. Bratko - Prolog Programming for Artificial Intelligence Pearson Education 2001

      2. Graham - Common LISPPrentice Hall 1995

      3. Winston, Horn - LISP Addison-Wesley 1984

      4. Luger - Artificial Intelligence
        Pearson Education 2005

    Zajęcia w cyklu "rok akademicki 2021/2022 - sem. zimowy" (zakończony)

    Okres: 2021-10-01 - 2022-02-22
    Wybrany podział planu:
    Przejdź do planu
    Typ zajęć:
    Projekt, 15 godzin, 30 miejsc więcej informacji
    Wykład, 30 godzin, 30 miejsc więcej informacji
    Koordynatorzy: Rajmund Kożuszek, Piotr Parewicz
    Prowadzący grup: Rajmund Kożuszek, Piotr Parewicz
    Lista studentów: (nie masz dostępu)
    Zaliczenie: Ocena łączna
    Jednostka realizująca:

    103200 - Instytut Informatyki

    Zajęcia w cyklu "rok akademicki 2020/2021 - sem. letni" (zakończony)

    Okres: 2021-02-20 - 2021-09-30
    Wybrany podział planu:
    Przejdź do planu
    Typ zajęć:
    Projekt, 15 godzin, 75 miejsc więcej informacji
    Wykład, 30 godzin, 75 miejsc więcej informacji
    Koordynatorzy: Rajmund Kożuszek, Piotr Parewicz
    Prowadzący grup: Rajmund Kożuszek
    Lista studentów: (nie masz dostępu)
    Zaliczenie: Ocena łączna
    Jednostka realizująca:

    103200 - Instytut Informatyki

    Zajęcia w cyklu "rok akademicki 2020/2021 - sem. zimowy" (zakończony)

    Okres: 2020-10-01 - 2021-02-19
    Wybrany podział planu:
    Przejdź do planu
    Typ zajęć:
    Projekt, 15 godzin, 30 miejsc więcej informacji
    Wykład, 30 godzin, 30 miejsc więcej informacji
    Koordynatorzy: Rajmund Kożuszek, Piotr Parewicz
    Prowadzący grup: Rajmund Kożuszek, Piotr Parewicz, Krystian Radlak
    Lista studentów: (nie masz dostępu)
    Zaliczenie: Ocena łączna
    Jednostka realizująca:

    103200 - Instytut Informatyki

    Zajęcia w cyklu "rok akademicki 2019/2020 - sem. letni" (zakończony)

    Okres: 2020-02-22 - 2020-09-30
    Wybrany podział planu:
    Przejdź do planu
    Typ zajęć:
    Projekt, 15 godzin, 60 miejsc więcej informacji
    Wykład, 30 godzin, 60 miejsc więcej informacji
    Koordynatorzy: Rajmund Kożuszek, Piotr Parewicz
    Prowadzący grup: Piotr Parewicz
    Lista studentów: (nie masz dostępu)
    Zaliczenie: Ocena łączna
    Jednostka realizująca:

    103200 - Instytut Informatyki

    Zajęcia w cyklu "rok akademicki 2019/2020 - sem. zimowy" (zakończony)

    Okres: 2019-10-01 - 2020-02-21
    Wybrany podział planu:
    Przejdź do planu
    Typ zajęć:
    Projekt, 15 godzin, 30 miejsc więcej informacji
    Wykład, 30 godzin, 30 miejsc więcej informacji
    Koordynatorzy: Piotr Parewicz
    Prowadzący grup: Piotr Parewicz
    Lista studentów: (nie masz dostępu)
    Zaliczenie: Ocena łączna
    Jednostka realizująca:

    103200 - Instytut Informatyki

    Zajęcia w cyklu "rok akademicki 2018/2019 - sem. letni" (zakończony)

    Okres: 2019-02-18 - 2019-09-30
    Wybrany podział planu:
    Przejdź do planu
    Typ zajęć:
    Projekt, 15 godzin, 60 miejsc więcej informacji
    Wykład, 30 godzin, 60 miejsc więcej informacji
    Koordynatorzy: Piotr Parewicz
    Prowadzący grup: Piotr Parewicz
    Lista studentów: (nie masz dostępu)
    Zaliczenie: Ocena łączna
    Jednostka realizująca:

    103200 - Instytut Informatyki

    Zajęcia w cyklu "rok akademicki 2018/2019 - sem. zimowy" (zakończony)

    Okres: 2018-10-01 - 2019-02-17
    Wybrany podział planu:
    Przejdź do planu
    Typ zajęć:
    Projekt, 15 godzin, 30 miejsc więcej informacji
    Wykład, 30 godzin, 30 miejsc więcej informacji
    Koordynatorzy: Piotr Parewicz
    Prowadzący grup: Piotr Parewicz
    Lista studentów: (nie masz dostępu)
    Zaliczenie: Ocena łączna
    Jednostka realizująca:

    103200 - Instytut Informatyki

    Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
    Właścicielem praw autorskich jest Politechnika Warszawska.
    pl. Politechniki 1, 00-661 Warszawa tel: (22) 234 7211 https://pw.edu.pl kontakt deklaracja dostępności USOSweb 7.0.0.0-7 (2024-03-18)