Loogiline programmeerimine (2017)
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 2016
- Loeng: Nejapäeval kl. 10:00 - 11:30 ruumis CYB - VEENUS (õppejõud prof. Jüri Vain)
- Praktikumid:
- IAPB51, IAPB52: Neljapäeval kl. 12:40-14:10 ruumis ICT-401 (õppejõud: prof. Jüri Vain, Sven Nõmm, Evelin Halling)
- IAPB53: Neljapäeval kl. 14:15-15:45 ruumis ICT-401 (õppejõud: prof. Jüri Vain, Sven Nõmm, Evelin Halling)
Hindamiskriteeriumid
- Hindelise arvestuse eelduseks on praktikumitööde (10 praktikumi), testide (10 testi) ja kodutöö esitamine ning kontrolltööde (3 kontrolltööd) sooritamine.
- Praktikumi- ja kodutööd tuleb panna GIT-i ja kaitsta praktikumi ajal TTÜ arvutiklassis. E-postiga saadetud töid ei arvestata.
- Praktikumi ülesanded: 10 tk - tähtaegselt esitatud ülesanne 1 p, pärast tähtaega 0 p (Kokku max: 10 p)
- Kodutöö - Kabe programmi programmeerimine - 10 p
- Võimalikud boonuspunktid
- Kontrolltööd (3 tk - kokku 70 p)
- Kontrolltöö 1 - põhimõisted 30 p
- Kontrolltöö 2 - rekursiooni programmeerimine 20 p
- Kontrolltöö 3 - teadmiste esitamine Prologis 20 p
- Järeltööd kontrolltöödele 1-3 toimuvad semestri viimaste loengute aegadel.
- 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 I-III koha: I koht +3 punkti; II koht +2 punkti; III koht +1 punkt.
- Testide ja praktikumide jooksvad tulemused asuvad Moodles (ained.ttu.ee)
Loengud
- Loeng 1: Mis on loogiline programmeerimine?
- Loeng 2: Loogilise programmeerimise keel Prolog
- Loeng 3.1: Loogika alusmõisted: lauseloogika
- Loeng 3.2: Loogika alusmõisted: predikaatloogika
- Loeng 4: Resolutsioon ja unifitseerimine
- !!!Kontrolltöö 1 (13.10.2016): 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. Kontrolltöö toimub ruumis: U01-202
- Loeng 5: Prologi andmestruktuurid: listid, freimid (lisamaterjal [1] vt Chapter 10)
- Loeng 6: Hulgateooria ja algebra mõistete programmeerimine
- Loeng 7: Prolog programmi täitmine ja täitmise juhtimine
- Kontrolltöö 2 (3.11.2016): 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: Loogika valemite interpreteerimine
- Kontrolltöö 3 (1.12.2016): Loengute 7-10 materjalile
- Temporaalloogika (CTL) valemite interpreteerimine
- Algebra ja hulgateooria mõisted
- DCG grammatikareeglid, reeglite Prologi sisekuju
- Programmeerimisülesanded: otsingu juhtimine predikaatide repeat, fail ja cut abil (vt. Praktikum 9 juhendit).
- (....12.2016) Kontrolltööde 1 ja 2 järeltööd
- (....12.2016) Kontrolltöö 3 järeltöö
Praktikumid
Praktikumides kasutame SWI-Prologi SWI-Prolog.
Eclipse plugin: Prolog Development Tool - PDT.
GIT URI: https://teie-ttu-uni-id-kasutajanimi@git.ttu.ee/ained/iti0021/teie-ttu-uni-id-kasutajanimi.git (NB! see link brauseris ei tööta!). NB! Uni-ID kasutajanimes peavad olema KÕIK VÄIKESED TÄHED!
Giti juhend Eclipse'is kasutamiseks
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 PR05
- Praktikumi 4 juhend
- Näidismaterjal: Klassid ja pärimine
- Lisamaterjal: ISCO ametite klassifikatsioon
- Praktikum PR06: Listid
- Praktikum PR07: Hulgateoreetilised tehted
- Praktikum PR08: Otsingu juhtimine
- Praktikum PR09: DCG grammatika ja loomuliku keele interpreteerimine
Kodutöö 2015
- Kodutööks on kabeprogrammi programmeerimine Prologis
- Kabe
- Tööülesande kirjeldus
- Mängu üldkirjeldus: [6]
- Ametlikud võistlusreeglid:[7]
- Programm Arbiiter juhib mängu.
- Arbiiter UTF-8 kodeeringus:Arbiiter (Prolog32)
- Arbiiter UTF-8 kodeeringus:Arbiiter (Prolog64)
- Arbiiter turniiriks:Arbiiter (Prolog64)
- Programm Arbiiter juhib mängu.