====== Foundations of Artificial Intelligence ====== ===== Watch the page ===== You can “subscribe” to any page on the wiki and you’ll get an email message whenever the page has changed. To do that, click the [[https://www.inf.unibz.it/~franconi/space/doku.php?id=teaching:is:main_is&do=subscribe|Manage Subscriptions]] link. ===== Official course presentation form ===== * The course [[https://webservices.scientificnet.org/rest/uisdata/api/v1/coursedescriptions/82219|presentation form]]. ===== Timetable ===== The official week-by-week Faculty timetable: [[https://www.unibz.it/en/timetable/?searchByKeywords=Artificial+Intelligence&sourceId=unibz&department=224°ree=13618%2C13778&studyPlan=18364%2C18928&toDate=2024-07-31&page=1|lectures and labs]] of the course. Note that a LAB may be transformed into a LECTURE and vice-versa. Office hours: anytime, by previous appointment by email to the lecturer ([[mailto:franconi@inf.unibz.it|Enrico Franconi]]). In any case the lecturer is always available for the period after any lecture. Some lectures and labs may be available on Microsoft Teams. =====Language used in the course===== * Exclusively English. ===== Textbook ===== * **Main book**: David Poole and Alan Mackworth. //[[https://artint.info/|Artificial Intelligence: Foundations of Computational Agents]]//. Cambridge University Press, 2023, 3rd edition 2017. The book is fully available online. * //Auxiliary book//: Stuart Jonathan Russell and Peter Norvig. //Artificial Intelligence: A Modern Approach//. Prentice Hall, 4th edition 2020. * Reading list from the UniBZ Library: [[https://eu.alma.exlibrisgroup.com/leganto/readinglist/lists/29916890000001241| Artificial Intelligence / Artificial Intelligence: Foundation of Artificial Intelligence]] ===== Slides & Reference Material ===== /* red means material not done this year. */ The following is the standard material, it may be adjusted during the course. /* The striked-through text (i.e., text) corresponds to parts not done this year. */ * Slides: {{ :teaching:is:lect_01_0_h.pdf |Welcome Aboard}} * Slides: Artificial Intelligence and Agents {{ :teaching:is:lect_01_1.pdf |parts 1 & 2}}, {{ :teaching:is:lect_01_3_h.pdf |part 3}}, {{ :teaching:is:lect_01_4_h.pdf |part 4}} * Material: chapter 1 of //Poole and Mackworth// * Slides: States and Searching {{:teaching:is:lect.3.1.pdf|part 1}}, {{:teaching:is:lect.3.2.pdf|part 2}}, {{:teaching:is:lect.3.3.pdf|part 3}}, {{:teaching:is:lect.3.4.pdf|part 4}} * Material: chapter 3 of //Poole and Mackworth// * Slides: Features and Constraints {{:teaching:is:lect.4.1.pdf|part 1}}, {{:teaching:is:lect.4.2.pdf|part 2}} * Material: chapter 4 of //Poole and Mackworth// * Slides: Propositions and Inference {{:teaching:is:lect.5.1.pdf|part 1}}, {{:teaching:is:lect.5.2.pdf|part 2}}, {{:teaching:is:lect.5.3.pdf|part 3}}, {{:teaching:is:lect.5.4.pdf|part 4}} \\ Slides: Diagnosis {{:teaching:is:lect.5.5.pdf|part 1}}, {{:teaching:is:lect.5.6.pdf|part 2}}, {{:teaching:is:lect.5.7.pdf|part 3}}, {{:teaching:is:lect.5.8.pdf|part 4}}, {{:teaching:is:lect.5.9.pdf|part 5}} * Material: chapter 5 of //Poole and Mackworth// * Slides: Deterministic Planning {{ :teaching:is:lect.8.1 v4.pdf |part 1}}, {{ :teaching:is:lect.8.2 v4.pdf |part 2}}, {{ :teaching:is:lect.8.3 v4.pdf |part 3}}, {{ :teaching:is:lect.8.4 v4.pdf |part 4}} * Material: chapter 6 of //Poole and Mackworth// /* * Slides: Multiagent Systems and Games {{ :teaching:is:lect.10.1_v4.pdf |part 1}} * Material: chapter 10 of //Poole and Mackworth// */ * Slides: Individuals and Relations {{:teaching:is:lect.12.1.pdf|part 1}}, {{:teaching:is:lect.12.2.pdf|part 2}}, {{:teaching:is:lect.12.3.pdf|part 3}}, {{:teaching:is:lect.12.4.pdf|part 4}} * Material {{http://www.inf.unibz.it/~franconi/teaching/artint.info/html/ArtInt_276.html|chapter 12}} of //Poole and Mackworth// * Slides: {{:teaching:is:lect.12.nl.pdf| Natural Language Understanding}} * Material {{http://www.inf.unibz.it/~franconi/teaching/artint.info/html/ArtInt_276.html|chapter 12}} of //Poole and Mackworth// * Slides: Supervised learning and Decision Trees: {{ :teaching:is:lect1.pdf |part 1}}, {{ :teaching:is:lect2_ef.pdf |part 2}}, {{ :teaching:is:lect3_ef.pdf |part 3}}. * Material {{http://www.inf.unibz.it/~franconi/teaching/artint.info/html/ArtInt_169.html|chapter 7}} of //Poole and Mackworth//. * Slides: {{:teaching:is:lezione_machine_learning_bz_7_6_2019.pdf |Introduction to Machine Learning}} ===== Lab ===== * LAB 1: Graph Searching with uninformed techniques ({{ :teaching:is:search_applet.zip |Java applet}}) * Manuals: * {{ :teaching:is:search_1_-_quick_start.pdf |Quick start}} * {{ :teaching:is:search_2_-_general_help.pdf |General Help}} * Tutorial 1: {{ :teaching:is:search_3_-_tutorial_1.pdf |Creating a New Graph}} with [[http://aispace.org/search/help/CreateASearchGraph.avi|video]] * Tutorial 2: {{ :teaching:is:search_4_-_tutorial_2.pdf |Loading a Preexisting Graph}} * Tutorial 3: {{ :teaching:is:search_5_-_tutorial_3.pdf |Solving a Graph}} with [[http://aispace.org/search/help/SolveASearchGraph.avi|video]] * Tutorial 4: {{ :teaching:is:search_6_-_tutorial_4.pdf |Search Options}} * Explore with the search applet the **Delivery Robot (Acyclic)**, the **Delivery Robot (cyclic)**, the **Vancouver Neighbourood**, the **Module 4** sample problem graphs: with //Depth First//, //Breadth First//, //Lowest Cost First// search strategies using different //Neighbour Ordering Strategies//; practice also with the //quiz// facility. * Do the [[http://www.aispace.org/exercises.shtml|Practice Exercise]] 3.B. * Exercise: practicing different search strategies with the graph in this {{teaching:is:search_bf_df_lcf.pdf|slides}} ({{ :teaching:is:search-problem.xml.zip |solution}} as a XML file for the applet) * Create your own problem graph for a delivery robot starting from a map with edge costs. * Create a problem graph for a simple problem chosen by you. * IMPORTANT: learn how to write on paper the frontier evolution for each search. * LAB 2: Graph Searching with Heuristics * Explore the **Delivery Robot (Acyclic)**, the **Delivery Robot (cyclic)**, the **Vancouver Neighbourood**, the **Module 4** sample problem graphs: with //Best First, Heuristic Depth First, A*, Branch and Bound// search strategies, with or without //Multiple-Path Pruning// or //Loop Detection//, using different //Neighbour Ordering Strategies//. Explore also the behaviour with the abovementioned search graphs with potentially non terminating depth first strategies (e.g., //Depth First// or //Heuristic Depth First//) without cycle checking, and with loop detection or multiple path pruning. * Do the [[http://www.aispace.org/exercises.shtml|Practice Exercises]] 3.C, 3.D, 3.E. * Exercise: [[http://www.inf.unibz.it/~franconi/teaching/artint.info/html/ArtInt_71.html|3.4]] ([[teaching:is:heuristics-solution|solution]]). * IMPORTANT: * learn how to write on paper the frontier evolution for each search; * check whether the heuristics are admissible and monotone. * LAB 3: Constraints - Consistency * [[http://aispace.org/constraint/|Consistency Based CSP Solver]] ({{:teaching:is:constraint.jar.zip|applet}}): * Explore with the CSP applet the sample problems: Simple Problem 1, Simple Problem 2, Scheduling Problem 1, Crossword Problem 1, Crossword Problem 2. These sample problems have been seen already in the course lectures; for the crossword problems, try to reconstruct the crossword graphical structure. * Do the [[http://www.aispace.org/exercises.shtml|Practice Exercises]] 4.A, 4.B. * Exercises: [[http://www.inf.unibz.it/~franconi/teaching/artint.info/html/ArtInt_99.html|4.2, 4.3 (only a,b), 4.5]] - CSP and arc consistency ([[teaching:is:csp-solutions|solutions]]). * LAB 5: Propositions and Inference * Getting started with [[https://artint.info/code/ailog/ailog_man.html|AILog2]], a representation and reasoning system for definite clauses, with declarative debugging tools. * Download the file [[https://artint.info/code/ailog/ailog2.pl|ailog2.pl]], install and launch [[https://www.swi-prolog.org/download/stable|SWI Prolog]], and load (consult) AILog2 in Prolog: * Windows: ?- consult("C:\\path-to-file\\ailog2.pl"). * Mac: ?- consult('/path-to-file/ailog2.pl'). * Go through the [[https://artint.info/code/ailog/ailog_man.html|AiLog2 manual]], from Section 1 to Section 6. * To load a knowledge base file from AILog2: * Windows: ailog: load 'C:\\path-to-kbfile\\kbfile.ail'. * Mac: ailog: load '/path-to-kbfile/kbfile.ail'. * Play with the [[https://artint.info/code/ailog/ailog_code/ch05/elect_prop.ail|elect_prop.ail]] electrical wiring example 5.7 from Section 5.3 of the book and the slides. * Do Exercises [[http://www.inf.unibz.it/~franconi/teaching/artint.info/html/ArtInt_137.html|5.1, 5.2, 5.3, 5.4]] ([[teaching:is:prop-rules-solutions|solutions]]) * Find other AILog knowledge base examples[[https://www.cs.ubc.ca/~poole/aibook/code/ailog/ailog_code/ailog_code.html|here]] (play with askable and debugging) * LAB 6: Assumables and Consistency-based Diagnosis * Excercises {{ :teaching:is:exercise_5.9_5.13.pdf |5.9 and 5.13}} and {{ :teaching:is:exercise_5.17.pdf |5.17}}. \\ Use [[https://artint.info/code/ailog/ailog_man.html|AILog2]] to verify the correctness of your answers; AILog2 can assert assumables (see [[https://www.inf.unibz.it/~franconi/teaching/artint.info/code/ailog/ailog_man_14.html|manual]]), and can ask for the derivation of the false atom. \\ ([[teaching:is:assumables-solutions|solutions]]) * LAB 7: Debug, Diagnosis, Abduction * Keep using [[https://artint.info/code/ailog/ailog_man.html|AILog2]] * Go through Sections 6, 7, 9 of the [[http://www.inf.unibz.it/~franconi/teaching/artint.info/code/ailog/ailog_man.html|manual]] * Play with the following knowledge bases: * [[http://www.inf.unibz.it/~franconi/teaching/artint.info/code/ailog/ailog_code/ch05/elect_ask.ail|elect_ask.ail]] electrical wiring example with askables; Example 5.10 from [[http://www.inf.unibz.it/~franconi/teaching/artint.info/html/ArtInt_113.html|Section 5.3.2]] * [[http://www.inf.unibz.it/~franconi/teaching/artint.info/code/ailog/ailog_code/ch05/elect_bug.ail|elect_bug.ail]] the buggy electrical wiring knowledge base from Example 5.14 in [[http://www.inf.unibz.it/~franconi/teaching/artint.info/html/ArtInt_118.html|Section 5.3.4.1]] * [[http://www.inf.unibz.it/~franconi/teaching/artint.info/code/ailog/ailog_code/ch05/elect_bug2.ail|elect_bug2.ail]] the buggy electrical wiring example from Exercise 5.6 * [[http://www.inf.unibz.it/~franconi/teaching/artint.info/code/ailog/ailog_code/ch05/elect_bug3.ail|elect_bug3.ail]] a buggy electrical wiring example, which fails to prove lit_l2, but should succeed * [[http://www.inf.unibz.it/~franconi/teaching/artint.info/code/ailog/ailog_code/ch05/elect_cbd.ail|elect_cbd.ail]] electrical wiring example for consistency-based diagnosis; Example 5.20 in [[http://www.inf.unibz.it/~franconi/teaching/artint.info/html/ArtInt_124.html|Section 5.4.3]] * [[http://www.inf.unibz.it/~franconi/teaching/artint.info/code/ailog/ailog_code/ch05/elect_abd.ail|elect_abd.ail]] electrical wiring example with abduction; Example 5.31 in [[http://www.inf.unibz.it/~franconi/teaching/artint.info/html/ArtInt_133.html|Section 5.6]] * Exercises: [[http://www.inf.unibz.it/~franconi/teaching/artint.info/html/ArtInt_137.html|5.5, 5.6, 5.7, 5.9, 5.13]] ([[teaching:is:diag-rules-solutions|solutions]]) * LAB 8: Planning with Certainty * Do {{ :teaching:is:ex_strips.pdf |Practice Exercise 8.A}} and {{ :teaching:is:ex_csp_planning.pdf |Practice Exercise 8.B}} ({{ :teaching:is:ex_strips_sol.pdf |Practice Exercise 8.A solution}} and {{ :teaching:is:ex_csp_planning_sol.pdf |Practice Exercise 8.B solution}}). * Using the {{ :teaching:is:stripstocsp.jar.zip |STRIPS-to-CSP applet}} exercise with the coffee delivery problems (simple and complete) pre-loaded on the applet - [[https://aispace.org/strips_to_csp/|tutorial]] * NOTE: the translator from STRIPS to CSP is buggy: use {{:teaching:is:delivery-simple-csp_fixed.zip|this file}} as an example of a STRIPS definition for the simple delivery problem with its corresponding CSP version; use the {{:teaching:is:constraint.jar.zip|CSP applet}} * understand the role of of all the variables and constraints * find the original STRIPS definition from the CSP version of it * find **all** the plans giving a (partial) starting state, or giving a (partial) end state, or both, with an horizon of 3.