Loogiline programmeerimine (2018)
Ainekood: ITI0021
Link: http://courses.cs.ttu.ee/pages/ITI0021
Õppejõud: prof. Jüri Vain
Kontakt: juri.vain ätt ttu.ee, ICT-418, Vastuvõtu aeg: esmaspäeval kl. 16:00 - 17:00 eelneval kokkuleppel e-maili kaudu
Kursus varasematel aastatel: Sügis 2015
Sügis 2017
NB! Praktikumide järelkaitsmine toimub 9. jaanuaril kell 10.00 (ICT-401)
NB! Kontrolltööde järeltööd s.h. koondtest 16. jaanuaril kell 10.00 (ICT-411)
- Loeng: Teisipäeval kl. 10:00 - 11:30 ruumis U02-102 (õppejõud prof. Jüri Vain)
- Praktikumid ruumis ICT-401: (õppejõud: prof. Jüri Vain, Sven Nõmm, Evelin Halling)
- IAPB51, IAPB52, IAPB53, IAPB54, IAPB55
- Rühm A: Teisipäeval kl. 12:00-13:30
- Rühm B: Teisipäeval kl. 14:00-15:30
- Rühm C: Teisipäeval kl. 16:00-17:30
- IAPB51, IAPB52, IAPB53, IAPB54, IAPB55
Hindamiskriteeriumid
- HINDAMISKRITEERIUMID vt siit
- Järeltööd kontrolltöödele 1-3 toimuvad semestri viimaste loengute aegadel
- 12.12.2017 järeltööd kontrolltööle 1 ja kontrolltööle 2
- 19.12.2017 järeltööd kontrolltööle 2 ja kontrolltööle 3
- Järeltööde sooritamise tingimused:
- Esimesel katsel tuleb teha järeltööd konkreetselt sellele tööle, mille tulemus oli alla 51%.
- Kui ka järeltöö ebaõnnestub, tuleb sooritada koondtöö kursuse kogu materjali peale.
- Arvestuse hinnet tõstab see, kui kodutööna valminud kabeprogramm saavutab viimase praktikumi ajal toimuval võistlusel auhinnalise koha: I koht +3 (mod 5) palli; II koht +2(mod 5) palli; III koht +1(mod 5) pall.
- Testide ja praktikumide jooksvad tulemused asuvad Moodles (ained.ttu.ee)
Loengud
- Loeng 1: Mis on loogiline programmeerimine?
- Loeng 2.1: Loogika alusmõisted: lauseloogika
- Loeng 2.2: Loogika alusmõisted: predikaatloogika
- Loeng 3: Loogilise programmeerimise keel Prolog
- Loeng 4: Resolutsioon ja unifitseerimine
- Loeng 5: Prologi andmestruktuurid: listid, freimid (lisamaterjal [1] vt Chapter 10)
- Kontrolltöö 1 (10.10.2017): Loengute 1-4 materjalile: teadmiste formaliseerimine 1st järku predikaatloogikas, Horni lause, resolutsioon, unifitseerimine, mgu, literaal, term, rekursiivne reegel,lihtsamate päringute ja rekursiivsete reeglite koostamine.
- Loeng 6: Hulgateooria ja algebra mõistete programmeerimine
- Loeng 7: Prolog programmi täitmine ja täitmise juhtimine
- Kontrolltöö 2 (7.11.2017): Loengute 5, 6 ja 7 materjalile: rekursioon, listid, rekursiivsed reeglid listidel, otsingu juhtimine
- Loeng 8: DCG grammatika reeglid ja loomuliku keele parsimine (lisamaterjal [2] ja[3]
- Loeng 9: Mängu ja otsingustrateegiate programmeerimine
- Loeng 10: Prologi liidestamine C ja Java programmidega
- Loeng 11: Tehisintellekti algoritmide programmeerimine Prologis
- Kontrolltöö 3 (05.12.2017): Loengute 5,6,7,8,9 materjalile
- Algebra ja hulgateooria mõisted
- DCG grammatikareeglid, reeglite Prologi sisekuju
- Programmeerimisülesanded: otsingu juhtimine predikaatide repeat, fail ja cut abil (vt. Praktikum PR10 juhendit).
Praktikumid
Praktikumides kasutame SWI-Prologi SWI-Prolog.
Eclipse plugin: Prolog Development Tool - PDT.
GIT
Mine aadressile https://gitlab.cs.ttu.ee/ ja logi sisse oma UNI-ID kasutajanimega.
Loo endale projekt nimega "iti0021" (NB!! Väikesed tähed).
https://gitlab.cs.ttu.ee/dashboard/projects -> "New Project". Visibility las olla "private".
Kui projekt tehtud, siis mine üleval menüüst "Members".
Lisa kasutajatena 'hodor-live' ja 'Evelin.Halling'. Määra "access level" "Developer".
Nüüd saavad kursuse õppejõud sinu repole ligi. Samuti saab sinu repole ligi tester.
Lisa webhook. Ülevalt "Settings" -> "Integrations". Sinna kirjuta
URL: https://ained.ttu.ee/mod/charon/api/git_callback
Jäta peale "Push events"
Võta maha linnuke "Enable SSL verification"
Nüüd nupp "Add webhook"
Praktikumi ülesanded tuleb laadida mainitud tähtajaks git'i vastavasse kausta (PR0x, kus x on praktikumi number [1, 2, 3, 4]). Kaustas peab olema fail nimega prax0x.pl (kus x on praktikumi number [1, 2, 3, 4]). Kaustas võib olla ka teisi faile, mis imporditakse prax0x.pl poolt.
- Praktikum 1: Tutvumine loogilise programmeerimise keskkonnaga SWI-Prolog
- Praktikumi 1 juhend
- Näidismaterjal: Objektid ja nende omadused
- NB! Seda ülesannet ei tule laadida git-i
- Praktikum 2: Prologi teadmusbaasi koostamine PR02
- Praktikum 3: Rekursioon PR03
- Praktikum 4: Rekursioon PR04
- Praktikumi 4 juhend
- Näidismaterjal: Klassid ja pärimine
- Lisamaterjal: ISCO ametite klassifikatsioon
- Praktikum PR05: Listid
- Praktikum PR06: Semantilised võrgud ja freimid
- Praktikumi PR06 juhend
- Näidismaterjal: Klassid ja pärimine
- Praktikum PR07: Hulgateoreetilised tehted
- Praktikum PR08: Otsingu juhtimine
- Praktikum PR09: Reisi marsuudi leidimine
- Praktikum PR10: DCG grammatika ja loomuliku keele interpreteerimine
- Praktikum PR11: Faktide hulgal otsingu programmeerimine
- Praktikumi PR11 juhend
- Näidismaterjal: Otsing kabe näitel
- Tuleb implementeerida predikaadid 'vota' ja 'tee_kaik'
- Praktikum PR12: Tammi programmeerimine
- Programmeerida Tammi käigud. Kasuta eelmises praktikumis (Praktikumis PR11) loodud kabe programmi.
- Tammi käikude programmeerimise algoritm on toodud kodutöö ülesande kirjelduses.
- predikaat 'kaigu_variandid' peab toetama tammiga käimist ja võtmist
Kodutöö 2017
- Kodutööks on kabeprogrammi programmeerimine Prologis
- Kood laadida git-i salve: KABE
- Kabe
- Tööülesande kirjeldus
- Mängu üldkirjeldus: [6]
- Ametlikud võistlusreeglid:[7]
- Graafiline Arbiiter:
- Programm Arbiiter juhib mängu.
- Arbiiter UTF-8 kodeeringus:Arbiiter (Prolog32)
- Arbiiter UTF-8 kodeeringus:Arbiiter (Prolog64)
- Arbiiter turniiriks:Arbiiter (Prolog64)
- Arbiiter arendus:Arbiiter (Arendus)
- Programm Arbiiter juhib mängu.
Kodutöö esitamise tähtaeg on eelviimane ja viimane praktikum, mil toimub kabeturniir (programmikood panna moodle-sse)