====== Logic and Constraint Programming ======
----
===== News =====
* **June 28th, 2022**: Dear Students **for the exam scheduled for 30th June bring your laptop to show and discuss about your assignments**
* **June 8th, 2022**: Dear Students **next lecture is scheduled for June 10th, in room AB1**
* **June 4th, 2022**: Dear Students **next lecture is scheduled for June 7th, in room AB2**
* **June 2nd, 2022**: Dear Students the Fourth assignment is online, please check the teaching material below
* **June 1st, 2022**: Dear students remember to fill the course evaluation questionnaire. Instructions can be found at [[https://www.unicam.it/studente/didattica/questionari-sulla-didattica
]]
* **May 30th, 2022**: Dear students **next lecture 1st June will start at 9:30 a.m.**
* **April 29nd, 2022**: Dear students **next lecture 4th May will be a practical lecture during which you will be requested to exercise with the OR-Tool introduced in the previous lecture. Do not forget to bring your laptop!**
* **April 22nd, 2022**: Dear students **The Lecture scheduled for 27th April is canceled for give the opportunity to students to participate to the Career Day https://careerday.unicam.it/**
* **April 22nd, 2022**: Dear students **The Lecture scheduled for 22nd April is canceled**
* **April 8th, 2022**: Dear students **Lectures scheduled for 13rd and 17th of April are canceled**
* **March 24th, 2022**: Dear Students the **lecture scheduled for 25th of March is cancelled**
* **March 23rd, 2022**: Dear Students **Fist assignment is online, please check the teaching material below**
* **March 9th, 2022**: Dear Students **From Friday 11th, lectures will take place in TeamLab room (1st floor Polo Ludovici)**
* **March 2nd, 2022**: Dear Students **lectures will start the 9th of March**
----
===== General Info =====
**Teacher**:
* Prof. Fabrizio Fornari - fabrizio.fornari@unicam.t
* Prof. Lorenzo Rossi - lorenzo.rossi@unicam.it
**ESSE3 Link**
* [[https://didattica.unicam.it/Guide/PaginaADErogata.do?ad_er_id=2021*N0*N0*S2*16866*9986&ANNO_ACCADEMICO=2021&mostra_percorsi=S|Logic and Constraint Programming - AY 2021/22]]
**Scheduling of Lectures**:
* Wednesday 9am-11am
* Friday 9am-11am
**Room**:
* Physical - Team Lab
* Virtual - https://unicam.webex.com/webappng/sites/unicam/dashboard/pmr/lorenzo.rossi [First Part of the Course]
* Virtual - https://unicam.webex.com/webappng/sites/unicam/dashboard/pmr/fabrizio.fornari [Second Part of the Course]
**Students Office hours**:
* Immediately after each lesson or by requesting an appointment via e-mail.
**Communication channels**
* Email: only email coming from the @studenti.unicam.it domain will be processed
* App YoUnicam channel: #LCP
----
===== Study Material =====
**Course Slides**
* 09-March-2022 - {{:didattica:ay2122:lcp:0-lcp-introduction.pdf | Course Introduction}}
* 11-March-2022 - {{ :didattica:ay2122:lcp:csp_introduction.pdf | CSP Introduction}}, [[https://www.math.unipd.it/~frossi/chapter4.pdf | Rossi F., van Beek P., Walsh T. Constraint Programming]]
* 16-March-2022 - {{ :didattica:ay2122:lcp:csp_backtracking_.pdf | CSP Backtracking}}
* 18-March-2022 - {{ :didattica:ay2122:lcp:lcp_2122_5_.pdf | Optimization problems and Minizinc advanced models}}
* 23-March-2022 - {{ :didattica:ay2122:lcp:lcp_2122_7_.pdf | Last Minizinc concepts, Recap on CSP, First assignment presentation}}
* 30-March-2022 - {{ :didattica:ay2122:lcp:lcp_2122_9_.pdf | Rule programming, Rule based systems}}
* 01-April-2022 - {{ :didattica:ay2122:lcp:lcp_2122_10_.pdf | Drools introduction}}
* 06-April-2022 - {{ :didattica:ay2122:lcp:drools_tutorial.zip | Drools demo}}
* 08-April-2022 - {{ :didattica:ay2122:lcp:droolsexercises.pdf | Drools more complex rules}} {{ :didattica:ay2122:lcp:drools_rules.zip | Drools rules examples}} [[https://docs.drools.org/7.67.0.Final/drools-docs/html_single/index.html#_examples_2| Other examples]]
* 20-April-2022 - {{ :didattica:ay2122:lcp:or_tools_01.pdf | OR-Tool Part 1}}
* 29-April-2022 - {{ :didattica:ay2122:lcp:or_tools_02_cpexamples.pdf | OR-Tool Part 2}}
* 04-May-2022 - {{ :didattica:ay2122:lcp:or_tools_03_practiceexercise_and_assignment.pdf |OR-Tool Part}}
* 06-May-2022 - {{ :didattica:ay2122:lcp:lcp-prolog-part_1.pdf | Prolog - Part 1}}
* 11-May-2022 - {{ :didattica:ay2122:lcp:lcp-prolog-part_2.pdf | Prolog - Part 2}}
* 13-May-2022 - {{ :didattica:ay2122:lcp:lcp-prolog-part3.pdf | Prolog - Part 3}}
* 20-May-2022 - {{ :didattica:ay2122:lcp:lcp-prolog-part4.pdf | Prolog - Part 4}}
* 25-May-2022 - {{ :didattica:ay2122:lcp:lcp-prolog-part5.pdf | Prolog - Part 5}}
* 27-May-2022 - {{ :didattica:ay2122:lcp:lcp-prolog-part6.pdf | Prolog - Part 6}}
* 1-June-2022 - {{ :didattica:ay2122:lcp:lcp-prolog-7.pdf | Prolog - Part 7}}
* 7-June-2022 - {{ :didattica:ay2122:lcp:lcp-prolog-8.pdf | Prolog - Part 8}}
* 10-June-2022 - {{ :didattica:ay2122:lcp:maude.pdf | Maude }}
**Recorded Lessons**
* 09-March-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=49f0a017685b9dd66f5c062d1f88b35c | Course Introduction]]
* 11-March-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=967420caff882f6f3d9ae1f51988d4f0 | CSP Introduction]]
* 16-March-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=f62f31acdf5ac236796cf6d82a23366b | CSP Backtracking]]
* 18-March-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=4faaca8398d0c203db2a6cd82d9245cf | Optimization problems and Minizinc advanced models]]
* 23-March-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=62c99596315ae60ae5fc64c5ebb2eba7 | Last Minizinc concepts, Recap on CSP, First assignment presentation]]
* 30-March-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=fd3a84dbea97534a0cd3e973628dd5c4 | Rule based systems]]
* 01-April-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=581a5c822cf315117587e56736c1d5e4 | Drools introduction]]
* 06-April-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=8d6343de5c9a4c46fd892f483f95349c | Drools demo]]
* 08-April-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=d481bd90deb53532ad81620466e314f3 | Drools final lecture and second assignment presentation]]
* 20-April-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=17ff909e0ce42b6c917d185b6369034a | OR-Tool Part 1]]
* 29-April-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=3d85872f58983c1202e67d0a6fdb1080 | OR-Tool Part 2]]
* 04-May-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=1eb6c56d3b6d3aca1dc18baebdc26db2| OR-Tool Part 3]]
* 06-May-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=3c72af9ccd0a795851ff86e08cf831cf | Prolog - Part 1]]
* 11-May-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=50c5a260c5b22f5cbdc763401fd6584b | Prolog - Part 2]]
* 13-May-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=7889fe4f505ac85db008a0f860c30c1c | Prolog - Part 3]]
* 20-May-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=7cfd77958ac5c662122abc209bab2d4e | Prolog - Part 4]]
* 25-May-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=37ae3f7421280c187c19ce9de755fedc | Prolog - Part 5]]
* 27-May-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=2b9ed9af4071e7120e781cf38794781d | Prolog - Part 6]]
* 1-June-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=f9dfab3c5130e3ba551c1533a846142a | Prolog - Part 7]]
* 7-June-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=65cc80d4cbe59fc396cbd9d902595c51 | Prolog - Part 8]]
* 10-June-2022 - [[https://unicam.webex.com/unicam/ldr.php?RCID=3bfd2efc631bb97f7bf947ad1d5c1104 | Maude ]]
**Textbooks**
* Stuart J. Russell and Peter Norvig. Artificial Intelligence A Modern Approach. Third Edition. Pearson, 2016.
* Bratko, Ivan. Prolog programming for artificial intelligence 4th edition. Pearson Education, 2011.
* Amador, Lucas. Drools developer's cookbook. Packt Publishing Ltd, 2012.
* The MiniZinc Handbook.
----
===== Exam =====
**Exam Rules**
* During the course students will be provided with assignments that must be delivered by email to the professors 5 days before the exam date. Those individual assignments will be discussed in an oral exam. Therefore, the oral exam will include the discussion of the assignments and questions related to the topics treated during the lessons.
**Assignments**
* {{ :didattica:ay2122:lcp:lcp_first_assignment.pdf | 1st Assignment - Minizinc}}
* {{ :didattica:ay2122:lcp:lcp_second_assignment.pdf | 2nd Assignment - Drools}}
* {{ :didattica:ay2122:lcp:or-tools_-_assignment.pdf | 3rd Assignment - OR-Tools}}
* {{ :didattica:ay2122:lcp:prolog_-_assignment.pdf | 4th Assignment - Prolog}}
**Exam Dates**
* 30/06/2022 - Last day to deliver the assignments 24/06/2022 (midnight)
* 14/07/2022 - Last day to deliver the assignments 08/07/2022 (midnight)
* 28/07/2022 - Last day to deliver the assignments 22/07/2022 (midnight)
----
===== Additional Material =====
**Student Questionnaire**
* Tell us about you :D --> [[https://docs.google.com/forms/d/e/1FAIpQLScouaVt01Eh7r7DNK3Ivqivo5f43AEMEU5V84W5_wxm7ys0Pg/viewform?usp=sf_link|Questionnaire]]
**Prolog Programs**
* [[https://github.com/FabrizioFornari/prolog-programs.git | Prolog Programs]]
* [[https://github.com/FabrizioFornari/maude-examples.git | Maude Examples]]
----