<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="et">
	<id>http://courses.cs.taltech.ee/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tanel</id>
	<title>Kursused - Kasutaja kaastöö [et]</title>
	<link rel="self" type="application/atom+xml" href="http://courses.cs.taltech.ee/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tanel"/>
	<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/pages/Eri:Kaast%C3%B6%C3%B6/Tanel"/>
	<updated>2026-05-21T20:01:11Z</updated>
	<subtitle>Kasutaja kaastöö</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6153</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6153"/>
		<updated>2017-11-30T06:01:08Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* NB! lab at Friday, 24 is un-supervised */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
= &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;NB! lab at Friday, 24 is un-supervised&amp;lt;/font&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Unfortunately, Tanel and Priit cannot attend this Friday: Juhan will open the door so you can conduct groupwork, just not supervised regarding lab3.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Deadline 1. december.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== Real and potential applications of reasoners ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_7a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_7a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at (links from the presentation above):&lt;br /&gt;
* First order logic: classical stuff&lt;br /&gt;
** [http://www.cs.unm.edu/~mccune/papers/robbins/ Otter solving an open problem in math]&lt;br /&gt;
** [http://www.math.md/files/qrs/v10-n1/v10-n1-(pp95-114).pdf using otter for algebra problems]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/ TPTP problem set for first order logic formalizations]&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory set theory] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Axioms&amp;amp;File=SET004-0.ax its axiomatization in logic] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems&amp;amp;Domain=SET set theory problems in TPTP]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/CASC/ CASC prover competition]&lt;br /&gt;
&lt;br /&gt;
* Logic and NLP: several approaches&lt;br /&gt;
** [https://nlp.stanford.edu/projects/natlog.shtml Natural logic for NLP at Stanford]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggwMAE&amp;amp;url=http%3A%2F%2Fresources.mpi-inf.mpg.de%2Fdepartments%2Frg1%2Fconferences%2Fdeduction08%2Fslides%2Fpelzer-bjoern.ppt&amp;amp;usg=AOvVaw062mOKPtvUioiuqURAvAjE logical reasoning and  NLP]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggpMAA&amp;amp;url=https%3A%2F%2Fwww.semanticscholar.org%2Fpaper%2FCombining-Theorem-Proving-with-Natural-Language-Pr-Pelzer-Gl%25C3%25B6ckner%2F023ef392512725aaee5b2a15ae0e73f6ee066168&amp;amp;usg=AOvVaw0VIrM_YDaRK_HjWpjY-Tgz combining theorem proving with NLP]&lt;br /&gt;
** [http://www.nltk.org/howto/inference.html Inference in NLTK]&lt;br /&gt;
&lt;br /&gt;
* Annotated examples of text and sentence derivable from text:&lt;br /&gt;
** [https://nlp.stanford.edu/~wcmac/downloads/fracas.xml Classical FRACAS example set]&lt;br /&gt;
** [https://tac.nist.gov/data/RTE/index.html Newer RTE example sets]&lt;br /&gt;
** [https://rajpurkar.github.io/SQuAD-explorer/ Stanford Question Answering Dataset]&lt;br /&gt;
&lt;br /&gt;
==== SMT solvers ====&lt;br /&gt;
&lt;br /&gt;
Juhan will give a lecture about SMT solvers and applications: the main family of tools for automated verification.&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
== Learning ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6144</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6144"/>
		<updated>2017-11-23T16:27:29Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Learning */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;NB! lab at Friday, 24 is un-supervised&amp;lt;/font&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Unfortunately, Tanel and Priit cannot attend this Friday: Juhan will open the door so you can conduct groupwork, just not supervised regarding lab3.&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Deadline 1. december.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== Real and potential applications of reasoners ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_7a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_7a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at (links from the presentation above):&lt;br /&gt;
* First order logic: classical stuff&lt;br /&gt;
** [http://www.cs.unm.edu/~mccune/papers/robbins/ Otter solving an open problem in math]&lt;br /&gt;
** [http://www.math.md/files/qrs/v10-n1/v10-n1-(pp95-114).pdf using otter for algebra problems]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/ TPTP problem set for first order logic formalizations]&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory set theory] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Axioms&amp;amp;File=SET004-0.ax its axiomatization in logic] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems&amp;amp;Domain=SET set theory problems in TPTP]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/CASC/ CASC prover competition]&lt;br /&gt;
&lt;br /&gt;
* Logic and NLP: several approaches&lt;br /&gt;
** [https://nlp.stanford.edu/projects/natlog.shtml Natural logic for NLP at Stanford]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggwMAE&amp;amp;url=http%3A%2F%2Fresources.mpi-inf.mpg.de%2Fdepartments%2Frg1%2Fconferences%2Fdeduction08%2Fslides%2Fpelzer-bjoern.ppt&amp;amp;usg=AOvVaw062mOKPtvUioiuqURAvAjE logical reasoning and  NLP]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggpMAA&amp;amp;url=https%3A%2F%2Fwww.semanticscholar.org%2Fpaper%2FCombining-Theorem-Proving-with-Natural-Language-Pr-Pelzer-Gl%25C3%25B6ckner%2F023ef392512725aaee5b2a15ae0e73f6ee066168&amp;amp;usg=AOvVaw0VIrM_YDaRK_HjWpjY-Tgz combining theorem proving with NLP]&lt;br /&gt;
** [http://www.nltk.org/howto/inference.html Inference in NLTK]&lt;br /&gt;
&lt;br /&gt;
* Annotated examples of text and sentence derivable from text:&lt;br /&gt;
** [https://nlp.stanford.edu/~wcmac/downloads/fracas.xml Classical FRACAS example set]&lt;br /&gt;
** [https://tac.nist.gov/data/RTE/index.html Newer RTE example sets]&lt;br /&gt;
** [https://rajpurkar.github.io/SQuAD-explorer/ Stanford Question Answering Dataset]&lt;br /&gt;
&lt;br /&gt;
==== SMT solvers ====&lt;br /&gt;
&lt;br /&gt;
Juhan will give a lecture about SMT solvers and applications: the main family of tools for automated verification.&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
== Learning ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6143</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6143"/>
		<updated>2017-11-23T16:26:55Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Learning */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;NB! lab at Friday, 24 is un-supervised&amp;lt;/font&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Unfortunately, Tanel and Priit cannot attend this Friday: Juhan will open the door so you can conduct groupwork, just not supervised regarding lab3.&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Deadline 1. december.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== Real and potential applications of reasoners ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_7a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_7a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at (links from the presentation above):&lt;br /&gt;
* First order logic: classical stuff&lt;br /&gt;
** [http://www.cs.unm.edu/~mccune/papers/robbins/ Otter solving an open problem in math]&lt;br /&gt;
** [http://www.math.md/files/qrs/v10-n1/v10-n1-(pp95-114).pdf using otter for algebra problems]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/ TPTP problem set for first order logic formalizations]&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory set theory] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Axioms&amp;amp;File=SET004-0.ax its axiomatization in logic] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems&amp;amp;Domain=SET set theory problems in TPTP]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/CASC/ CASC prover competition]&lt;br /&gt;
&lt;br /&gt;
* Logic and NLP: several approaches&lt;br /&gt;
** [https://nlp.stanford.edu/projects/natlog.shtml Natural logic for NLP at Stanford]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggwMAE&amp;amp;url=http%3A%2F%2Fresources.mpi-inf.mpg.de%2Fdepartments%2Frg1%2Fconferences%2Fdeduction08%2Fslides%2Fpelzer-bjoern.ppt&amp;amp;usg=AOvVaw062mOKPtvUioiuqURAvAjE logical reasoning and  NLP]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggpMAA&amp;amp;url=https%3A%2F%2Fwww.semanticscholar.org%2Fpaper%2FCombining-Theorem-Proving-with-Natural-Language-Pr-Pelzer-Gl%25C3%25B6ckner%2F023ef392512725aaee5b2a15ae0e73f6ee066168&amp;amp;usg=AOvVaw0VIrM_YDaRK_HjWpjY-Tgz combining theorem proving with NLP]&lt;br /&gt;
** [http://www.nltk.org/howto/inference.html Inference in NLTK]&lt;br /&gt;
&lt;br /&gt;
* Annotated examples of text and sentence derivable from text:&lt;br /&gt;
** [https://nlp.stanford.edu/~wcmac/downloads/fracas.xml Classical FRACAS example set]&lt;br /&gt;
** [https://tac.nist.gov/data/RTE/index.html Newer RTE example sets]&lt;br /&gt;
** [https://rajpurkar.github.io/SQuAD-explorer/ Stanford Question Answering Dataset]&lt;br /&gt;
&lt;br /&gt;
==== SMT solvers ====&lt;br /&gt;
&lt;br /&gt;
Juhan will give a lecture about SMT solvers and applications: the main family of tools for automated verification.&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
== Learning ==&lt;br /&gt;
&lt;br /&gt;
Machine learning is taught by Sven Nõmm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6142</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6142"/>
		<updated>2017-11-23T12:05:11Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* SMT and various other solvers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;NB! lab at Friday, 24 is un-supervised&amp;lt;/font&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Unfortunately, Tanel and Priit cannot attend this Friday: Juhan will open the door so you can conduct groupwork, just not supervised regarding lab3.&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Deadline 1. december.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== Real and potential applications of reasoners ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_7a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_7a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at (links from the presentation above):&lt;br /&gt;
* First order logic: classical stuff&lt;br /&gt;
** [http://www.cs.unm.edu/~mccune/papers/robbins/ Otter solving an open problem in math]&lt;br /&gt;
** [http://www.math.md/files/qrs/v10-n1/v10-n1-(pp95-114).pdf using otter for algebra problems]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/ TPTP problem set for first order logic formalizations]&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory set theory] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Axioms&amp;amp;File=SET004-0.ax its axiomatization in logic] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems&amp;amp;Domain=SET set theory problems in TPTP]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/CASC/ CASC prover competition]&lt;br /&gt;
&lt;br /&gt;
* Logic and NLP: several approaches&lt;br /&gt;
** [https://nlp.stanford.edu/projects/natlog.shtml Natural logic for NLP at Stanford]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggwMAE&amp;amp;url=http%3A%2F%2Fresources.mpi-inf.mpg.de%2Fdepartments%2Frg1%2Fconferences%2Fdeduction08%2Fslides%2Fpelzer-bjoern.ppt&amp;amp;usg=AOvVaw062mOKPtvUioiuqURAvAjE logical reasoning and  NLP]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggpMAA&amp;amp;url=https%3A%2F%2Fwww.semanticscholar.org%2Fpaper%2FCombining-Theorem-Proving-with-Natural-Language-Pr-Pelzer-Gl%25C3%25B6ckner%2F023ef392512725aaee5b2a15ae0e73f6ee066168&amp;amp;usg=AOvVaw0VIrM_YDaRK_HjWpjY-Tgz combining theorem proving with NLP]&lt;br /&gt;
** [http://www.nltk.org/howto/inference.html Inference in NLTK]&lt;br /&gt;
&lt;br /&gt;
* Annotated examples of text and sentence derivable from text:&lt;br /&gt;
** [https://nlp.stanford.edu/~wcmac/downloads/fracas.xml Classical FRACAS example set]&lt;br /&gt;
** [https://tac.nist.gov/data/RTE/index.html Newer RTE example sets]&lt;br /&gt;
** [https://rajpurkar.github.io/SQuAD-explorer/ Stanford Question Answering Dataset]&lt;br /&gt;
&lt;br /&gt;
==== SMT solvers ====&lt;br /&gt;
&lt;br /&gt;
Juhan will give a lecture about SMT solvers and applications: the main family of tools for automated verification.&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
== Learning ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6141</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6141"/>
		<updated>2017-11-23T12:04:41Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* SMT and various other solvers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;NB! lab at Friday, 24 is un-supervised&amp;lt;/font&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Unfortunately, Tanel and Priit cannot attend this Friday: Juhan will open the door so you can conduct groupwork, just not supervised regarding lab3.&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Deadline 1. december.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== Real and potential applications of reasoners ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_7a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_7a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at (links from the presentation above):&lt;br /&gt;
* First order logic: classical stuff&lt;br /&gt;
** [http://www.cs.unm.edu/~mccune/papers/robbins/ Otter solving an open problem in math]&lt;br /&gt;
** [http://www.math.md/files/qrs/v10-n1/v10-n1-(pp95-114).pdf using otter for algebra problems]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/ TPTP problem set for first order logic formalizations]&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory set theory] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Axioms&amp;amp;File=SET004-0.ax its axiomatization in logic] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems&amp;amp;Domain=SET set theory problems in TPTP]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/CASC/ CASC prover competition]&lt;br /&gt;
&lt;br /&gt;
* Logic and NLP: several approaches&lt;br /&gt;
** [https://nlp.stanford.edu/projects/natlog.shtml Natural logic for NLP at Stanford]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggwMAE&amp;amp;url=http%3A%2F%2Fresources.mpi-inf.mpg.de%2Fdepartments%2Frg1%2Fconferences%2Fdeduction08%2Fslides%2Fpelzer-bjoern.ppt&amp;amp;usg=AOvVaw062mOKPtvUioiuqURAvAjE logical reasoning and  NLP]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggpMAA&amp;amp;url=https%3A%2F%2Fwww.semanticscholar.org%2Fpaper%2FCombining-Theorem-Proving-with-Natural-Language-Pr-Pelzer-Gl%25C3%25B6ckner%2F023ef392512725aaee5b2a15ae0e73f6ee066168&amp;amp;usg=AOvVaw0VIrM_YDaRK_HjWpjY-Tgz combining theorem proving with NLP]&lt;br /&gt;
** [http://www.nltk.org/howto/inference.html Inference in NLTK]&lt;br /&gt;
&lt;br /&gt;
* Annotated examples of text and sentence derivable from text:&lt;br /&gt;
** [https://nlp.stanford.edu/~wcmac/downloads/fracas.xml Classical FRACAS example set]&lt;br /&gt;
** [https://tac.nist.gov/data/RTE/index.html Newer RTE example sets]&lt;br /&gt;
** [https://rajpurkar.github.io/SQuAD-explorer/ Stanford Question Answering Dataset]&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
Juhan will give a lecture about SMT and applications.&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
== Learning ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6140</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6140"/>
		<updated>2017-11-23T12:03:35Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* NB! lab at Friday, 24 is un-supervised */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;NB! lab at Friday, 24 is un-supervised&amp;lt;/font&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Unfortunately, Tanel and Priit cannot attend this Friday: Juhan will open the door so you can conduct groupwork, just not supervised regarding lab3.&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Deadline 1. december.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== Real and potential applications of reasoners ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_7a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_7a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at (links from the presentation above):&lt;br /&gt;
* First order logic: classical stuff&lt;br /&gt;
** [http://www.cs.unm.edu/~mccune/papers/robbins/ Otter solving an open problem in math]&lt;br /&gt;
** [http://www.math.md/files/qrs/v10-n1/v10-n1-(pp95-114).pdf using otter for algebra problems]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/ TPTP problem set for first order logic formalizations]&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory set theory] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Axioms&amp;amp;File=SET004-0.ax its axiomatization in logic] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems&amp;amp;Domain=SET set theory problems in TPTP]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/CASC/ CASC prover competition]&lt;br /&gt;
&lt;br /&gt;
* Logic and NLP: several approaches&lt;br /&gt;
** [https://nlp.stanford.edu/projects/natlog.shtml Natural logic for NLP at Stanford]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggwMAE&amp;amp;url=http%3A%2F%2Fresources.mpi-inf.mpg.de%2Fdepartments%2Frg1%2Fconferences%2Fdeduction08%2Fslides%2Fpelzer-bjoern.ppt&amp;amp;usg=AOvVaw062mOKPtvUioiuqURAvAjE logical reasoning and  NLP]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggpMAA&amp;amp;url=https%3A%2F%2Fwww.semanticscholar.org%2Fpaper%2FCombining-Theorem-Proving-with-Natural-Language-Pr-Pelzer-Gl%25C3%25B6ckner%2F023ef392512725aaee5b2a15ae0e73f6ee066168&amp;amp;usg=AOvVaw0VIrM_YDaRK_HjWpjY-Tgz combining theorem proving with NLP]&lt;br /&gt;
** [http://www.nltk.org/howto/inference.html Inference in NLTK]&lt;br /&gt;
&lt;br /&gt;
* Annotated examples of text and sentence derivable from text:&lt;br /&gt;
** [https://nlp.stanford.edu/~wcmac/downloads/fracas.xml Classical FRACAS example set]&lt;br /&gt;
** [https://tac.nist.gov/data/RTE/index.html Newer RTE example sets]&lt;br /&gt;
** [https://rajpurkar.github.io/SQuAD-explorer/ Stanford Question Answering Dataset]&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Learning ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6139</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6139"/>
		<updated>2017-11-23T12:03:20Z</updated>

		<summary type="html">&lt;p&gt;Tanel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;NB! lab at Friday, 24 is un-supervised&amp;lt;/font&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Unfortunately, Tanel and Priit cannot attend this Friday: Juhan will open the door so you can conduct groupwork, just not supervised regarding lab3.&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Deadline 1. december.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== Real and potential applications of reasoners ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_7a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_7a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at (links from the presentation above):&lt;br /&gt;
* First order logic: classical stuff&lt;br /&gt;
** [http://www.cs.unm.edu/~mccune/papers/robbins/ Otter solving an open problem in math]&lt;br /&gt;
** [http://www.math.md/files/qrs/v10-n1/v10-n1-(pp95-114).pdf using otter for algebra problems]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/ TPTP problem set for first order logic formalizations]&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory set theory] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Axioms&amp;amp;File=SET004-0.ax its axiomatization in logic] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems&amp;amp;Domain=SET set theory problems in TPTP]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/CASC/ CASC prover competition]&lt;br /&gt;
&lt;br /&gt;
* Logic and NLP: several approaches&lt;br /&gt;
** [https://nlp.stanford.edu/projects/natlog.shtml Natural logic for NLP at Stanford]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggwMAE&amp;amp;url=http%3A%2F%2Fresources.mpi-inf.mpg.de%2Fdepartments%2Frg1%2Fconferences%2Fdeduction08%2Fslides%2Fpelzer-bjoern.ppt&amp;amp;usg=AOvVaw062mOKPtvUioiuqURAvAjE logical reasoning and  NLP]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggpMAA&amp;amp;url=https%3A%2F%2Fwww.semanticscholar.org%2Fpaper%2FCombining-Theorem-Proving-with-Natural-Language-Pr-Pelzer-Gl%25C3%25B6ckner%2F023ef392512725aaee5b2a15ae0e73f6ee066168&amp;amp;usg=AOvVaw0VIrM_YDaRK_HjWpjY-Tgz combining theorem proving with NLP]&lt;br /&gt;
** [http://www.nltk.org/howto/inference.html Inference in NLTK]&lt;br /&gt;
&lt;br /&gt;
* Annotated examples of text and sentence derivable from text:&lt;br /&gt;
** [https://nlp.stanford.edu/~wcmac/downloads/fracas.xml Classical FRACAS example set]&lt;br /&gt;
** [https://tac.nist.gov/data/RTE/index.html Newer RTE example sets]&lt;br /&gt;
** [https://rajpurkar.github.io/SQuAD-explorer/ Stanford Question Answering Dataset]&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Learning ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6123</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6123"/>
		<updated>2017-11-21T13:00:58Z</updated>

		<summary type="html">&lt;p&gt;Tanel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Deadline 1. december.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== Real and potential applications of reasoners ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_7a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_7a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at (links from the presentation above):&lt;br /&gt;
* First order logic: classical stuff&lt;br /&gt;
** [http://www.cs.unm.edu/~mccune/papers/robbins/ Otter solving an open problem in math]&lt;br /&gt;
** [http://www.math.md/files/qrs/v10-n1/v10-n1-(pp95-114).pdf using otter for algebra problems]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/ TPTP problem set for first order logic formalizations]&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory set theory] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Axioms&amp;amp;File=SET004-0.ax its axiomatization in logic] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems&amp;amp;Domain=SET set theory problems in TPTP]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/CASC/ CASC prover competition]&lt;br /&gt;
&lt;br /&gt;
* Logic and NLP: several approaches&lt;br /&gt;
** [https://nlp.stanford.edu/projects/natlog.shtml Natural logic for NLP at Stanford]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggwMAE&amp;amp;url=http%3A%2F%2Fresources.mpi-inf.mpg.de%2Fdepartments%2Frg1%2Fconferences%2Fdeduction08%2Fslides%2Fpelzer-bjoern.ppt&amp;amp;usg=AOvVaw062mOKPtvUioiuqURAvAjE logical reasoning and  NLP]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggpMAA&amp;amp;url=https%3A%2F%2Fwww.semanticscholar.org%2Fpaper%2FCombining-Theorem-Proving-with-Natural-Language-Pr-Pelzer-Gl%25C3%25B6ckner%2F023ef392512725aaee5b2a15ae0e73f6ee066168&amp;amp;usg=AOvVaw0VIrM_YDaRK_HjWpjY-Tgz combining theorem proving with NLP]&lt;br /&gt;
** [http://www.nltk.org/howto/inference.html Inference in NLTK]&lt;br /&gt;
&lt;br /&gt;
* Annotated examples of text and sentence derivable from text:&lt;br /&gt;
** [https://nlp.stanford.edu/~wcmac/downloads/fracas.xml Classical FRACAS example set]&lt;br /&gt;
** [https://tac.nist.gov/data/RTE/index.html Newer RTE example sets]&lt;br /&gt;
** [https://rajpurkar.github.io/SQuAD-explorer/ Stanford Question Answering Dataset]&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Learning ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6101</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6101"/>
		<updated>2017-11-18T12:25:35Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Real and potential applications of reasoners */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Deadline 1. december.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== Real and potential applications of reasoners ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_7a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_7a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at (links from the presentation above):&lt;br /&gt;
* First order logic: classical stuff&lt;br /&gt;
** [http://www.cs.unm.edu/~mccune/papers/robbins/ Otter solving an open problem in math]&lt;br /&gt;
** [http://www.math.md/files/qrs/v10-n1/v10-n1-(pp95-114).pdf using otter for algebra problems]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/ TPTP problem set for first order logic formalizations]&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory set theory] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Axioms&amp;amp;File=SET004-0.ax its axiomatization in logic] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems&amp;amp;Domain=SET set theory problems in TPTP]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/CASC/ CASC prover competition]&lt;br /&gt;
&lt;br /&gt;
* Logic and NLP: several approaches&lt;br /&gt;
** [https://nlp.stanford.edu/projects/natlog.shtml Natural logic for NLP at Stanford]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggwMAE&amp;amp;url=http%3A%2F%2Fresources.mpi-inf.mpg.de%2Fdepartments%2Frg1%2Fconferences%2Fdeduction08%2Fslides%2Fpelzer-bjoern.ppt&amp;amp;usg=AOvVaw062mOKPtvUioiuqURAvAjE logical reasoning and  NLP]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggpMAA&amp;amp;url=https%3A%2F%2Fwww.semanticscholar.org%2Fpaper%2FCombining-Theorem-Proving-with-Natural-Language-Pr-Pelzer-Gl%25C3%25B6ckner%2F023ef392512725aaee5b2a15ae0e73f6ee066168&amp;amp;usg=AOvVaw0VIrM_YDaRK_HjWpjY-Tgz combining theorem proving with NLP]&lt;br /&gt;
** [http://www.nltk.org/howto/inference.html Inference in NLTK]&lt;br /&gt;
&lt;br /&gt;
* Annotated examples of text and sentence derivable from text:&lt;br /&gt;
** [https://nlp.stanford.edu/~wcmac/downloads/fracas.xml Classical FRACAS example set]&lt;br /&gt;
** [https://tac.nist.gov/data/RTE/index.html Newer RTE example sets]&lt;br /&gt;
** [https://rajpurkar.github.io/SQuAD-explorer/ Stanford Question Answering Dataset]&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6100</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6100"/>
		<updated>2017-11-17T12:42:26Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Real and potential applications of reasoners */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Deadline 1. december.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== Real and potential applications of reasoners ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_7a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_7a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at (links from the presentation above):&lt;br /&gt;
* First order logic: classical stuff&lt;br /&gt;
** [http://www.cs.unm.edu/~mccune/papers/robbins/ Otter solving an open problem in math]&lt;br /&gt;
** [http://www.math.md/files/qrs/v10-n1/v10-n1-(pp95-114).pdf using otter for algebra problems]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/ TPTP problem set for first order logic formalizations]&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory set theory] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Axioms&amp;amp;File=SET009^0.ax partial axiomatization in logic] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems&amp;amp;Domain=SET set theory problems in TPTP]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/CASC/ CASC prover competition]&lt;br /&gt;
&lt;br /&gt;
* Logic and NLP: several approaches&lt;br /&gt;
** [https://nlp.stanford.edu/projects/natlog.shtml Natural logic for NLP at Stanford]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggwMAE&amp;amp;url=http%3A%2F%2Fresources.mpi-inf.mpg.de%2Fdepartments%2Frg1%2Fconferences%2Fdeduction08%2Fslides%2Fpelzer-bjoern.ppt&amp;amp;usg=AOvVaw062mOKPtvUioiuqURAvAjE logical reasoning and  NLP]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggpMAA&amp;amp;url=https%3A%2F%2Fwww.semanticscholar.org%2Fpaper%2FCombining-Theorem-Proving-with-Natural-Language-Pr-Pelzer-Gl%25C3%25B6ckner%2F023ef392512725aaee5b2a15ae0e73f6ee066168&amp;amp;usg=AOvVaw0VIrM_YDaRK_HjWpjY-Tgz combining theorem proving with NLP]&lt;br /&gt;
** [http://www.nltk.org/howto/inference.html Inference in NLTK]&lt;br /&gt;
&lt;br /&gt;
* Annotated examples of text and sentence derivable from text:&lt;br /&gt;
** [https://nlp.stanford.edu/~wcmac/downloads/fracas.xml Classical FRACAS example set]&lt;br /&gt;
** [https://tac.nist.gov/data/RTE/index.html Newer RTE example sets]&lt;br /&gt;
** [https://rajpurkar.github.io/SQuAD-explorer/ Stanford Question Answering Dataset]&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6099</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6099"/>
		<updated>2017-11-17T12:42:08Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Real and potential applications of reasoners */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Deadline 1. december.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== Real and potential applications of reasoners ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_7a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_7a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at (links from the presentation above):&lt;br /&gt;
* First order logic:&lt;br /&gt;
** [http://www.cs.unm.edu/~mccune/papers/robbins/ Otter solving an open problem in math]&lt;br /&gt;
** [http://www.math.md/files/qrs/v10-n1/v10-n1-(pp95-114).pdf using otter for algebra problems]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/ TPTP problem set for first order logic formalizations]&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory set theory] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Axioms&amp;amp;File=SET009^0.ax partial axiomatization in logic] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems&amp;amp;Domain=SET set theory problems in TPTP]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/CASC/ CASC prover competition]&lt;br /&gt;
&lt;br /&gt;
* Logic and NLP: several approaches&lt;br /&gt;
** [https://nlp.stanford.edu/projects/natlog.shtml Natural logic for NLP at Stanford]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggwMAE&amp;amp;url=http%3A%2F%2Fresources.mpi-inf.mpg.de%2Fdepartments%2Frg1%2Fconferences%2Fdeduction08%2Fslides%2Fpelzer-bjoern.ppt&amp;amp;usg=AOvVaw062mOKPtvUioiuqURAvAjE logical reasoning and  NLP]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggpMAA&amp;amp;url=https%3A%2F%2Fwww.semanticscholar.org%2Fpaper%2FCombining-Theorem-Proving-with-Natural-Language-Pr-Pelzer-Gl%25C3%25B6ckner%2F023ef392512725aaee5b2a15ae0e73f6ee066168&amp;amp;usg=AOvVaw0VIrM_YDaRK_HjWpjY-Tgz combining theorem proving with NLP]&lt;br /&gt;
** [http://www.nltk.org/howto/inference.html Inference in NLTK]&lt;br /&gt;
&lt;br /&gt;
* Annotated examples of text and sentence derivable from text:&lt;br /&gt;
** [https://nlp.stanford.edu/~wcmac/downloads/fracas.xml Classical FRACAS example set]&lt;br /&gt;
** [https://tac.nist.gov/data/RTE/index.html Newer RTE example sets]&lt;br /&gt;
** [https://rajpurkar.github.io/SQuAD-explorer/ Stanford Question Answering Dataset]&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6098</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6098"/>
		<updated>2017-11-17T12:38:55Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Real and potential applications of reasoners */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Deadline 1. december.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== Real and potential applications of reasoners ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_7a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_7a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at (links from the presentation above):&lt;br /&gt;
* First order logic:&lt;br /&gt;
** [http://www.cs.unm.edu/~mccune/papers/robbins/ Otter solving an open problem in math]&lt;br /&gt;
** [http://www.math.md/files/qrs/v10-n1/v10-n1-(pp95-114).pdf using otter for algebra problems]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/ TPTP problem set for first order logic formalizations]&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory set theory] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Axioms&amp;amp;File=SET009^0.ax partial axiomatization in logic] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems&amp;amp;Domain=SET set theory problems in TPTP]&lt;br /&gt;
** [http://www.cs.miami.edu/~tptp/CASC/ CASC prover competition]&lt;br /&gt;
&lt;br /&gt;
* Annotated examples of text and sentence derivable from text:&lt;br /&gt;
** [https://nlp.stanford.edu/projects/natlog.shtml Natural logic for NLP at Stanford]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggwMAE&amp;amp;url=http%3A%2F%2Fresources.mpi-inf.mpg.de%2Fdepartments%2Frg1%2Fconferences%2Fdeduction08%2Fslides%2Fpelzer-bjoern.ppt&amp;amp;usg=AOvVaw062mOKPtvUioiuqURAvAjE logical reasoning and  NLP]&lt;br /&gt;
** [https://www.google.ee/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwi50JeA0MXXAhUGQJoKHc7SB-4QFggpMAA&amp;amp;url=https%3A%2F%2Fwww.semanticscholar.org%2Fpaper%2FCombining-Theorem-Proving-with-Natural-Language-Pr-Pelzer-Gl%25C3%25B6ckner%2F023ef392512725aaee5b2a15ae0e73f6ee066168&amp;amp;usg=AOvVaw0VIrM_YDaRK_HjWpjY-Tgz combining theorem proving with NLP]&lt;br /&gt;
** [http://www.nltk.org/howto/inference.html Inference in NLTK]&lt;br /&gt;
** [https://nlp.stanford.edu/~wcmac/downloads/fracas.xml Classical FRACAS example set]&lt;br /&gt;
** [https://tac.nist.gov/data/RTE/index.html Newer RTE example sets]&lt;br /&gt;
** [https://rajpurkar.github.io/SQuAD-explorer/ Stanford Question Answering Dataset]&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6097</id>
		<title>Automated reasoning homework 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6097"/>
		<updated>2017-11-17T08:44:49Z</updated>

		<summary type="html">&lt;p&gt;Tanel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Deadline 1. december.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Automated reasoning homework as a second part of a two-phase project ==&lt;br /&gt;
&lt;br /&gt;
The goal of this homework is &lt;br /&gt;
* to learn about representing knowledge and rules in logic&lt;br /&gt;
* experimenting with an automated reasoner&lt;br /&gt;
* experimenting with integrating external knowledge bases with your rdf-style data&lt;br /&gt;
&lt;br /&gt;
The main concrete task is to add some common sense rules to the rdf-style output of the first phase of the project and then ask and prove some example queries using an automated reasoner. This is required for passing the lab.&lt;br /&gt;
&lt;br /&gt;
The secondary (non-obligatory) concrete task  is to integrate an external knowledge base like [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] with your rdf-style output and be able to answer queries with the added help of the external knowledge base.&lt;br /&gt;
&lt;br /&gt;
The third extra fancy (totally non-obligatory) task is to process restricted English queries, translating these to Otter and outputting only the English-style short answer.&lt;br /&gt;
&lt;br /&gt;
As in the previous lab, for the lab defence/grading you will have to make a short presentation about your results with examples you manage to handle and the examples where you cannot.&lt;br /&gt;
&lt;br /&gt;
== Administrative ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. Presentation afer this deadline will give half of the points. Absolute deadline is 8. December: no submissions will be accepted after that,.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Work should be submitted to git, latest one day before deadline.&lt;br /&gt;
&lt;br /&gt;
The groups are same as for the first phase.&lt;br /&gt;
&lt;br /&gt;
== What you have to do ==&lt;br /&gt;
&lt;br /&gt;
First of all, by default we will use the [http://www.cs.unm.edu/~mccune/otter/ otter prover]. Download it and try out some example problems in the otter zip file. Useful examples for the lab are given below, in the section &amp;quot;Examples to use as a starting point&amp;quot;.   Have a brief look at the [http://www.cs.unm.edu/~mccune/otter/Otter33.pdf otter manual] as well. We note that newer reasoners are allowed as well, but using these would be more complex.&lt;br /&gt;
&lt;br /&gt;
Suppose you have a  triplet like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   http://en.wikipedia.org/wiki/china],&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the list [ http://en.wikipedia.org/wiki/Barack_Obama, http://en.wikipedia.org/wiki/china ] means that we do not know&lt;br /&gt;
which interpretation is the correct one (the original word was like he,this,she,it,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, pick just one interpretation like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography (ontology: like a taxonomy, can be a bit more complex)&lt;br /&gt;
* pose a question in otter format&lt;br /&gt;
* run otter to find answer&lt;br /&gt;
&lt;br /&gt;
If you manage to do that, you will pass.&lt;br /&gt;
&lt;br /&gt;
Next, a bit fancier task you may take up (this is not required for passing, but will award extra points):&lt;br /&gt;
&lt;br /&gt;
Run a loop where you try out different interpretations of he,this,she,it,... and for &amp;lt;b&amp;gt;each&amp;lt;/b&amp;gt; interpretation in the list:&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography&lt;br /&gt;
* check whether otter generates a contradiction: if yes, then this is probably a wrong interpretation, since it does not match common sense rules.&lt;br /&gt;
&lt;br /&gt;
== Integrating with the external knowledge base ==&lt;br /&gt;
&lt;br /&gt;
Instead of relying only on your own handmade rules and facts stated in your processed English, you could &lt;br /&gt;
use [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] to get a large amount of real-world facts and a set of relevant rules automatically.&lt;br /&gt;
&lt;br /&gt;
This is what you could really get from conceptnet and wordnet and dbpedia: the main purpose why these databases/systems exist.&lt;br /&gt;
&lt;br /&gt;
This is not required to pass the lab, but if you manage to do it (ie. use some of these systems for creating relevant rules and facts automatically) we&amp;#039;ll award you more points!&lt;br /&gt;
&lt;br /&gt;
How to integrate dbpedia or conceptnet?&lt;br /&gt;
&lt;br /&gt;
* First download the large textual representation in json or some other easily processable format: investigate different download options and try to find relevant ones which you can understand and work with.&lt;br /&gt;
* Second, write a program which converts this representation to a data/rule file in the otter syntax, using the same conventions and wrapping predicates as you did while processing the English text.&lt;br /&gt;
* When you create a final query file for Otter, you have to add the relevant rows in the created data/rule file to the Otter query file. Since Otter does not manage working with a huge input file, first filter out relevant facts/rule rows. What are the relevant rows? A simple approach is to take these rows which contain uri-s in your own data/rule set created while processing the English text.&lt;br /&gt;
&lt;br /&gt;
== Optional extra fancy task ==&lt;br /&gt;
&lt;br /&gt;
Instead of posing otter-format questions and printing semi-raw results from Otter, you could let the human user pose restricted English questions like &amp;quot;Is Tallinn a city?&amp;quot;, &amp;quot;What is Puise?&amp;quot;, &amp;quot;What is the population of Tallinn?&amp;quot;, &amp;quot;Where is lake X&amp;quot; with a rather simple, limited form, with a structure like &amp;quot;is X a Y&amp;quot;, &amp;quot;what is X&amp;quot;, &amp;quot;whas is X of Y&amp;quot; &amp;quot;where is X&amp;quot; etc and translate these to Otter queries. The resulting answer could then be printed out as a plain fact like &amp;quot;Yes&amp;quot;, &amp;quot;Farm&amp;quot;, &amp;quot;460.000&amp;quot;, &amp;quot;Estonia&amp;quot; etc.&lt;br /&gt;
&lt;br /&gt;
Again, this is not required to pass the lab, but if you manage to do it we&amp;#039;ll award you more points!&lt;br /&gt;
&lt;br /&gt;
== Examples to use as a starting point ==&lt;br /&gt;
&lt;br /&gt;
The following examples are in the Otter format: the first four are in the clause syntax and are similar to what&lt;br /&gt;
you are expected to in the third lab. The last two demonstrate formula syntax, calculation and probabilities (kind of).&lt;br /&gt;
&lt;br /&gt;
* [[Derive simple information about Obama]] &lt;br /&gt;
* [[Ask a query about Obama]]&lt;br /&gt;
* [[Output of first lab converted to second lab]] with a few rules added: can derive that Hyatt has type hotel and Obama is rich. [[Here is otter output of this example]]&lt;br /&gt;
* [[A question posed: find a mortal in the text]]: we just add &amp;lt;tt&amp;gt;-rdf(X,&amp;quot;id:type&amp;quot;,&amp;quot;mortal&amp;quot;) | $ans(X).&amp;lt;/tt&amp;gt; to the facts (i.e. a negated query with a variable and $ans to capture a suitable value for X.&lt;br /&gt;
* [[Probabilities and web scraping]] Determine the type of objects using information from a web page and probability-like measures.&lt;br /&gt;
* [[Example with weather, dates and trust]]&lt;br /&gt;
&lt;br /&gt;
== How to create the Otter file and use the output ==&lt;br /&gt;
&lt;br /&gt;
* Split the example Otter file like obama1.txt into the initial part containing the strategy selection etc and the final part containing end_of_list.&lt;br /&gt;
&lt;br /&gt;
* Create the rdf data in Otter format automatically from the output of your parser in the previous lab.&lt;br /&gt;
&lt;br /&gt;
* In case you pose a question, add the negated question in the Otter format.&lt;br /&gt;
&lt;br /&gt;
* Compile the full intput file by appending these parts into a full input file myinput.txt:&lt;br /&gt;
** the prefix part, &lt;br /&gt;
** the automatically created rdf data in Otter format, &lt;br /&gt;
** the (optional) question in Otter format, in the negated form&lt;br /&gt;
** the commonsense rules and facts: either static handmade rules or rules/facts created automatically from conceptnet/wordnet/dbpedia&lt;br /&gt;
** the short final part ie end_of_list&lt;br /&gt;
&lt;br /&gt;
* Run otter like otter &amp;lt; myinput.txt &amp;gt; myoutput.txt&lt;br /&gt;
&lt;br /&gt;
* Process the myoutput.txt, filtering out derived stuff and/or determine whether the output contains the word PROOF&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Example code ==&lt;br /&gt;
&lt;br /&gt;
[[lab 2 example code converted to give]] as a result the [[Output of first lab converted to second lab]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6096</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6096"/>
		<updated>2017-11-17T08:44:32Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Reasoning and deduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Deadline 1. december.&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== Real and potential applications of reasoners ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_7a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_7a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6095</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6095"/>
		<updated>2017-11-16T22:58:49Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Real and potential applications of reasoners */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== Real and potential applications of reasoners ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_7a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_7a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Kr_lect_7a.pdf&amp;diff=6094</id>
		<title>Fail:Kr lect 7a.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Kr_lect_7a.pdf&amp;diff=6094"/>
		<updated>2017-11-16T22:58:25Z</updated>

		<summary type="html">&lt;p&gt;Tanel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Kr_lect_7a.pptx&amp;diff=6093</id>
		<title>Fail:Kr lect 7a.pptx</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Kr_lect_7a.pptx&amp;diff=6093"/>
		<updated>2017-11-16T22:58:14Z</updated>

		<summary type="html">&lt;p&gt;Tanel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6092</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6092"/>
		<updated>2017-11-16T22:12:39Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Some applications of reasoners */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== Real and potential applications of reasoners ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_6a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_6a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6091</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6091"/>
		<updated>2017-11-16T22:12:20Z</updated>

		<summary type="html">&lt;p&gt;Tanel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== Some applications of reasoners ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_6a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_6a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6090</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6090"/>
		<updated>2017-11-16T22:11:30Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Reasoning and deduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
== Some applications of reasoners ==&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_6a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_6a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmiste_formaliseerimine&amp;diff=6071</id>
		<title>Teadmiste formaliseerimine</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmiste_formaliseerimine&amp;diff=6071"/>
		<updated>2017-11-15T06:13:01Z</updated>

		<summary type="html">&lt;p&gt;Tanel: Uus lehekülg: &amp;#039;See leht ja kursus on hetkel ettevalmistamisel.&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See leht ja kursus on hetkel ettevalmistamisel.&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Esileht&amp;diff=6070</id>
		<title>Esileht</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Esileht&amp;diff=6070"/>
		<updated>2017-11-15T06:12:26Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Magistrantidele suunatud kursused */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Avalikud loengud ja seminarid ==&lt;br /&gt;
&lt;br /&gt;
[[Public Lectures|Avalikud loengud]]&lt;br /&gt;
&lt;br /&gt;
[[Workshops|Seminarid]]&lt;br /&gt;
&lt;br /&gt;
= TTÜ arvutiteaduse instituut - Kursused =&lt;br /&gt;
&lt;br /&gt;
=== Doktorantidele suunatud kursused ===&lt;br /&gt;
&lt;br /&gt;
* [[PhD reading group (IXX9601/2/3)]]&lt;br /&gt;
&lt;br /&gt;
=== Magistrantidele suunatud kursused ===&lt;br /&gt;
&lt;br /&gt;
* [[ITX8205:2016  | Network forensic (ITX8205)]]&lt;br /&gt;
* [[Cyber Defense Monitoring Solutions|Cyber Defense Monitoring Solutions (ITX8071)]]&lt;br /&gt;
* [[ITC8060|Network Protocol Design (ITC8060)]]&lt;br /&gt;
* [[ITT8060|Advanced programming (ITT8060)]]&lt;br /&gt;
* [[ITI8600|Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development (ITI8600)]]&lt;br /&gt;
* [[ITI8531|Software synthesis and verification (ITI8531)]]&lt;br /&gt;
* [[Malware:ITX8042:2016| Kurivara/Malware (ITX8042)]]&lt;br /&gt;
* [[Malware:ITX8060:2016| Kurivara2/Malware2 (ITX8060)]]&lt;br /&gt;
* [[ModernOS:2016 | Modern operation sytems / Kaasaegsete operatsioonisüsteemide ülevaade (ITV005)]]&lt;br /&gt;
* [[ITX8205:2015| Network Forensic (ITX8205)]]&lt;br /&gt;
* [[ITC8220-2015| Special Course on Digital Forensics I]]&lt;br /&gt;
* [[ITX8530|Tarkvaraarenduse meeskonnaprojekt: tellimus]]&lt;br /&gt;
* [[ITX8540|Tarkvaraarenduse teaduspõhine meeskonnaprojekt: startup]]&lt;br /&gt;
* [[ITI8610|Tarkvara töökindlus / Software Assurance (ITI8610)]]&lt;br /&gt;
* [[Machine learning ITI8565 |Masinõpe / Machine learning (ITI8565)]]&lt;br /&gt;
* [[Hybrid Systems ITI8580 |Hübriidsüsteemid / Hybrid Systems (ITI8580 )]]&lt;br /&gt;
* [[Data Mining and network analysis IDN0110 |Andmekaevandamine ja võrgustike analüüs/ Data Mining and network analysis (IDN0110 )]]&lt;br /&gt;
* [[Advanced Algorithms and Data Structures|Algoritmide ja andmestruktuuride erikursus (ITI8590)]]&lt;br /&gt;
* [[Teadmiste formaliseerimine|Ettevalmistamisel kursus: teadmiste formaliseerimine]]&lt;br /&gt;
&lt;br /&gt;
=== Bakalaureuseõppe kursused ===&lt;br /&gt;
&lt;br /&gt;
* [[ITI0102|Programmeerimise algkursus (ITI0102)]]&lt;br /&gt;
* [[ITI0021|Loogiline Programmeerimine (ITI0021)]]&lt;br /&gt;
* [[ITI0050|Algoritmid ja andmestruktuurid (ITI0050)]]&lt;br /&gt;
* [[ITI0140|Programmeerimise süvendatud algkursus (ITI0140)]]&lt;br /&gt;
* [[Programmeerimise erikursus|Programmeerimise erikursus (ITV0101)]]&lt;br /&gt;
* [[ITV0140|Mobiilirakendused (ITV0140)]]&lt;br /&gt;
* [[ITX0040|Andmeturve (ITX0040)]]&lt;br /&gt;
* [[ITV0050|Operatsioonisüsteemide ja arvutivõrkude administreerimine (ITV0050)]]&lt;br /&gt;
* [[Diskreetne matemaatika 2 (ITT0030) harjutused]]&lt;br /&gt;
* [[ITI0201|Robotite programmeerimine (ITI0201)]]&lt;br /&gt;
&lt;br /&gt;
== courses.cs.ttu.ee varasemad kursused ==&lt;br /&gt;
&lt;br /&gt;
=== Doktorantidele suunatud kursused ===&lt;br /&gt;
&lt;br /&gt;
* [[Cyber security PhD seminar]]&lt;br /&gt;
* [[Formal methods in  model-based testing and verification]]&lt;br /&gt;
&lt;br /&gt;
=== Magistrantidele suunatud kursused ===&lt;br /&gt;
&lt;br /&gt;
* [[ITX8301|Magistriseminar/MSc seminar (ITX8301/ITX8302)]]&lt;br /&gt;
* [[Machine learning|Machine Learning (ITI8565)]]&lt;br /&gt;
* [[Hybrid Systems|Hybrid Systems (ITI8580)]]&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6063</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6063"/>
		<updated>2017-11-13T09:29:45Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Propositional solvers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/DPLL_algorithm DPLL in wikipedia]&lt;br /&gt;
* [http://www.satcompetition.org/ regular sat prover competition]&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6062</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6062"/>
		<updated>2017-11-13T09:28:08Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Propositional solvers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
Main material consists of several parts:&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at:&lt;br /&gt;
&lt;br /&gt;
* http://www.satcompetition.org/&lt;br /&gt;
* http://minisat.se/&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6061</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6061"/>
		<updated>2017-11-13T08:09:02Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Reasoning and deduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner_smt.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Nbjorner_smt.pptx&amp;diff=6060</id>
		<title>Fail:Nbjorner smt.pptx</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Nbjorner_smt.pptx&amp;diff=6060"/>
		<updated>2017-11-13T08:08:35Z</updated>

		<summary type="html">&lt;p&gt;Tanel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Dpll.ppt&amp;diff=6059</id>
		<title>Fail:Dpll.ppt</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Dpll.ppt&amp;diff=6059"/>
		<updated>2017-11-13T08:07:40Z</updated>

		<summary type="html">&lt;p&gt;Tanel: Tanel laadis üles faili &amp;amp;quot;Pilt:Dpll.ppt&amp;amp;quot; uue versiooni&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Nbjorner-fn-13-06-13.pptx&amp;diff=6058</id>
		<title>Fail:Nbjorner-fn-13-06-13.pptx</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Nbjorner-fn-13-06-13.pptx&amp;diff=6058"/>
		<updated>2017-11-13T08:02:53Z</updated>

		<summary type="html">&lt;p&gt;Tanel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6057</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6057"/>
		<updated>2017-11-13T08:01:32Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Propositional solvers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner-fn-13-06-13.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.ppt| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6056</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6056"/>
		<updated>2017-11-13T08:01:00Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Reasoning and deduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Read the intro - what is first order (FOL) , propositional (SAT) and satisfiability modulo theories (SMT) - and milestones from [[Media:nbjorner-fn-13-06-13.pptx| Nikolaj Bjorner&amp;#039;s lecture]]&lt;br /&gt;
* Read the explanation of the DPLL method from [[Media:dpll.pptx| the dpll lecture]] by Agostini and Giunchiglia.&lt;br /&gt;
* Read the [http://logictools.org/propositional.html overview of basic propositional logc solving methods ]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Dpll.ppt&amp;diff=6055</id>
		<title>Fail:Dpll.ppt</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Dpll.ppt&amp;diff=6055"/>
		<updated>2017-11-13T07:54:54Z</updated>

		<summary type="html">&lt;p&gt;Tanel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6051</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6051"/>
		<updated>2017-11-03T17:25:37Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Knowledge representation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
* Read about [http://logictools.org/propositional.html propositional solvers]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6050</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6050"/>
		<updated>2017-11-03T17:25:22Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Reasoning and deduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
* Read about [http://logictools.org/propositional.html propositional solvers]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6049</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6049"/>
		<updated>2017-11-03T17:13:47Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Machine reasoning with first order logic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_reasoning automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
* Read about [http://logictools.org/propositional.html propositional solvers]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6048</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6048"/>
		<updated>2017-11-03T17:13:25Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Machine reasoning with first order logic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to resolution] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_theorem_proving automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
* Read about [http://logictools.org/propositional.html propositional solvers]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6047</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6047"/>
		<updated>2017-11-03T17:13:09Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Machine reasoning with first order logic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to pred logic case] &lt;br /&gt;
* Fields of [https://en.wikipedia.org/wiki/Automated_theorem_proving automated reasoning] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated theorem proving] in wikipedia.&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
* Read about [http://logictools.org/propositional.html propositional solvers]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6046</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6046"/>
		<updated>2017-11-03T17:10:47Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Machine reasoning with first order logic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to pred logic case] and [https://en.wikipedia.org/wiki/Automated_theorem_proving automated reasoning]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
* Read about [http://logictools.org/propositional.html propositional solvers]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6045</id>
		<title>Automated reasoning homework 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6045"/>
		<updated>2017-11-03T14:22:36Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Examples to use as a starting point */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Automated reasoning homework as a second part of a two-phase project ==&lt;br /&gt;
&lt;br /&gt;
The goal of this homework is &lt;br /&gt;
* to learn about representing knowledge and rules in logic&lt;br /&gt;
* experimenting with an automated reasoner&lt;br /&gt;
* experimenting with integrating external knowledge bases with your rdf-style data&lt;br /&gt;
&lt;br /&gt;
The main concrete task is to add some common sense rules to the rdf-style output of the first phase of the project and then ask and prove some example queries using an automated reasoner. This is required for passing the lab.&lt;br /&gt;
&lt;br /&gt;
The secondary (non-obligatory) concrete task  is to integrate an external knowledge base like [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] with your rdf-style output and be able to answer queries with the added help of the external knowledge base.&lt;br /&gt;
&lt;br /&gt;
The third extra fancy (totally non-obligatory) task is to process restricted English queries, translating these to Otter and outputting only the English-style short answer.&lt;br /&gt;
&lt;br /&gt;
As in the previous lab, for the lab defence/grading you will have to make a short presentation about your results with examples you manage to handle and the examples where you cannot.&lt;br /&gt;
&lt;br /&gt;
== Administrative ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. Presentation afer this deadline will give half of the points. Absolute deadline is 8. December: no submissions will be accepted after that,.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Work should be submitted to git, latest one day before deadline.&lt;br /&gt;
&lt;br /&gt;
The groups are same as for the first phase.&lt;br /&gt;
&lt;br /&gt;
== What you have to do ==&lt;br /&gt;
&lt;br /&gt;
First of all, by default we will use the [http://www.cs.unm.edu/~mccune/otter/ otter prover]. Download it and try out some example problems in the otter zip file. Useful examples for the lab are given below, in the section &amp;quot;Examples to use as a starting point&amp;quot;.   Have a brief look at the [http://www.cs.unm.edu/~mccune/otter/Otter33.pdf otter manual] as well. We note that newer reasoners are allowed as well, but using these would be more complex.&lt;br /&gt;
&lt;br /&gt;
Suppose you have a  triplet like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   http://en.wikipedia.org/wiki/china],&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the list [ http://en.wikipedia.org/wiki/Barack_Obama, http://en.wikipedia.org/wiki/china ] means that we do not know&lt;br /&gt;
which interpretation is the correct one (the original word was like he,this,she,it,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, pick just one interpretation like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography (ontology: like a taxonomy, can be a bit more complex)&lt;br /&gt;
* pose a question in otter format&lt;br /&gt;
* run otter to find answer&lt;br /&gt;
&lt;br /&gt;
If you manage to do that, you will pass.&lt;br /&gt;
&lt;br /&gt;
Next, a bit fancier task you may take up (this is not required for passing, but will award extra points):&lt;br /&gt;
&lt;br /&gt;
Run a loop where you try out different interpretations of he,this,she,it,... and for &amp;lt;b&amp;gt;each&amp;lt;/b&amp;gt; interpretation in the list:&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography&lt;br /&gt;
* check whether otter generates a contradiction: if yes, then this is probably a wrong interpretation, since it does not match common sense rules.&lt;br /&gt;
&lt;br /&gt;
== Integrating with the external knowledge base ==&lt;br /&gt;
&lt;br /&gt;
Instead of relying only on your own handmade rules and facts stated in your processed English, you could &lt;br /&gt;
use [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] to get a large amount of real-world facts and a set of relevant rules automatically.&lt;br /&gt;
&lt;br /&gt;
This is what you could really get from conceptnet and wordnet and dbpedia: the main purpose why these databases/systems exist.&lt;br /&gt;
&lt;br /&gt;
This is not required to pass the lab, but if you manage to do it (ie. use some of these systems for creating relevant rules and facts automatically) we&amp;#039;ll award you more points!&lt;br /&gt;
&lt;br /&gt;
How to integrate dbpedia or conceptnet?&lt;br /&gt;
&lt;br /&gt;
* First download the large textual representation in json or some other easily processable format: investigate different download options and try to find relevant ones which you can understand and work with.&lt;br /&gt;
* Second, write a program which converts this representation to a data/rule file in the otter syntax, using the same conventions and wrapping predicates as you did while processing the English text.&lt;br /&gt;
* When you create a final query file for Otter, you have to add the relevant rows in the created data/rule file to the Otter query file. Since Otter does not manage working with a huge input file, first filter out relevant facts/rule rows. What are the relevant rows? A simple approach is to take these rows which contain uri-s in your own data/rule set created while processing the English text.&lt;br /&gt;
&lt;br /&gt;
== Optional extra fancy task ==&lt;br /&gt;
&lt;br /&gt;
Instead of posing otter-format questions and printing semi-raw results from Otter, you could let the human user pose restricted English questions like &amp;quot;Is Tallinn a city?&amp;quot;, &amp;quot;What is Puise?&amp;quot;, &amp;quot;What is the population of Tallinn?&amp;quot;, &amp;quot;Where is lake X&amp;quot; with a rather simple, limited form, with a structure like &amp;quot;is X a Y&amp;quot;, &amp;quot;what is X&amp;quot;, &amp;quot;whas is X of Y&amp;quot; &amp;quot;where is X&amp;quot; etc and translate these to Otter queries. The resulting answer could then be printed out as a plain fact like &amp;quot;Yes&amp;quot;, &amp;quot;Farm&amp;quot;, &amp;quot;460.000&amp;quot;, &amp;quot;Estonia&amp;quot; etc.&lt;br /&gt;
&lt;br /&gt;
Again, this is not required to pass the lab, but if you manage to do it we&amp;#039;ll award you more points!&lt;br /&gt;
&lt;br /&gt;
== Examples to use as a starting point ==&lt;br /&gt;
&lt;br /&gt;
The following examples are in the Otter format: the first four are in the clause syntax and are similar to what&lt;br /&gt;
you are expected to in the third lab. The last two demonstrate formula syntax, calculation and probabilities (kind of).&lt;br /&gt;
&lt;br /&gt;
* [[Derive simple information about Obama]] &lt;br /&gt;
* [[Ask a query about Obama]]&lt;br /&gt;
* [[Output of first lab converted to second lab]] with a few rules added: can derive that Hyatt has type hotel and Obama is rich. [[Here is otter output of this example]]&lt;br /&gt;
* [[A question posed: find a mortal in the text]]: we just add &amp;lt;tt&amp;gt;-rdf(X,&amp;quot;id:type&amp;quot;,&amp;quot;mortal&amp;quot;) | $ans(X).&amp;lt;/tt&amp;gt; to the facts (i.e. a negated query with a variable and $ans to capture a suitable value for X.&lt;br /&gt;
* [[Probabilities and web scraping]] Determine the type of objects using information from a web page and probability-like measures.&lt;br /&gt;
* [[Example with weather, dates and trust]]&lt;br /&gt;
&lt;br /&gt;
== How to create the Otter file and use the output ==&lt;br /&gt;
&lt;br /&gt;
* Split the example Otter file like obama1.txt into the initial part containing the strategy selection etc and the final part containing end_of_list.&lt;br /&gt;
&lt;br /&gt;
* Create the rdf data in Otter format automatically from the output of your parser in the previous lab.&lt;br /&gt;
&lt;br /&gt;
* In case you pose a question, add the negated question in the Otter format.&lt;br /&gt;
&lt;br /&gt;
* Compile the full intput file by appending these parts into a full input file myinput.txt:&lt;br /&gt;
** the prefix part, &lt;br /&gt;
** the automatically created rdf data in Otter format, &lt;br /&gt;
** the (optional) question in Otter format, in the negated form&lt;br /&gt;
** the commonsense rules and facts: either static handmade rules or rules/facts created automatically from conceptnet/wordnet/dbpedia&lt;br /&gt;
** the short final part ie end_of_list&lt;br /&gt;
&lt;br /&gt;
* Run otter like otter &amp;lt; myinput.txt &amp;gt; myoutput.txt&lt;br /&gt;
&lt;br /&gt;
* Process the myoutput.txt, filtering out derived stuff and/or determine whether the output contains the word PROOF&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Example code ==&lt;br /&gt;
&lt;br /&gt;
[[lab 2 example code converted to give]] as a result the [[Output of first lab converted to second lab]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6040</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6040"/>
		<updated>2017-11-03T10:28:11Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Machine reasoning with first order logic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to pred logic case]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/CASC/ CASC competition] and the [http://www.cs.miami.edu/~tptp/ TPTP problem library] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems TPTP problem domains]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
* Read about [http://logictools.org/propositional.html propositional solvers]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6039</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6039"/>
		<updated>2017-11-03T10:25:11Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Reasoning and deduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]: second phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to pred logic case]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/ TPTP] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems Problems]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
* Read about [http://logictools.org/propositional.html propositional solvers]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6038</id>
		<title>Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2017&amp;diff=6038"/>
		<updated>2017-11-03T10:24:25Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Past editions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Course code: [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_session_id=50636154&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600]&lt;br /&gt;
(Ainekaart eesti keeles [https://ois.ttu.ee/portal/page?_pageid=35,428610&amp;amp;_dad=portal&amp;amp;_schema=PORTAL&amp;amp;p_msg=&amp;amp;p_public=1&amp;amp;p_what=1&amp;amp;p_lang=EN&amp;amp;p_open_node2=&amp;amp;p_id=110035&amp;amp;p_mode=1&amp;amp;p_pageid=OKM_AINE_WEB_OTSING&amp;amp;n_disp_result=1&amp;amp;n_export=0&amp;amp;_init=1&amp;amp;_nextsearch=1&amp;amp;_nextorder=1&amp;amp;_orfn_1=AINER_KOOD&amp;amp;_ordi_1=ASC&amp;amp;_disp_ainer_kood=1&amp;amp;_where_ainer_kood=&amp;amp;_ainer_kood=ITI8600&amp;amp;_disp_ainer_nimetus=1&amp;amp;_where_ainer_nimetus=&amp;amp;_ainer_nimetus=&amp;amp;_disp_ainer_nimetus_en=1&amp;amp;_where_ainer_nimetus_en=&amp;amp;_ainer_nimetus_en=&amp;amp;_disp_ainer_oppejoud=1&amp;amp;_where_ainer_oppejoud=&amp;amp;_ainer_oppejoud=&amp;amp;_where_ainer_opj_keel=&amp;amp;_ainer_opj_keel=&amp;amp;_disp_ainer_opetsem=1&amp;amp;_where_ainer_opetsem=&amp;amp;_ainer_opetsem=&amp;amp;_disp_ainer_kodulehe_autor=1&amp;amp;_where_ainer_kodulehe_autor=&amp;amp;_ainer_kodulehe_autor=&amp;amp;_where_ainer_std_id=&amp;amp;_ainer_std_id=&amp;amp;_disp_ainer_eap=1&amp;amp;_disp_ainer_viim_semester=1&amp;amp;_vformaat=VFORMAAT_HTML&amp;amp;n_lov_offset=1&amp;amp;n_row_count=&amp;amp;n_row_pos= ITI8600])&lt;br /&gt;
&lt;br /&gt;
Language: The default language of the course is English, but if all students understand Estonian, it will be in Estonian.&lt;br /&gt;
&lt;br /&gt;
Lecturers:&lt;br /&gt;
* Tanel Tammet, tanel.tammet@ttu.ee, 6203457, TTÜ ICT-426 (handles ÕIS registrations)&lt;br /&gt;
* Juhan Ernits, juhan.ernits@ttu.ee, 6202326, TTÜ ICT-428 &lt;br /&gt;
* Sven Nõmm, sven.nomm@ttu.ee,  TTÜ ICT-424&lt;br /&gt;
&lt;br /&gt;
Lab assistant:&lt;br /&gt;
* Priit Järv, priit.jarv@ttu.ee&lt;br /&gt;
&lt;br /&gt;
=Past editions=&lt;br /&gt;
&lt;br /&gt;
[[Teadmispõhise tarkvaraarenduse meetodid / Methods of Knowledge Based Software Development - 2015|2015]], [[Teadmisp%C3%B5hise_tarkvaraarenduse_meetodid_/_Methods_of_Knowledge_Based_Software_Development_2016|2016]]&lt;br /&gt;
&lt;br /&gt;
=Time, place, result=&lt;br /&gt;
&lt;br /&gt;
* Lectures: Fridays 8:00-9:30, CYB-Veenus&lt;br /&gt;
* Labs: Fridays 14:00-15:30, ICT-121&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
The final grade will be based on 40% of points from homework assignments and 60% of the result of an exam. &lt;br /&gt;
&lt;br /&gt;
There will be four homework assignments, one for each block. Assignments will give up to 10 points each. In order to successfully pass the course, at least three homeworks must be successfully defended.&lt;br /&gt;
&lt;br /&gt;
Homeworks can be done alone or in pairs. Pairs will be formed randomly by the lecturers, separately for each homework. As said, you can always opt to do it alone. &lt;br /&gt;
&lt;br /&gt;
Homework has to be presented during lab time to the lecturer on site: email submissions are not accepted. Both pair members must be present during presentation: in case one of them is not present, the homework of the missing person is not considered to be defended. It is also not guaranteed that both pair members get the same grade.&lt;br /&gt;
&lt;br /&gt;
The homeworks have to be submitted to the university git and then defended: git details will be presented later by Juhan.&lt;br /&gt;
&lt;br /&gt;
Homework deadline policy:&lt;br /&gt;
* Defended code must be submitted for defence latest one date before the defence deadline (example: defence deadline 22. Sept, submission 21. Sept).&lt;br /&gt;
* In case the homework is defended in time, you have one extra week to add missing details/improvements without losing points.&lt;br /&gt;
* In case the homework is not defended in time, you have two extra weeks to defend it, but in this case you will get only half the points.&lt;br /&gt;
* No homeworks are accepted after the two extra weeks after the deadline have passed.&lt;br /&gt;
* In order to be accepted to exam you have to successfully defend at least three of the four homeworks.&lt;br /&gt;
&lt;br /&gt;
Grades and additional homework info available at https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
== Materials for search algorithms ==&lt;br /&gt;
&lt;br /&gt;
The search algorithms block was based on the following chapters from the book Artificial Intelligence, a Modern Approach, 3rd Edition, by Stewart Russell and Peter Norvig. (The book is available in TUT library as [http://www.ester.ee/record=b3000919*eng] and [http://www.ester.ee/record=b2881231*eng]):&lt;br /&gt;
&lt;br /&gt;
* Chapter 3: Solving problems by searching&lt;br /&gt;
* Chapter 4: Beyond classical search&lt;br /&gt;
* Chapter 5: Adversarial search&lt;br /&gt;
* Chapter 6: Constraint satisfaction problems&lt;br /&gt;
&lt;br /&gt;
In particular, it will be necessary to be able to choose best methods from the ones mentioned in those chapters for solving particular problems. In addition it is necessary to be able to charachterize the properties of these approaches in terms of relevant criteria (branching factor, time complexity, space complexity, completeness).&lt;br /&gt;
&lt;br /&gt;
= Course structure =&lt;br /&gt;
&lt;br /&gt;
The course will consist of four interconnected blocks covering crucial areas of the subject:&lt;br /&gt;
&lt;br /&gt;
== Search algorithms ==&lt;br /&gt;
&lt;br /&gt;
Homework is available in [https://ained.ttu.ee Moodle]. To log in you will need to use your TUT e-mail account in Office 365. You need to form groups yourself and create a repository named iti8600hw1 at Gitlab.cs.ttu.ee. The visibility needs to be &amp;quot;private&amp;quot; and the project should only be shared with the other group member. Access to staff will be granted automatically. Deadline of submission to Gtilab: September 29.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_1.pdf|Tree search, graph search,  formulating problems to be solved by search (recap of what you know)]]&lt;br /&gt;
** The task of the first lab is to pull code from the [https://github.com/aimacode/aima-python AIMA Python] project and look at the search.py file. You should be able to run the examples shown in the lecture.&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_2_1.pdf|Search 1]], [[meedia:Iti8600_2016_2_2.pdf|Search 2]]&lt;br /&gt;
&lt;br /&gt;
* [[meedia:Iti8600_2016_3.pdf|Beyond classical search]], [[meedia:Iti8600_2016_4.pdf|Constraint solving problems]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Knowledge representation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Knowledge representation homework 2017]]: first phase of building a simple [https://en.wikipedia.org/wiki/Question_answering question answering system]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful in-depth material for reading as free pdf-s:&lt;br /&gt;
* [http://www.sciencedirect.com/science/book/9781558609327 Knowledge Representation and Reasoning]&lt;br /&gt;
* [http://ii.fmph.uniba.sk/kri/KRhandbook.pdf Handbook of Knowledge Representation] &lt;br /&gt;
* Interesting to browse: [http://www.aaai.org/Library/KR/kr12contents.php recent conference proceedings]&lt;br /&gt;
* Interesting to browse: [http://www.cse.buffalo.edu/~shapiro/Courses/CSE563/Slides/krrSlides.pdf course materials], [http://web.stanford.edu/class/cs227/ course materials], [http://www.dis.uniroma1.it/~rosati/krst/ course materials]&lt;br /&gt;
* [http://cs.stanford.edu/~ermon/cs228/index.html course on probabilistic graphical models]&lt;br /&gt;
* [http://research.google.com/pubs/NaturalLanguageProcessing.html Google natural language processing publications]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Three subthemes in four lectures:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Intro, SQL, logic, RDF  ====&lt;br /&gt;
&lt;br /&gt;
Read these:&lt;br /&gt;
* First the [[meedia:Kr_lect_1a.ppt|Lecture presentation]]&lt;br /&gt;
* Second, the first half of the [https://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/ RDF primer]&lt;br /&gt;
* It is also useful to understand [https://en.wikipedia.org/wiki/Uniform_Resource_Identifier what URI is]&lt;br /&gt;
&lt;br /&gt;
Then read:&lt;br /&gt;
* [[meedia:Kr_lect_2a.ppt|Second lecture presentation: RDFS and more]]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Social_graph Facebook social graph]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Facebook_Graph_Search Facebook Graph Search]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Knowledge_Graph Google knowledge graph]&lt;br /&gt;
* And explore [http://schema.org/ schema org] and [http://schema.org/docs/schemas.html schemas]&lt;br /&gt;
&lt;br /&gt;
==== Natural language  ====&lt;br /&gt;
&lt;br /&gt;
* First the [[meedia:Kr_lect_3a.ppt|Lecture presentation]]&lt;br /&gt;
&lt;br /&gt;
We have a separate page with useful [https://courses.cs.ttu.ee/pages/Useful_NLP_links_and_notes links and notes on NLP]&lt;br /&gt;
&lt;br /&gt;
Also, try out and have a brief look at:&lt;br /&gt;
* Try out a very good [https://gate.d5.mpi-inf.mpg.de/webaida/ NER tagger AIDA online]. See also [http://jhoff.de/wp-content/papercite-data/pdf/hoffart-2015wk.pdf the dissertation] explaining how AIDA is built.&lt;br /&gt;
* Try out [http://smile-pos.appspot.com/ part-of-speech tagger]&lt;br /&gt;
* Have a quick look at Google [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html syntaxnet]&lt;br /&gt;
* Have a look at the excellent [http://www.nltk.org/book/ NLTK toolkit tutorial]&lt;br /&gt;
* Have a look at a tutorial for [http://www.lsi.upc.edu/~ageno/anlp/semanticParsing.pdf semantic parsing]&lt;br /&gt;
* Try out [http://text-processing.com/demo/sentiment/ sentiment analysis online]&lt;br /&gt;
* Have a brief look at a [https://lct-master.org/files/MullenSentimentCourseSlides.pdf detailed sentiment analysis tutorial]&lt;br /&gt;
&lt;br /&gt;
There is a large detailed page with [https://github.com/Kyubyong/nlp_tasks useful links on various NLP tasks].&lt;br /&gt;
&lt;br /&gt;
==== Representing uncertain knowledge  ====&lt;br /&gt;
&lt;br /&gt;
Lecture material:&lt;br /&gt;
* [[Media:Kr_lect_4a.pptx| Main part of the uncertainty lecture: beginning and end]] or as [[Media:Kr_lect_4a.pdf| pdf]]&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt|Probabilistic and fuzzy reasoning]] used during the middle part of the lecture.&lt;br /&gt;
&lt;br /&gt;
Additional material:&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Default_logic default logic Wikipedia on default logic]: must read to understand the subject better &lt;br /&gt;
* Try out [http://tweetyproject.org/w/delp/index.html a small nonmonotonic reasoning example]&lt;br /&gt;
* [[Media:Ijcai93.pdf|Formalizing belief and knowledge]] highly recommended, but not covered in the lecture.&lt;br /&gt;
* [https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/ Bayesian inference] recommended if you want to understand Bayesian probabilistic inference&lt;br /&gt;
* [http://plato.stanford.edu/entries/logic-nonmonotonic/ nonmonotonic logic]: long intro to main concepts &lt;br /&gt;
&lt;br /&gt;
You may want to try out the [http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic.&lt;br /&gt;
&lt;br /&gt;
Just found a cool project with java libraries [http://tweetyproject.org/ for different kinds of KR and reasoners].&lt;br /&gt;
&lt;br /&gt;
== Reasoning and deduction ==&lt;br /&gt;
&lt;br /&gt;
[[Automated reasoning homework 2017]]&lt;br /&gt;
&lt;br /&gt;
Deadline XXX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. No presentations accepted after 8. December.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Useful books for reading:&lt;br /&gt;
* T.Tamme, T.Tammet, R.Prank.  [http://dspace.utlib.ee/dspace/bitstream/handle/10062/24397/9985562313.pdf Loogika: mõtlemisest tõestamiseni. TÜ Kirjastus, 2002]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff] or older version as [http://www.lambda.ee/w/images/0/06/Geoffreasoningnotes.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
Test and compare simple propositional solver algorithms:&lt;br /&gt;
* [http://logictools.org logictools.org]&lt;br /&gt;
&lt;br /&gt;
Subthemes:&lt;br /&gt;
&lt;br /&gt;
==== Machine reasoning with first order logic ====&lt;br /&gt;
&lt;br /&gt;
[[Media:Kr_lect_5a.pptx| Lecture material as ppt]] or as [[Media:Kr_lect_5a.pdf| pdf]]&lt;br /&gt;
&lt;br /&gt;
Additional material: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- * [http://logictools.org/predicate.html one page about predicate logic provers] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- * [[Media:Resolution_intro.ppt|into for prop case]] --&amp;gt;&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Resolution_%28logic%29 wiki intro to pred logic case]&lt;br /&gt;
* [http://www.cs.miami.edu/home/geoff/Courses/CSC648-12S/Content/ coursebook by Geoff]&lt;br /&gt;
&amp;lt;!-- * [[Media:Geoffreasoningnotes.pdf|a book by Geoff]] created from course notes: best content IMHO despite weird formatting. --&amp;gt;&lt;br /&gt;
* [https://www.cs.unm.edu/~mccune/mace2/ Otter by McCune]: use it for experimenting.&lt;br /&gt;
* [[tiny examples of problems for otter]]&lt;br /&gt;
* [http://www.cs.miami.edu/~tptp/ TPTP] and [http://www.cs.miami.edu/~tptp/cgi-bin/SeeTPTP?Category=Problems Problems]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [http://lambda.ee/wiki/Prax3:_t%C3%B5estajatega_eksperimenteerimine_2015 hints for Otter]&lt;br /&gt;
* [http://lambda.ee/wiki/Prax4:_induktiivne_t%C3%B5estus_2015 inductive proof]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Propositional solvers ====&lt;br /&gt;
&lt;br /&gt;
* Read about [http://logictools.org/propositional.html propositional solvers]&lt;br /&gt;
* Use http://logictools.org/ to experiment with random problems of various sizes and solver algorithms&lt;br /&gt;
&lt;br /&gt;
==== SMT and various other solvers ====&lt;br /&gt;
&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Satisfiability_modulo_theories Intro to SMT from wikipedia]&lt;br /&gt;
* [http://fm.csl.sri.com/SSFT11/lecture1.pdf SMT tutorial slides] (8 first slides were shown in the lecture)&lt;br /&gt;
* [https://cs.ttu.ee/staff/juhan/z3 Z3 tutorial in Python, links to binaries etc] as compiled by Juhan Ernits.&lt;br /&gt;
* The official binary releases of Z3 now include Java support. The example is available [https://github.com/Z3Prover/z3/tree/master/examples/java here].&lt;br /&gt;
* The sample code built during the lecture is available in Moodle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== Interesting to try out: ====&lt;br /&gt;
&lt;br /&gt;
*[http://www.dlvsystem.com dlv system] for [https://en.wikipedia.org/wiki/Answer_set_programming answer set programming]: usable for implementing default logic&lt;br /&gt;
Things we looked at before:&lt;br /&gt;
&lt;br /&gt;
* [[Media:Uncertain_prob_fuzzy.ppt‎|Uncertain_prob_fuzzy.ppt‎]] Intro to probabilistic and fuzzy logic.&lt;br /&gt;
* [[Media:Vienna_tanel.pdf|Vienna_tanel_2.pdf]] Additional examples and combining.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6037</id>
		<title>Automated reasoning homework 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6037"/>
		<updated>2017-11-03T10:21:48Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* What you have to do */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Automated reasoning homework as a second part of a two-phase project ==&lt;br /&gt;
&lt;br /&gt;
The goal of this homework is &lt;br /&gt;
* to learn about representing knowledge and rules in logic&lt;br /&gt;
* experimenting with an automated reasoner&lt;br /&gt;
* experimenting with integrating external knowledge bases with your rdf-style data&lt;br /&gt;
&lt;br /&gt;
The main concrete task is to add some common sense rules to the rdf-style output of the first phase of the project and then ask and prove some example queries using an automated reasoner. This is required for passing the lab.&lt;br /&gt;
&lt;br /&gt;
The secondary (non-obligatory) concrete task  is to integrate an external knowledge base like [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] with your rdf-style output and be able to answer queries with the added help of the external knowledge base.&lt;br /&gt;
&lt;br /&gt;
The third extra fancy (totally non-obligatory) task is to process restricted English queries, translating these to Otter and outputting only the English-style short answer.&lt;br /&gt;
&lt;br /&gt;
As in the previous lab, for the lab defence/grading you will have to make a short presentation about your results with examples you manage to handle and the examples where you cannot.&lt;br /&gt;
&lt;br /&gt;
== Administrative ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. Presentation afer this deadline will give half of the points. Absolute deadline is 8. December: no submissions will be accepted after that,.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Work should be submitted to git, latest one day before deadline.&lt;br /&gt;
&lt;br /&gt;
The groups are same as for the first phase.&lt;br /&gt;
&lt;br /&gt;
== What you have to do ==&lt;br /&gt;
&lt;br /&gt;
First of all, by default we will use the [http://www.cs.unm.edu/~mccune/otter/ otter prover]. Download it and try out some example problems in the otter zip file. Useful examples for the lab are given below, in the section &amp;quot;Examples to use as a starting point&amp;quot;.   Have a brief look at the [http://www.cs.unm.edu/~mccune/otter/Otter33.pdf otter manual] as well. We note that newer reasoners are allowed as well, but using these would be more complex.&lt;br /&gt;
&lt;br /&gt;
Suppose you have a  triplet like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   http://en.wikipedia.org/wiki/china],&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the list [ http://en.wikipedia.org/wiki/Barack_Obama, http://en.wikipedia.org/wiki/china ] means that we do not know&lt;br /&gt;
which interpretation is the correct one (the original word was like he,this,she,it,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, pick just one interpretation like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography (ontology: like a taxonomy, can be a bit more complex)&lt;br /&gt;
* pose a question in otter format&lt;br /&gt;
* run otter to find answer&lt;br /&gt;
&lt;br /&gt;
If you manage to do that, you will pass.&lt;br /&gt;
&lt;br /&gt;
Next, a bit fancier task you may take up (this is not required for passing, but will award extra points):&lt;br /&gt;
&lt;br /&gt;
Run a loop where you try out different interpretations of he,this,she,it,... and for &amp;lt;b&amp;gt;each&amp;lt;/b&amp;gt; interpretation in the list:&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography&lt;br /&gt;
* check whether otter generates a contradiction: if yes, then this is probably a wrong interpretation, since it does not match common sense rules.&lt;br /&gt;
&lt;br /&gt;
== Integrating with the external knowledge base ==&lt;br /&gt;
&lt;br /&gt;
Instead of relying only on your own handmade rules and facts stated in your processed English, you could &lt;br /&gt;
use [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] to get a large amount of real-world facts and a set of relevant rules automatically.&lt;br /&gt;
&lt;br /&gt;
This is what you could really get from conceptnet and wordnet and dbpedia: the main purpose why these databases/systems exist.&lt;br /&gt;
&lt;br /&gt;
This is not required to pass the lab, but if you manage to do it (ie. use some of these systems for creating relevant rules and facts automatically) we&amp;#039;ll award you more points!&lt;br /&gt;
&lt;br /&gt;
How to integrate dbpedia or conceptnet?&lt;br /&gt;
&lt;br /&gt;
* First download the large textual representation in json or some other easily processable format: investigate different download options and try to find relevant ones which you can understand and work with.&lt;br /&gt;
* Second, write a program which converts this representation to a data/rule file in the otter syntax, using the same conventions and wrapping predicates as you did while processing the English text.&lt;br /&gt;
* When you create a final query file for Otter, you have to add the relevant rows in the created data/rule file to the Otter query file. Since Otter does not manage working with a huge input file, first filter out relevant facts/rule rows. What are the relevant rows? A simple approach is to take these rows which contain uri-s in your own data/rule set created while processing the English text.&lt;br /&gt;
&lt;br /&gt;
== Optional extra fancy task ==&lt;br /&gt;
&lt;br /&gt;
Instead of posing otter-format questions and printing semi-raw results from Otter, you could let the human user pose restricted English questions like &amp;quot;Is Tallinn a city?&amp;quot;, &amp;quot;What is Puise?&amp;quot;, &amp;quot;What is the population of Tallinn?&amp;quot;, &amp;quot;Where is lake X&amp;quot; with a rather simple, limited form, with a structure like &amp;quot;is X a Y&amp;quot;, &amp;quot;what is X&amp;quot;, &amp;quot;whas is X of Y&amp;quot; &amp;quot;where is X&amp;quot; etc and translate these to Otter queries. The resulting answer could then be printed out as a plain fact like &amp;quot;Yes&amp;quot;, &amp;quot;Farm&amp;quot;, &amp;quot;460.000&amp;quot;, &amp;quot;Estonia&amp;quot; etc.&lt;br /&gt;
&lt;br /&gt;
Again, this is not required to pass the lab, but if you manage to do it we&amp;#039;ll award you more points!&lt;br /&gt;
&lt;br /&gt;
== Examples to use as a starting point ==&lt;br /&gt;
&lt;br /&gt;
The following examples are in the Otter format: the first two are in the clause syntax and are similar to what&lt;br /&gt;
you are expected to in the third lab. The last one demonstrates formula syntax, calculation and probabilities (kind of).&lt;br /&gt;
&lt;br /&gt;
* [[Derive simple information about Obama]] &lt;br /&gt;
* [[Ask a query about Obama]]&lt;br /&gt;
* [[Output of first lab converted to second lab]] with a few rules added: can derive that Hyatt has type hotel and Obama is rich. [[Here is otter output of this example]]&lt;br /&gt;
* [[A question posed: find a mortal in the text]]: we just add &amp;lt;tt&amp;gt;-rdf(X,&amp;quot;id:type&amp;quot;,&amp;quot;mortal&amp;quot;) | $ans(X).&amp;lt;/tt&amp;gt; to the facts (i.e. a negated query with a variable and $ans to capture a suitable value for X.&lt;br /&gt;
* [[Probabilities and web scraping]] Determine the type of objects using information from a web page and probability-like measures.&lt;br /&gt;
* [[Example with weather, dates and trust]]&lt;br /&gt;
&lt;br /&gt;
== How to create the Otter file and use the output ==&lt;br /&gt;
&lt;br /&gt;
* Split the example Otter file like obama1.txt into the initial part containing the strategy selection etc and the final part containing end_of_list.&lt;br /&gt;
&lt;br /&gt;
* Create the rdf data in Otter format automatically from the output of your parser in the previous lab.&lt;br /&gt;
&lt;br /&gt;
* In case you pose a question, add the negated question in the Otter format.&lt;br /&gt;
&lt;br /&gt;
* Compile the full intput file by appending these parts into a full input file myinput.txt:&lt;br /&gt;
** the prefix part, &lt;br /&gt;
** the automatically created rdf data in Otter format, &lt;br /&gt;
** the (optional) question in Otter format, in the negated form&lt;br /&gt;
** the commonsense rules and facts: either static handmade rules or rules/facts created automatically from conceptnet/wordnet/dbpedia&lt;br /&gt;
** the short final part ie end_of_list&lt;br /&gt;
&lt;br /&gt;
* Run otter like otter &amp;lt; myinput.txt &amp;gt; myoutput.txt&lt;br /&gt;
&lt;br /&gt;
* Process the myoutput.txt, filtering out derived stuff and/or determine whether the output contains the word PROOF&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Example code ==&lt;br /&gt;
&lt;br /&gt;
[[lab 2 example code converted to give]] as a result the [[Output of first lab converted to second lab]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6036</id>
		<title>Automated reasoning homework 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6036"/>
		<updated>2017-11-03T10:19:58Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Automated reasoning homework as a second part of a two-phase project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Automated reasoning homework as a second part of a two-phase project ==&lt;br /&gt;
&lt;br /&gt;
The goal of this homework is &lt;br /&gt;
* to learn about representing knowledge and rules in logic&lt;br /&gt;
* experimenting with an automated reasoner&lt;br /&gt;
* experimenting with integrating external knowledge bases with your rdf-style data&lt;br /&gt;
&lt;br /&gt;
The main concrete task is to add some common sense rules to the rdf-style output of the first phase of the project and then ask and prove some example queries using an automated reasoner. This is required for passing the lab.&lt;br /&gt;
&lt;br /&gt;
The secondary (non-obligatory) concrete task  is to integrate an external knowledge base like [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] with your rdf-style output and be able to answer queries with the added help of the external knowledge base.&lt;br /&gt;
&lt;br /&gt;
The third extra fancy (totally non-obligatory) task is to process restricted English queries, translating these to Otter and outputting only the English-style short answer.&lt;br /&gt;
&lt;br /&gt;
As in the previous lab, for the lab defence/grading you will have to make a short presentation about your results with examples you manage to handle and the examples where you cannot.&lt;br /&gt;
&lt;br /&gt;
== Administrative ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. Presentation afer this deadline will give half of the points. Absolute deadline is 8. December: no submissions will be accepted after that,.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Work should be submitted to git, latest one day before deadline.&lt;br /&gt;
&lt;br /&gt;
The groups are same as for the first phase.&lt;br /&gt;
&lt;br /&gt;
== What you have to do ==&lt;br /&gt;
&lt;br /&gt;
First of all, by default we will use the [http://www.cs.unm.edu/~mccune/otter/ otter prover]. Download it and try out some example problems in the otter zip file. Useful examples for the lab are given below, in the section &amp;quot;Examples to use as a starting point&amp;quot;.   Have a look at the otter manual as well. We note that newer reasoners are allowed as well, but using these would be more complex.&lt;br /&gt;
&lt;br /&gt;
Suppose you have a  triplet like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   http://en.wikipedia.org/wiki/china],&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the list [ http://en.wikipedia.org/wiki/Barack_Obama, http://en.wikipedia.org/wiki/china ] means that we do not know&lt;br /&gt;
which interpretation is the correct one (the original word was like he,this,she,it,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, pick just one interpretation like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography (ontology: like a taxonomy, can be a bit more complex)&lt;br /&gt;
* pose a question in otter format&lt;br /&gt;
* run otter to find answer&lt;br /&gt;
&lt;br /&gt;
If you manage to do that, you will pass.&lt;br /&gt;
&lt;br /&gt;
Next, a bit fancier task you may take up (this is not required for passing, but will award extra points):&lt;br /&gt;
&lt;br /&gt;
Run a loop where you try out different interpretations of he,this,she,it,... and for &amp;lt;b&amp;gt;each&amp;lt;/b&amp;gt; interpretation in the list:&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography&lt;br /&gt;
* check whether otter generates a contradiction: if yes, then this is probably a wrong interpretation, since it does not match common sense rules.&lt;br /&gt;
&lt;br /&gt;
== Integrating with the external knowledge base ==&lt;br /&gt;
&lt;br /&gt;
Instead of relying only on your own handmade rules and facts stated in your processed English, you could &lt;br /&gt;
use [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] to get a large amount of real-world facts and a set of relevant rules automatically.&lt;br /&gt;
&lt;br /&gt;
This is what you could really get from conceptnet and wordnet and dbpedia: the main purpose why these databases/systems exist.&lt;br /&gt;
&lt;br /&gt;
This is not required to pass the lab, but if you manage to do it (ie. use some of these systems for creating relevant rules and facts automatically) we&amp;#039;ll award you more points!&lt;br /&gt;
&lt;br /&gt;
How to integrate dbpedia or conceptnet?&lt;br /&gt;
&lt;br /&gt;
* First download the large textual representation in json or some other easily processable format: investigate different download options and try to find relevant ones which you can understand and work with.&lt;br /&gt;
* Second, write a program which converts this representation to a data/rule file in the otter syntax, using the same conventions and wrapping predicates as you did while processing the English text.&lt;br /&gt;
* When you create a final query file for Otter, you have to add the relevant rows in the created data/rule file to the Otter query file. Since Otter does not manage working with a huge input file, first filter out relevant facts/rule rows. What are the relevant rows? A simple approach is to take these rows which contain uri-s in your own data/rule set created while processing the English text.&lt;br /&gt;
&lt;br /&gt;
== Optional extra fancy task ==&lt;br /&gt;
&lt;br /&gt;
Instead of posing otter-format questions and printing semi-raw results from Otter, you could let the human user pose restricted English questions like &amp;quot;Is Tallinn a city?&amp;quot;, &amp;quot;What is Puise?&amp;quot;, &amp;quot;What is the population of Tallinn?&amp;quot;, &amp;quot;Where is lake X&amp;quot; with a rather simple, limited form, with a structure like &amp;quot;is X a Y&amp;quot;, &amp;quot;what is X&amp;quot;, &amp;quot;whas is X of Y&amp;quot; &amp;quot;where is X&amp;quot; etc and translate these to Otter queries. The resulting answer could then be printed out as a plain fact like &amp;quot;Yes&amp;quot;, &amp;quot;Farm&amp;quot;, &amp;quot;460.000&amp;quot;, &amp;quot;Estonia&amp;quot; etc.&lt;br /&gt;
&lt;br /&gt;
Again, this is not required to pass the lab, but if you manage to do it we&amp;#039;ll award you more points!&lt;br /&gt;
&lt;br /&gt;
== Examples to use as a starting point ==&lt;br /&gt;
&lt;br /&gt;
The following examples are in the Otter format: the first two are in the clause syntax and are similar to what&lt;br /&gt;
you are expected to in the third lab. The last one demonstrates formula syntax, calculation and probabilities (kind of).&lt;br /&gt;
&lt;br /&gt;
* [[Derive simple information about Obama]] &lt;br /&gt;
* [[Ask a query about Obama]]&lt;br /&gt;
* [[Output of first lab converted to second lab]] with a few rules added: can derive that Hyatt has type hotel and Obama is rich. [[Here is otter output of this example]]&lt;br /&gt;
* [[A question posed: find a mortal in the text]]: we just add &amp;lt;tt&amp;gt;-rdf(X,&amp;quot;id:type&amp;quot;,&amp;quot;mortal&amp;quot;) | $ans(X).&amp;lt;/tt&amp;gt; to the facts (i.e. a negated query with a variable and $ans to capture a suitable value for X.&lt;br /&gt;
* [[Probabilities and web scraping]] Determine the type of objects using information from a web page and probability-like measures.&lt;br /&gt;
* [[Example with weather, dates and trust]]&lt;br /&gt;
&lt;br /&gt;
== How to create the Otter file and use the output ==&lt;br /&gt;
&lt;br /&gt;
* Split the example Otter file like obama1.txt into the initial part containing the strategy selection etc and the final part containing end_of_list.&lt;br /&gt;
&lt;br /&gt;
* Create the rdf data in Otter format automatically from the output of your parser in the previous lab.&lt;br /&gt;
&lt;br /&gt;
* In case you pose a question, add the negated question in the Otter format.&lt;br /&gt;
&lt;br /&gt;
* Compile the full intput file by appending these parts into a full input file myinput.txt:&lt;br /&gt;
** the prefix part, &lt;br /&gt;
** the automatically created rdf data in Otter format, &lt;br /&gt;
** the (optional) question in Otter format, in the negated form&lt;br /&gt;
** the commonsense rules and facts: either static handmade rules or rules/facts created automatically from conceptnet/wordnet/dbpedia&lt;br /&gt;
** the short final part ie end_of_list&lt;br /&gt;
&lt;br /&gt;
* Run otter like otter &amp;lt; myinput.txt &amp;gt; myoutput.txt&lt;br /&gt;
&lt;br /&gt;
* Process the myoutput.txt, filtering out derived stuff and/or determine whether the output contains the word PROOF&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Example code ==&lt;br /&gt;
&lt;br /&gt;
[[lab 2 example code converted to give]] as a result the [[Output of first lab converted to second lab]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6035</id>
		<title>Automated reasoning homework 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6035"/>
		<updated>2017-11-03T10:19:37Z</updated>

		<summary type="html">&lt;p&gt;Tanel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Automated reasoning homework as a second part of a two-phase project ==&lt;br /&gt;
&lt;br /&gt;
The goal of this homework is &lt;br /&gt;
* to learn about representing knowledge and rules in logic&lt;br /&gt;
* experimenting with an automated reasoner&lt;br /&gt;
* experimenting with integrating external knowledge bases with your rdf-style data&lt;br /&gt;
&lt;br /&gt;
The main concrete task is to add some common sense rules to the rdf-style output of the first phase of the project and then ask and prove some example queries using an automated reasoner.&lt;br /&gt;
&lt;br /&gt;
The secondary (non-obligatory) concrete task  is to integrate an external knowledge base like [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] with your rdf-style output and be able to answer queries with the added help of the external knowledge base.&lt;br /&gt;
&lt;br /&gt;
The third extra fancy (totally non-obligatory) task is to process restricted English queries, translating these to Otter and outputting only the English-style short answer.&lt;br /&gt;
&lt;br /&gt;
As in the previous lab, for the lab defence/grading you will have to make a short presentation about your results with examples you manage to handle and the examples where you cannot.&lt;br /&gt;
&lt;br /&gt;
== Administrative ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. Presentation afer this deadline will give half of the points. Absolute deadline is 8. December: no submissions will be accepted after that,.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Work should be submitted to git, latest one day before deadline.&lt;br /&gt;
&lt;br /&gt;
The groups are same as for the first phase.&lt;br /&gt;
&lt;br /&gt;
== What you have to do ==&lt;br /&gt;
&lt;br /&gt;
First of all, by default we will use the [http://www.cs.unm.edu/~mccune/otter/ otter prover]. Download it and try out some example problems in the otter zip file. Useful examples for the lab are given below, in the section &amp;quot;Examples to use as a starting point&amp;quot;.   Have a look at the otter manual as well. We note that newer reasoners are allowed as well, but using these would be more complex.&lt;br /&gt;
&lt;br /&gt;
Suppose you have a  triplet like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   http://en.wikipedia.org/wiki/china],&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the list [ http://en.wikipedia.org/wiki/Barack_Obama, http://en.wikipedia.org/wiki/china ] means that we do not know&lt;br /&gt;
which interpretation is the correct one (the original word was like he,this,she,it,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, pick just one interpretation like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography (ontology: like a taxonomy, can be a bit more complex)&lt;br /&gt;
* pose a question in otter format&lt;br /&gt;
* run otter to find answer&lt;br /&gt;
&lt;br /&gt;
If you manage to do that, you will pass.&lt;br /&gt;
&lt;br /&gt;
Next, a bit fancier task you may take up (this is not required for passing, but will award extra points):&lt;br /&gt;
&lt;br /&gt;
Run a loop where you try out different interpretations of he,this,she,it,... and for &amp;lt;b&amp;gt;each&amp;lt;/b&amp;gt; interpretation in the list:&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography&lt;br /&gt;
* check whether otter generates a contradiction: if yes, then this is probably a wrong interpretation, since it does not match common sense rules.&lt;br /&gt;
&lt;br /&gt;
== Integrating with the external knowledge base ==&lt;br /&gt;
&lt;br /&gt;
Instead of relying only on your own handmade rules and facts stated in your processed English, you could &lt;br /&gt;
use [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] to get a large amount of real-world facts and a set of relevant rules automatically.&lt;br /&gt;
&lt;br /&gt;
This is what you could really get from conceptnet and wordnet and dbpedia: the main purpose why these databases/systems exist.&lt;br /&gt;
&lt;br /&gt;
This is not required to pass the lab, but if you manage to do it (ie. use some of these systems for creating relevant rules and facts automatically) we&amp;#039;ll award you more points!&lt;br /&gt;
&lt;br /&gt;
How to integrate dbpedia or conceptnet?&lt;br /&gt;
&lt;br /&gt;
* First download the large textual representation in json or some other easily processable format: investigate different download options and try to find relevant ones which you can understand and work with.&lt;br /&gt;
* Second, write a program which converts this representation to a data/rule file in the otter syntax, using the same conventions and wrapping predicates as you did while processing the English text.&lt;br /&gt;
* When you create a final query file for Otter, you have to add the relevant rows in the created data/rule file to the Otter query file. Since Otter does not manage working with a huge input file, first filter out relevant facts/rule rows. What are the relevant rows? A simple approach is to take these rows which contain uri-s in your own data/rule set created while processing the English text.&lt;br /&gt;
&lt;br /&gt;
== Optional extra fancy task ==&lt;br /&gt;
&lt;br /&gt;
Instead of posing otter-format questions and printing semi-raw results from Otter, you could let the human user pose restricted English questions like &amp;quot;Is Tallinn a city?&amp;quot;, &amp;quot;What is Puise?&amp;quot;, &amp;quot;What is the population of Tallinn?&amp;quot;, &amp;quot;Where is lake X&amp;quot; with a rather simple, limited form, with a structure like &amp;quot;is X a Y&amp;quot;, &amp;quot;what is X&amp;quot;, &amp;quot;whas is X of Y&amp;quot; &amp;quot;where is X&amp;quot; etc and translate these to Otter queries. The resulting answer could then be printed out as a plain fact like &amp;quot;Yes&amp;quot;, &amp;quot;Farm&amp;quot;, &amp;quot;460.000&amp;quot;, &amp;quot;Estonia&amp;quot; etc.&lt;br /&gt;
&lt;br /&gt;
Again, this is not required to pass the lab, but if you manage to do it we&amp;#039;ll award you more points!&lt;br /&gt;
&lt;br /&gt;
== Examples to use as a starting point ==&lt;br /&gt;
&lt;br /&gt;
The following examples are in the Otter format: the first two are in the clause syntax and are similar to what&lt;br /&gt;
you are expected to in the third lab. The last one demonstrates formula syntax, calculation and probabilities (kind of).&lt;br /&gt;
&lt;br /&gt;
* [[Derive simple information about Obama]] &lt;br /&gt;
* [[Ask a query about Obama]]&lt;br /&gt;
* [[Output of first lab converted to second lab]] with a few rules added: can derive that Hyatt has type hotel and Obama is rich. [[Here is otter output of this example]]&lt;br /&gt;
* [[A question posed: find a mortal in the text]]: we just add &amp;lt;tt&amp;gt;-rdf(X,&amp;quot;id:type&amp;quot;,&amp;quot;mortal&amp;quot;) | $ans(X).&amp;lt;/tt&amp;gt; to the facts (i.e. a negated query with a variable and $ans to capture a suitable value for X.&lt;br /&gt;
* [[Probabilities and web scraping]] Determine the type of objects using information from a web page and probability-like measures.&lt;br /&gt;
* [[Example with weather, dates and trust]]&lt;br /&gt;
&lt;br /&gt;
== How to create the Otter file and use the output ==&lt;br /&gt;
&lt;br /&gt;
* Split the example Otter file like obama1.txt into the initial part containing the strategy selection etc and the final part containing end_of_list.&lt;br /&gt;
&lt;br /&gt;
* Create the rdf data in Otter format automatically from the output of your parser in the previous lab.&lt;br /&gt;
&lt;br /&gt;
* In case you pose a question, add the negated question in the Otter format.&lt;br /&gt;
&lt;br /&gt;
* Compile the full intput file by appending these parts into a full input file myinput.txt:&lt;br /&gt;
** the prefix part, &lt;br /&gt;
** the automatically created rdf data in Otter format, &lt;br /&gt;
** the (optional) question in Otter format, in the negated form&lt;br /&gt;
** the commonsense rules and facts: either static handmade rules or rules/facts created automatically from conceptnet/wordnet/dbpedia&lt;br /&gt;
** the short final part ie end_of_list&lt;br /&gt;
&lt;br /&gt;
* Run otter like otter &amp;lt; myinput.txt &amp;gt; myoutput.txt&lt;br /&gt;
&lt;br /&gt;
* Process the myoutput.txt, filtering out derived stuff and/or determine whether the output contains the word PROOF&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Example code ==&lt;br /&gt;
&lt;br /&gt;
[[lab 2 example code converted to give]] as a result the [[Output of first lab converted to second lab]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6034</id>
		<title>Automated reasoning homework 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6034"/>
		<updated>2017-11-03T10:12:17Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* What you have to do */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Automated reasoning homework as a second part of a two-phase project ==&lt;br /&gt;
&lt;br /&gt;
The goal of this homework is &lt;br /&gt;
* to learn about representing knowledge and rules in logic&lt;br /&gt;
* experimenting with an automated reasoner&lt;br /&gt;
* experimenting with integrating external knowledge bases with your rdf-style data&lt;br /&gt;
&lt;br /&gt;
The main concrete task is to add some common sense rules to the rdf-style output of the first phase of the project and then ask and prove some example queries using an automated reasoner.&lt;br /&gt;
&lt;br /&gt;
The secondary concrete task is to integrate an external knowledge base like [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] with your rdf-style output and be able to answer queries with the added help of the external knowledge base.&lt;br /&gt;
&lt;br /&gt;
As in the previous lab, for the lab defence/grading you will have to make a short presentation about your results with examples you manage to handle and the examples where you cannot.&lt;br /&gt;
&lt;br /&gt;
== Administrative ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. Presentation afer this deadline will give half of the points. Absolute deadline is 8. December: no submissions will be accepted after that,.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Work should be submitted to git, latest one day before deadline.&lt;br /&gt;
&lt;br /&gt;
The groups are same as for the first phase.&lt;br /&gt;
&lt;br /&gt;
== What you have to do ==&lt;br /&gt;
&lt;br /&gt;
First of all, by default we will use the [http://www.cs.unm.edu/~mccune/otter/ otter prover]. Download it and try out some example problems in the otter zip file. Useful examples for the lab are given below, in the section &amp;quot;Examples to use as a starting point&amp;quot;.   Have a look at the otter manual as well. We note that newer reasoners are allowed as well, but using these would be more complex.&lt;br /&gt;
&lt;br /&gt;
Suppose you have a  triplet like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   http://en.wikipedia.org/wiki/china],&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the list [ http://en.wikipedia.org/wiki/Barack_Obama, http://en.wikipedia.org/wiki/china ] means that we do not know&lt;br /&gt;
which interpretation is the correct one (the original word was like he,this,she,it,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, pick just one interpretation like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography (ontology: like a taxonomy, can be a bit more complex)&lt;br /&gt;
* pose a question in otter format&lt;br /&gt;
* run otter to find answer&lt;br /&gt;
&lt;br /&gt;
If you manage to do that, you will pass.&lt;br /&gt;
&lt;br /&gt;
Next, a bit fancier task you may take up (this is not required for passing, but will award extra points):&lt;br /&gt;
&lt;br /&gt;
Run a loop where you try out different interpretations of he,this,she,it,... and for &amp;lt;b&amp;gt;each&amp;lt;/b&amp;gt; interpretation in the list:&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography&lt;br /&gt;
* check whether otter generates a contradiction: if yes, then this is probably a wrong interpretation, since it does not match common sense rules.&lt;br /&gt;
&lt;br /&gt;
== Integrating with the external knowledge base ==&lt;br /&gt;
&lt;br /&gt;
Instead of relying only on your own handmade rules and facts stated in your processed English, you could &lt;br /&gt;
use [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] to get a large amount of real-world facts and a set of relevant rules automatically.&lt;br /&gt;
&lt;br /&gt;
This is what you could really get from conceptnet and wordnet and dbpedia: the main purpose why these databases/systems exist.&lt;br /&gt;
&lt;br /&gt;
This is not required to pass the lab, but if you manage to do it (ie. use some of these systems for creating relevant rules and facts automatically) we&amp;#039;ll award you more points!&lt;br /&gt;
&lt;br /&gt;
How to integrate dbpedia or conceptnet?&lt;br /&gt;
&lt;br /&gt;
* First download the large textual representation in json or some other easily processable format: investigate different download options and try to find relevant ones which you can understand and work with.&lt;br /&gt;
* Second, write a program which converts this representation to a data/rule file in the otter syntax, using the same conventions and wrapping predicates as you did while processing the English text.&lt;br /&gt;
* When you create a final query file for Otter, you have to add the relevant rows in the created data/rule file to the Otter query file. Since Otter does not manage working with a huge input file, first filter out relevant facts/rule rows. What are the relevant rows? A simple approach is to take these rows which contain uri-s in your own data/rule set created while processing the English text.&lt;br /&gt;
&lt;br /&gt;
== Examples to use as a starting point ==&lt;br /&gt;
&lt;br /&gt;
The following examples are in the Otter format: the first two are in the clause syntax and are similar to what&lt;br /&gt;
you are expected to in the third lab. The last one demonstrates formula syntax, calculation and probabilities (kind of).&lt;br /&gt;
&lt;br /&gt;
* [[Derive simple information about Obama]] &lt;br /&gt;
* [[Ask a query about Obama]]&lt;br /&gt;
* [[Output of first lab converted to second lab]] with a few rules added: can derive that Hyatt has type hotel and Obama is rich. [[Here is otter output of this example]]&lt;br /&gt;
* [[A question posed: find a mortal in the text]]: we just add &amp;lt;tt&amp;gt;-rdf(X,&amp;quot;id:type&amp;quot;,&amp;quot;mortal&amp;quot;) | $ans(X).&amp;lt;/tt&amp;gt; to the facts (i.e. a negated query with a variable and $ans to capture a suitable value for X.&lt;br /&gt;
* [[Probabilities and web scraping]] Determine the type of objects using information from a web page and probability-like measures.&lt;br /&gt;
* [[Example with weather, dates and trust]]&lt;br /&gt;
&lt;br /&gt;
== How to create the Otter file and use the output ==&lt;br /&gt;
&lt;br /&gt;
* Split the example Otter file like obama1.txt into the initial part containing the strategy selection etc and the final part containing end_of_list.&lt;br /&gt;
&lt;br /&gt;
* Create the rdf data in Otter format automatically from the output of your parser in the previous lab.&lt;br /&gt;
&lt;br /&gt;
* In case you pose a question, add the negated question in the Otter format.&lt;br /&gt;
&lt;br /&gt;
* Compile the full intput file by appending these parts into a full input file myinput.txt:&lt;br /&gt;
** the prefix part, &lt;br /&gt;
** the automatically created rdf data in Otter format, &lt;br /&gt;
** the (optional) question in Otter format, in the negated form&lt;br /&gt;
** the commonsense rules and facts: either static handmade rules or rules/facts created automatically from conceptnet/wordnet/dbpedia&lt;br /&gt;
** the short final part ie end_of_list&lt;br /&gt;
&lt;br /&gt;
* Run otter like otter &amp;lt; myinput.txt &amp;gt; myoutput.txt&lt;br /&gt;
&lt;br /&gt;
* Process the myoutput.txt, filtering out derived stuff and/or determine whether the output contains the word PROOF&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Example code ==&lt;br /&gt;
&lt;br /&gt;
[[lab 2 example code converted to give]] as a result the [[Output of first lab converted to second lab]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6033</id>
		<title>Automated reasoning homework 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6033"/>
		<updated>2017-11-03T10:10:30Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Automated reasoning homework as a second part of a two-phase project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Automated reasoning homework as a second part of a two-phase project ==&lt;br /&gt;
&lt;br /&gt;
The goal of this homework is &lt;br /&gt;
* to learn about representing knowledge and rules in logic&lt;br /&gt;
* experimenting with an automated reasoner&lt;br /&gt;
* experimenting with integrating external knowledge bases with your rdf-style data&lt;br /&gt;
&lt;br /&gt;
The main concrete task is to add some common sense rules to the rdf-style output of the first phase of the project and then ask and prove some example queries using an automated reasoner.&lt;br /&gt;
&lt;br /&gt;
The secondary concrete task is to integrate an external knowledge base like [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] with your rdf-style output and be able to answer queries with the added help of the external knowledge base.&lt;br /&gt;
&lt;br /&gt;
As in the previous lab, for the lab defence/grading you will have to make a short presentation about your results with examples you manage to handle and the examples where you cannot.&lt;br /&gt;
&lt;br /&gt;
== Administrative ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. Presentation afer this deadline will give half of the points. Absolute deadline is 8. December: no submissions will be accepted after that,.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Work should be submitted to git, latest one day before deadline.&lt;br /&gt;
&lt;br /&gt;
The groups are same as for the first phase.&lt;br /&gt;
&lt;br /&gt;
== What you have to do ==&lt;br /&gt;
&lt;br /&gt;
First of all, by default we will use the [http://www.cs.unm.edu/~mccune/otter/ otter prover]. Download it and try out some example problems in the otter zip file. Have a look at the manual as well. Newer provers are also allowed, but using these would be more complex.&lt;br /&gt;
&lt;br /&gt;
Suppose you have a  triplet like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   http://en.wikipedia.org/wiki/china],&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the list [ http://en.wikipedia.org/wiki/Barack_Obama, http://en.wikipedia.org/wiki/china ] means that we do not know&lt;br /&gt;
which interpretation is the correct one (the original word was like he,this,she,it,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, pick just one interpretation like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography (ontology: like a taxonomy, can be a bit more complex)&lt;br /&gt;
* pose a question in otter format&lt;br /&gt;
* run otter to find answer&lt;br /&gt;
&lt;br /&gt;
If you manage to do that, you will pass.&lt;br /&gt;
&lt;br /&gt;
Next, a bit fancier task you may take up (this is not required for passing, but will award extra points):&lt;br /&gt;
&lt;br /&gt;
Run a loop where you try out different interpretations of he,this,she,it,... and for &amp;lt;b&amp;gt;each&amp;lt;/b&amp;gt; interpretation in the list:&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography&lt;br /&gt;
* check whether otter generates a contradiction: if yes, then this is probably a wrong interpretation, since it does not match common sense rules.&lt;br /&gt;
&lt;br /&gt;
== Integrating with the external knowledge base ==&lt;br /&gt;
&lt;br /&gt;
Instead of relying only on your own handmade rules and facts stated in your processed English, you could &lt;br /&gt;
use [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] to get a large amount of real-world facts and a set of relevant rules automatically.&lt;br /&gt;
&lt;br /&gt;
This is what you could really get from conceptnet and wordnet and dbpedia: the main purpose why these databases/systems exist.&lt;br /&gt;
&lt;br /&gt;
This is not required to pass the lab, but if you manage to do it (ie. use some of these systems for creating relevant rules and facts automatically) we&amp;#039;ll award you more points!&lt;br /&gt;
&lt;br /&gt;
How to integrate dbpedia or conceptnet?&lt;br /&gt;
&lt;br /&gt;
* First download the large textual representation in json or some other easily processable format: investigate different download options and try to find relevant ones which you can understand and work with.&lt;br /&gt;
* Second, write a program which converts this representation to a data/rule file in the otter syntax, using the same conventions and wrapping predicates as you did while processing the English text.&lt;br /&gt;
* When you create a final query file for Otter, you have to add the relevant rows in the created data/rule file to the Otter query file. Since Otter does not manage working with a huge input file, first filter out relevant facts/rule rows. What are the relevant rows? A simple approach is to take these rows which contain uri-s in your own data/rule set created while processing the English text.&lt;br /&gt;
&lt;br /&gt;
== Examples to use as a starting point ==&lt;br /&gt;
&lt;br /&gt;
The following examples are in the Otter format: the first two are in the clause syntax and are similar to what&lt;br /&gt;
you are expected to in the third lab. The last one demonstrates formula syntax, calculation and probabilities (kind of).&lt;br /&gt;
&lt;br /&gt;
* [[Derive simple information about Obama]] &lt;br /&gt;
* [[Ask a query about Obama]]&lt;br /&gt;
* [[Output of first lab converted to second lab]] with a few rules added: can derive that Hyatt has type hotel and Obama is rich. [[Here is otter output of this example]]&lt;br /&gt;
* [[A question posed: find a mortal in the text]]: we just add &amp;lt;tt&amp;gt;-rdf(X,&amp;quot;id:type&amp;quot;,&amp;quot;mortal&amp;quot;) | $ans(X).&amp;lt;/tt&amp;gt; to the facts (i.e. a negated query with a variable and $ans to capture a suitable value for X.&lt;br /&gt;
* [[Probabilities and web scraping]] Determine the type of objects using information from a web page and probability-like measures.&lt;br /&gt;
* [[Example with weather, dates and trust]]&lt;br /&gt;
&lt;br /&gt;
== How to create the Otter file and use the output ==&lt;br /&gt;
&lt;br /&gt;
* Split the example Otter file like obama1.txt into the initial part containing the strategy selection etc and the final part containing end_of_list.&lt;br /&gt;
&lt;br /&gt;
* Create the rdf data in Otter format automatically from the output of your parser in the previous lab.&lt;br /&gt;
&lt;br /&gt;
* In case you pose a question, add the negated question in the Otter format.&lt;br /&gt;
&lt;br /&gt;
* Compile the full intput file by appending these parts into a full input file myinput.txt:&lt;br /&gt;
** the prefix part, &lt;br /&gt;
** the automatically created rdf data in Otter format, &lt;br /&gt;
** the (optional) question in Otter format, in the negated form&lt;br /&gt;
** the commonsense rules and facts: either static handmade rules or rules/facts created automatically from conceptnet/wordnet/dbpedia&lt;br /&gt;
** the short final part ie end_of_list&lt;br /&gt;
&lt;br /&gt;
* Run otter like otter &amp;lt; myinput.txt &amp;gt; myoutput.txt&lt;br /&gt;
&lt;br /&gt;
* Process the myoutput.txt, filtering out derived stuff and/or determine whether the output contains the word PROOF&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Example code ==&lt;br /&gt;
&lt;br /&gt;
[[lab 2 example code converted to give]] as a result the [[Output of first lab converted to second lab]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6032</id>
		<title>Automated reasoning homework 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6032"/>
		<updated>2017-11-03T10:08:19Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Integrating with the external knowledge base */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Automated reasoning homework as a second part of a two-phase project ==&lt;br /&gt;
&lt;br /&gt;
The goal of this homework is &lt;br /&gt;
* to learn about representing knowledge and rules in logic&lt;br /&gt;
* experimenting with an automated reasoner&lt;br /&gt;
* experimenting with integrating external knowledge bases with your rdf-style data&lt;br /&gt;
&lt;br /&gt;
The main concrete task is to add some common sense rules to the rdf-style output of the first phase of the project and then ask and prove some example queries using an automated reasoner.&lt;br /&gt;
&lt;br /&gt;
The secondary concrete task is to integrate an external knowledge base like [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] with your rdf-style output and be able to answer queries with the added help of the external knowledge base.&lt;br /&gt;
&lt;br /&gt;
== Administrative ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. Presentation afer this deadline will give half of the points. Absolute deadline is 8. December: no submissions will be accepted after that,.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Work should be submitted to git, latest one day before deadline.&lt;br /&gt;
&lt;br /&gt;
The groups are same as for the first phase.&lt;br /&gt;
&lt;br /&gt;
== What you have to do ==&lt;br /&gt;
&lt;br /&gt;
First of all, by default we will use the [http://www.cs.unm.edu/~mccune/otter/ otter prover]. Download it and try out some example problems in the otter zip file. Have a look at the manual as well. Newer provers are also allowed, but using these would be more complex.&lt;br /&gt;
&lt;br /&gt;
Suppose you have a  triplet like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   http://en.wikipedia.org/wiki/china],&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the list [ http://en.wikipedia.org/wiki/Barack_Obama, http://en.wikipedia.org/wiki/china ] means that we do not know&lt;br /&gt;
which interpretation is the correct one (the original word was like he,this,she,it,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, pick just one interpretation like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography (ontology: like a taxonomy, can be a bit more complex)&lt;br /&gt;
* pose a question in otter format&lt;br /&gt;
* run otter to find answer&lt;br /&gt;
&lt;br /&gt;
If you manage to do that, you will pass.&lt;br /&gt;
&lt;br /&gt;
Next, a bit fancier task you may take up (this is not required for passing, but will award extra points):&lt;br /&gt;
&lt;br /&gt;
Run a loop where you try out different interpretations of he,this,she,it,... and for &amp;lt;b&amp;gt;each&amp;lt;/b&amp;gt; interpretation in the list:&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography&lt;br /&gt;
* check whether otter generates a contradiction: if yes, then this is probably a wrong interpretation, since it does not match common sense rules.&lt;br /&gt;
&lt;br /&gt;
== Integrating with the external knowledge base ==&lt;br /&gt;
&lt;br /&gt;
Instead of relying only on your own handmade rules and facts stated in your processed English, you could &lt;br /&gt;
use [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] to get a large amount of real-world facts and a set of relevant rules automatically.&lt;br /&gt;
&lt;br /&gt;
This is what you could really get from conceptnet and wordnet and dbpedia: the main purpose why these databases/systems exist.&lt;br /&gt;
&lt;br /&gt;
This is not required to pass the lab, but if you manage to do it (ie. use some of these systems for creating relevant rules and facts automatically) we&amp;#039;ll award you more points!&lt;br /&gt;
&lt;br /&gt;
How to integrate dbpedia or conceptnet?&lt;br /&gt;
&lt;br /&gt;
* First download the large textual representation in json or some other easily processable format: investigate different download options and try to find relevant ones which you can understand and work with.&lt;br /&gt;
* Second, write a program which converts this representation to a data/rule file in the otter syntax, using the same conventions and wrapping predicates as you did while processing the English text.&lt;br /&gt;
* When you create a final query file for Otter, you have to add the relevant rows in the created data/rule file to the Otter query file. Since Otter does not manage working with a huge input file, first filter out relevant facts/rule rows. What are the relevant rows? A simple approach is to take these rows which contain uri-s in your own data/rule set created while processing the English text.&lt;br /&gt;
&lt;br /&gt;
== Examples to use as a starting point ==&lt;br /&gt;
&lt;br /&gt;
The following examples are in the Otter format: the first two are in the clause syntax and are similar to what&lt;br /&gt;
you are expected to in the third lab. The last one demonstrates formula syntax, calculation and probabilities (kind of).&lt;br /&gt;
&lt;br /&gt;
* [[Derive simple information about Obama]] &lt;br /&gt;
* [[Ask a query about Obama]]&lt;br /&gt;
* [[Output of first lab converted to second lab]] with a few rules added: can derive that Hyatt has type hotel and Obama is rich. [[Here is otter output of this example]]&lt;br /&gt;
* [[A question posed: find a mortal in the text]]: we just add &amp;lt;tt&amp;gt;-rdf(X,&amp;quot;id:type&amp;quot;,&amp;quot;mortal&amp;quot;) | $ans(X).&amp;lt;/tt&amp;gt; to the facts (i.e. a negated query with a variable and $ans to capture a suitable value for X.&lt;br /&gt;
* [[Probabilities and web scraping]] Determine the type of objects using information from a web page and probability-like measures.&lt;br /&gt;
* [[Example with weather, dates and trust]]&lt;br /&gt;
&lt;br /&gt;
== How to create the Otter file and use the output ==&lt;br /&gt;
&lt;br /&gt;
* Split the example Otter file like obama1.txt into the initial part containing the strategy selection etc and the final part containing end_of_list.&lt;br /&gt;
&lt;br /&gt;
* Create the rdf data in Otter format automatically from the output of your parser in the previous lab.&lt;br /&gt;
&lt;br /&gt;
* In case you pose a question, add the negated question in the Otter format.&lt;br /&gt;
&lt;br /&gt;
* Compile the full intput file by appending these parts into a full input file myinput.txt:&lt;br /&gt;
** the prefix part, &lt;br /&gt;
** the automatically created rdf data in Otter format, &lt;br /&gt;
** the (optional) question in Otter format, in the negated form&lt;br /&gt;
** the commonsense rules and facts: either static handmade rules or rules/facts created automatically from conceptnet/wordnet/dbpedia&lt;br /&gt;
** the short final part ie end_of_list&lt;br /&gt;
&lt;br /&gt;
* Run otter like otter &amp;lt; myinput.txt &amp;gt; myoutput.txt&lt;br /&gt;
&lt;br /&gt;
* Process the myoutput.txt, filtering out derived stuff and/or determine whether the output contains the word PROOF&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Example code ==&lt;br /&gt;
&lt;br /&gt;
[[lab 2 example code converted to give]] as a result the [[Output of first lab converted to second lab]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6031</id>
		<title>Automated reasoning homework 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6031"/>
		<updated>2017-11-03T10:05:18Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Automated reasoning homework as a second part of a two-phase project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Automated reasoning homework as a second part of a two-phase project ==&lt;br /&gt;
&lt;br /&gt;
The goal of this homework is &lt;br /&gt;
* to learn about representing knowledge and rules in logic&lt;br /&gt;
* experimenting with an automated reasoner&lt;br /&gt;
* experimenting with integrating external knowledge bases with your rdf-style data&lt;br /&gt;
&lt;br /&gt;
The main concrete task is to add some common sense rules to the rdf-style output of the first phase of the project and then ask and prove some example queries using an automated reasoner.&lt;br /&gt;
&lt;br /&gt;
The secondary concrete task is to integrate an external knowledge base like [http://wiki.dbpedia.org/ dbpedia] or [http://conceptnet.io/ conceptnet] or [https://www.mpi-inf.mpg.de/departments/databases-and-information-systems/research/yago-naga/yago/#c10444 yago] with your rdf-style output and be able to answer queries with the added help of the external knowledge base.&lt;br /&gt;
&lt;br /&gt;
== Administrative ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. Presentation afer this deadline will give half of the points. Absolute deadline is 8. December: no submissions will be accepted after that,.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Work should be submitted to git, latest one day before deadline.&lt;br /&gt;
&lt;br /&gt;
The groups are same as for the first phase.&lt;br /&gt;
&lt;br /&gt;
== What you have to do ==&lt;br /&gt;
&lt;br /&gt;
First of all, by default we will use the [http://www.cs.unm.edu/~mccune/otter/ otter prover]. Download it and try out some example problems in the otter zip file. Have a look at the manual as well. Newer provers are also allowed, but using these would be more complex.&lt;br /&gt;
&lt;br /&gt;
Suppose you have a  triplet like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   http://en.wikipedia.org/wiki/china],&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the list [ http://en.wikipedia.org/wiki/Barack_Obama, http://en.wikipedia.org/wiki/china ] means that we do not know&lt;br /&gt;
which interpretation is the correct one (the original word was like he,this,she,it,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, pick just one interpretation like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography (ontology: like a taxonomy, can be a bit more complex)&lt;br /&gt;
* pose a question in otter format&lt;br /&gt;
* run otter to find answer&lt;br /&gt;
&lt;br /&gt;
If you manage to do that, you will pass.&lt;br /&gt;
&lt;br /&gt;
Next, a bit fancier task you may take up (this is not required for passing, but will award extra points):&lt;br /&gt;
&lt;br /&gt;
Run a loop where you try out different interpretations of he,this,she,it,... and for &amp;lt;b&amp;gt;each&amp;lt;/b&amp;gt; interpretation in the list:&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography&lt;br /&gt;
* check whether otter generates a contradiction: if yes, then this is probably a wrong interpretation, since it does not match common sense rules.&lt;br /&gt;
&lt;br /&gt;
== Integrating with the external knowledge base ==&lt;br /&gt;
&lt;br /&gt;
Instead of relying on your own handmade rules and facts stated in your processed English, you could &lt;br /&gt;
* use the http://wiki.dbpedia.org/ to get a large amount of real-world facts you could add to your knowledge base. &lt;br /&gt;
* use the json format data in conceptnet about objects to create a set of relevant rules automatically. You could use the wordnet for the same purpose.  &lt;br /&gt;
&lt;br /&gt;
This is what you could really get from conceptnet and wordnet and dbpedia: the main purpose why these databases/systems exist.&lt;br /&gt;
&lt;br /&gt;
This is not required to pass the lab, but if you manage to do it (ie. use some of these systems for creating relevant rules and facts automatically) we&amp;#039;ll award you more points!&lt;br /&gt;
&lt;br /&gt;
How to integrate dbpedia or conceptnet?&lt;br /&gt;
&lt;br /&gt;
* First download the large textual representation in json or some other easily processable format.&lt;br /&gt;
* Second, write a program which converts this representation to a data/rule file in the otter syntax, using the same conventions and wrapping predicates as you did while processing the English text.&lt;br /&gt;
* When you create a final query file for Otter, you have to add the relevant rows in the created data/rule file to the Otter query file. Since Otter does not manage working with a huge input file, first filter out relevant facts/rule rows. What are the relevant rows? A simple approach is to take these rows which contain uri-s in your own data/rule set created while processing the English text.&lt;br /&gt;
&lt;br /&gt;
== Examples to use as a starting point ==&lt;br /&gt;
&lt;br /&gt;
The following examples are in the Otter format: the first two are in the clause syntax and are similar to what&lt;br /&gt;
you are expected to in the third lab. The last one demonstrates formula syntax, calculation and probabilities (kind of).&lt;br /&gt;
&lt;br /&gt;
* [[Derive simple information about Obama]] &lt;br /&gt;
* [[Ask a query about Obama]]&lt;br /&gt;
* [[Output of first lab converted to second lab]] with a few rules added: can derive that Hyatt has type hotel and Obama is rich. [[Here is otter output of this example]]&lt;br /&gt;
* [[A question posed: find a mortal in the text]]: we just add &amp;lt;tt&amp;gt;-rdf(X,&amp;quot;id:type&amp;quot;,&amp;quot;mortal&amp;quot;) | $ans(X).&amp;lt;/tt&amp;gt; to the facts (i.e. a negated query with a variable and $ans to capture a suitable value for X.&lt;br /&gt;
* [[Probabilities and web scraping]] Determine the type of objects using information from a web page and probability-like measures.&lt;br /&gt;
* [[Example with weather, dates and trust]]&lt;br /&gt;
&lt;br /&gt;
== How to create the Otter file and use the output ==&lt;br /&gt;
&lt;br /&gt;
* Split the example Otter file like obama1.txt into the initial part containing the strategy selection etc and the final part containing end_of_list.&lt;br /&gt;
&lt;br /&gt;
* Create the rdf data in Otter format automatically from the output of your parser in the previous lab.&lt;br /&gt;
&lt;br /&gt;
* In case you pose a question, add the negated question in the Otter format.&lt;br /&gt;
&lt;br /&gt;
* Compile the full intput file by appending these parts into a full input file myinput.txt:&lt;br /&gt;
** the prefix part, &lt;br /&gt;
** the automatically created rdf data in Otter format, &lt;br /&gt;
** the (optional) question in Otter format, in the negated form&lt;br /&gt;
** the commonsense rules and facts: either static handmade rules or rules/facts created automatically from conceptnet/wordnet/dbpedia&lt;br /&gt;
** the short final part ie end_of_list&lt;br /&gt;
&lt;br /&gt;
* Run otter like otter &amp;lt; myinput.txt &amp;gt; myoutput.txt&lt;br /&gt;
&lt;br /&gt;
* Process the myoutput.txt, filtering out derived stuff and/or determine whether the output contains the word PROOF&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Example code ==&lt;br /&gt;
&lt;br /&gt;
[[lab 2 example code converted to give]] as a result the [[Output of first lab converted to second lab]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6030</id>
		<title>Automated reasoning homework 2017</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Automated_reasoning_homework_2017&amp;diff=6030"/>
		<updated>2017-11-03T09:58:55Z</updated>

		<summary type="html">&lt;p&gt;Tanel: /* Integrating with the external knowledge base */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Automated reasoning homework as a second part of a two-phase project ==&lt;br /&gt;
&lt;br /&gt;
The goal of this homework is &lt;br /&gt;
* to learn about representing knowledge and rules in logic&lt;br /&gt;
* experimenting with an automated reasoner&lt;br /&gt;
* experimenting with integrating external knowledge bases with your rdf-style data&lt;br /&gt;
&lt;br /&gt;
The main concrete task is to add some common sense rules to the rdf-style output of the first phase of the project and then ask and prove some example queries using an automated reasoner.&lt;br /&gt;
&lt;br /&gt;
The secondary concrete task is to integrate an external knowledge base like dbpedia or yago or conceptnet with your rdf-style output and be able to answer queries with the added help of the external knowledge base.&lt;br /&gt;
&lt;br /&gt;
== Administrative ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Homework defence deadline: 1. December. Presentation afer this deadline will give half of the points. Absolute deadline is 8. December: no submissions will be accepted after that,.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Work should be submitted to git, latest one day before deadline.&lt;br /&gt;
&lt;br /&gt;
The groups are same as for the first phase.&lt;br /&gt;
&lt;br /&gt;
== What you have to do ==&lt;br /&gt;
&lt;br /&gt;
First of all, by default we will use the [http://www.cs.unm.edu/~mccune/otter/ otter prover]. Download it and try out some example problems in the otter zip file. Have a look at the manual as well. Newer provers are also allowed, but using these would be more complex.&lt;br /&gt;
&lt;br /&gt;
Suppose you have a  triplet like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   http://en.wikipedia.org/wiki/china],&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the list [ http://en.wikipedia.org/wiki/Barack_Obama, http://en.wikipedia.org/wiki/china ] means that we do not know&lt;br /&gt;
which interpretation is the correct one (the original word was like he,this,she,it,...)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, pick just one interpretation like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   http://en.wikipedia.org/wiki/Barack_Obama,&lt;br /&gt;
   id:type&lt;br /&gt;
   http://conceptnet5.media.mit.edu/web/c/en/person&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography (ontology: like a taxonomy, can be a bit more complex)&lt;br /&gt;
* pose a question in otter format&lt;br /&gt;
* run otter to find answer&lt;br /&gt;
&lt;br /&gt;
If you manage to do that, you will pass.&lt;br /&gt;
&lt;br /&gt;
Next, a bit fancier task you may take up (this is not required for passing, but will award extra points):&lt;br /&gt;
&lt;br /&gt;
Run a loop where you try out different interpretations of he,this,she,it,... and for &amp;lt;b&amp;gt;each&amp;lt;/b&amp;gt; interpretation in the list:&lt;br /&gt;
&lt;br /&gt;
* represent it in otter format&lt;br /&gt;
* add common sense rules about the domain of geography&lt;br /&gt;
* check whether otter generates a contradiction: if yes, then this is probably a wrong interpretation, since it does not match common sense rules.&lt;br /&gt;
&lt;br /&gt;
== Integrating with the external knowledge base ==&lt;br /&gt;
&lt;br /&gt;
Instead of relying on your own handmade rules and facts stated in your processed English, you could &lt;br /&gt;
* use the http://wiki.dbpedia.org/ to get a large amount of real-world facts you could add to your knowledge base. &lt;br /&gt;
* use the json format data in conceptnet about objects to create a set of relevant rules automatically. You could use the wordnet for the same purpose.  &lt;br /&gt;
&lt;br /&gt;
This is what you could really get from conceptnet and wordnet and dbpedia: the main purpose why these databases/systems exist.&lt;br /&gt;
&lt;br /&gt;
This is not required to pass the lab, but if you manage to do it (ie. use some of these systems for creating relevant rules and facts automatically) we&amp;#039;ll award you more points!&lt;br /&gt;
&lt;br /&gt;
How to integrate dbpedia or conceptnet?&lt;br /&gt;
&lt;br /&gt;
* First download the large textual representation in json or some other easily processable format.&lt;br /&gt;
* Second, write a program which converts this representation to a data/rule file in the otter syntax, using the same conventions and wrapping predicates as you did while processing the English text.&lt;br /&gt;
* When you create a final query file for Otter, you have to add the relevant rows in the created data/rule file to the Otter query file. Since Otter does not manage working with a huge input file, first filter out relevant facts/rule rows. What are the relevant rows? A simple approach is to take these rows which contain uri-s in your own data/rule set created while processing the English text.&lt;br /&gt;
&lt;br /&gt;
== Examples to use as a starting point ==&lt;br /&gt;
&lt;br /&gt;
The following examples are in the Otter format: the first two are in the clause syntax and are similar to what&lt;br /&gt;
you are expected to in the third lab. The last one demonstrates formula syntax, calculation and probabilities (kind of).&lt;br /&gt;
&lt;br /&gt;
* [[Derive simple information about Obama]] &lt;br /&gt;
* [[Ask a query about Obama]]&lt;br /&gt;
* [[Output of first lab converted to second lab]] with a few rules added: can derive that Hyatt has type hotel and Obama is rich. [[Here is otter output of this example]]&lt;br /&gt;
* [[A question posed: find a mortal in the text]]: we just add &amp;lt;tt&amp;gt;-rdf(X,&amp;quot;id:type&amp;quot;,&amp;quot;mortal&amp;quot;) | $ans(X).&amp;lt;/tt&amp;gt; to the facts (i.e. a negated query with a variable and $ans to capture a suitable value for X.&lt;br /&gt;
* [[Probabilities and web scraping]] Determine the type of objects using information from a web page and probability-like measures.&lt;br /&gt;
* [[Example with weather, dates and trust]]&lt;br /&gt;
&lt;br /&gt;
== How to create the Otter file and use the output ==&lt;br /&gt;
&lt;br /&gt;
* Split the example Otter file like obama1.txt into the initial part containing the strategy selection etc and the final part containing end_of_list.&lt;br /&gt;
&lt;br /&gt;
* Create the rdf data in Otter format automatically from the output of your parser in the previous lab.&lt;br /&gt;
&lt;br /&gt;
* In case you pose a question, add the negated question in the Otter format.&lt;br /&gt;
&lt;br /&gt;
* Compile the full intput file by appending these parts into a full input file myinput.txt:&lt;br /&gt;
** the prefix part, &lt;br /&gt;
** the automatically created rdf data in Otter format, &lt;br /&gt;
** the (optional) question in Otter format, in the negated form&lt;br /&gt;
** the commonsense rules and facts: either static handmade rules or rules/facts created automatically from conceptnet/wordnet/dbpedia&lt;br /&gt;
** the short final part ie end_of_list&lt;br /&gt;
&lt;br /&gt;
* Run otter like otter &amp;lt; myinput.txt &amp;gt; myoutput.txt&lt;br /&gt;
&lt;br /&gt;
* Process the myoutput.txt, filtering out derived stuff and/or determine whether the output contains the word PROOF&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Example code ==&lt;br /&gt;
&lt;br /&gt;
[[lab 2 example code converted to give]] as a result the [[Output of first lab converted to second lab]]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=A_question_posed:_find_a_mortal_in_the_text&amp;diff=6029</id>
		<title>A question posed: find a mortal in the text</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=A_question_posed:_find_a_mortal_in_the_text&amp;diff=6029"/>
		<updated>2017-11-03T09:50:02Z</updated>

		<summary type="html">&lt;p&gt;Tanel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
% clear automatic strategy selection&lt;br /&gt;
clear(auto).&lt;br /&gt;
&lt;br /&gt;
% use capital letters (A,X,T,...) as vars&lt;br /&gt;
set(prolog_style_variables).&lt;br /&gt;
&lt;br /&gt;
% select the search strategy&lt;br /&gt;
set(hyper_res). % an alternative is to use set(binary_res).&lt;br /&gt;
set(factor).&lt;br /&gt;
&lt;br /&gt;
% select sensible amount of output&lt;br /&gt;
clear(print_given). % uncomment to see input and process&lt;br /&gt;
set(print_kept).  % this is important: prints all generated and kept clauses&lt;br /&gt;
assign(stats_level, 0).&lt;br /&gt;
&lt;br /&gt;
% just make it stop after N secs&lt;br /&gt;
assign(max_seconds, 10).&lt;br /&gt;
&lt;br /&gt;
list(sos).&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
rdf(&lt;br /&gt;
  &amp;quot;http://en.wikipedia.org/wiki/Barack_Obama&amp;quot;,&lt;br /&gt;
  &amp;quot;id:action&amp;quot;,&lt;br /&gt;
  &amp;quot;id:local_1&amp;quot;&lt;br /&gt;
).&lt;br /&gt;
rdf(&lt;br /&gt;
  &amp;quot;id:local_1&amp;quot;,&lt;br /&gt;
  &amp;quot;id:isactivity&amp;quot;,&lt;br /&gt;
  &amp;quot;http://conceptnet5.media.mit.edu/web/c/en/go&amp;quot;&lt;br /&gt;
).&lt;br /&gt;
rdf(&lt;br /&gt;
  &amp;quot;id:local_1&amp;quot;,&lt;br /&gt;
  &amp;quot;id:extrainfo&amp;quot;,&lt;br /&gt;
  &amp;quot;http://conceptnet5.media.mit.edu/web/c/en/yesterday&amp;quot;&lt;br /&gt;
).&lt;br /&gt;
rdf(&lt;br /&gt;
  &amp;quot;http://en.wikipedia.org/wiki/Barack_Obama&amp;quot;,&lt;br /&gt;
  &amp;quot;http://conceptnet5.media.mit.edu/web/c/en/live&amp;quot;,&lt;br /&gt;
  &amp;quot;https://en.wikipedia.org/wiki/Grand_Hyatt_Beijing&amp;quot;&lt;br /&gt;
).&lt;br /&gt;
rdf(&lt;br /&gt;
  &amp;quot;https://en.wikipedia.org/wiki/Grand_Hyatt_Beijing&amp;quot;,&lt;br /&gt;
  &amp;quot;http://conceptnet5.media.mit.edu/web/c/en/type/v/identify_as_belonging_to_a_certain_type&amp;quot;,&lt;br /&gt;
  &amp;quot;id:local_2&amp;quot;&lt;br /&gt;
).&lt;br /&gt;
rdf(&lt;br /&gt;
  &amp;quot;id:local_2&amp;quot;,&lt;br /&gt;
  &amp;quot;id:isobject&amp;quot;,&lt;br /&gt;
  &amp;quot;http://conceptnet5.media.mit.edu/web/c/en/hotel&amp;quot;&lt;br /&gt;
).&lt;br /&gt;
rdf(&lt;br /&gt;
  &amp;quot;id:local_2&amp;quot;,&lt;br /&gt;
  &amp;quot;id:extrainfo&amp;quot;,&lt;br /&gt;
  &amp;quot;http://conceptnet5.media.mit.edu/web/c/en/superb&amp;quot;&lt;br /&gt;
).&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
-rdf(X,&amp;quot;id:type&amp;quot;,&lt;br /&gt;
    &amp;quot;http://conceptnet5.media.mit.edu/web/c/en/person&amp;quot;) |&lt;br /&gt;
 rdf(X,&amp;quot;id:type&amp;quot;,&lt;br /&gt;
    &amp;quot;http://conceptnet5.media.mit.edu/web/c/en/animal&amp;quot;).&lt;br /&gt;
  &lt;br /&gt;
 -rdf(X,&amp;quot;id:type&amp;quot;,&lt;br /&gt;
    &amp;quot;http://conceptnet5.media.mit.edu/web/c/en/animal&amp;quot;) |&lt;br /&gt;
 rdf(X,&amp;quot;id:type&amp;quot;,&lt;br /&gt;
    &amp;quot;mortal&amp;quot;).	  &lt;br /&gt;
    &lt;br /&gt;
 -rdf(X,&amp;quot;id:type&amp;quot;,&lt;br /&gt;
    &amp;quot;http://conceptnet5.media.mit.edu/web/c/en/person&amp;quot;) |&lt;br /&gt;
  rdf(X,&amp;quot;id:CapableOf&amp;quot;,&lt;br /&gt;
    &amp;quot;id:eat&amp;quot;).&lt;br /&gt;
  &lt;br /&gt;
  -rdf(X , &amp;quot;http://conceptnet5.media.mit.edu/web/c/en/live&amp;quot;, Y) | &lt;br /&gt;
  rdf(X,&amp;quot;id:type&amp;quot;, &amp;quot;http://conceptnet5.media.mit.edu/web/c/en/animal&amp;quot;).    &lt;br /&gt;
   &lt;br /&gt;
  -rdf(X,&amp;quot;http://conceptnet5.media.mit.edu/web/c/en/type/v/identify_as_belonging_to_a_certain_type&amp;quot;,Y) | &lt;br /&gt;
  -rdf(Y,&amp;quot;id:isobject&amp;quot;, Z) |&lt;br /&gt;
  rdf(X,&amp;quot;id:type&amp;quot;,Z).&lt;br /&gt;
  &lt;br /&gt;
  -rdf(X,&amp;quot;http://conceptnet5.media.mit.edu/web/c/en/live&amp;quot;,Y) | &lt;br /&gt;
  -rdf(Y,&amp;quot;id:type&amp;quot;,&amp;quot;http://conceptnet5.media.mit.edu/web/c/en/hotel&amp;quot;) |&lt;br /&gt;
  -rdf(Y,&amp;quot;http://conceptnet5.media.mit.edu/web/c/en/type/v/identify_as_belonging_to_a_certain_type&amp;quot;,Z) |&lt;br /&gt;
  -rdf(Z,&amp;quot;id:extrainfo&amp;quot;,&amp;quot;http://conceptnet5.media.mit.edu/web/c/en/superb&amp;quot;) | &lt;br /&gt;
  rdf(X,&amp;quot;id:type&amp;quot;,&amp;quot;http://conceptnet5.media.mit.edu/web/c/en/rich&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
  % a negated question&lt;br /&gt;
&lt;br /&gt;
  -rdf(X,&amp;quot;id:type&amp;quot;,&amp;quot;mortal&amp;quot;) | $ans(X).&lt;br /&gt;
&lt;br /&gt;
end_of_list.&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tanel</name></author>
	</entry>
</feed>