<?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=Leonidas</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=Leonidas"/>
	<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/pages/Eri:Kaast%C3%B6%C3%B6/Leonidas"/>
	<updated>2026-04-09T12:54:34Z</updated>
	<subtitle>Kasutaja kaastöö</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=MSc_seminar_I_2022_Spring&amp;diff=10366</id>
		<title>MSc seminar I 2022 Spring</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=MSc_seminar_I_2022_Spring&amp;diff=10366"/>
		<updated>2022-01-24T12:39:39Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: /* ITX8301 Magistriseminar I / MSc Seminar I */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=ITX8301 Magistriseminar I / MSc Seminar I=&lt;br /&gt;
&lt;br /&gt;
Lecturer:&lt;br /&gt;
&lt;br /&gt;
* [https://taltech.ee/en/contacts/leonidas-tsiopoulos Leonidas Tsiopoulos]&lt;br /&gt;
&lt;br /&gt;
Spring 2022: Tue 16:00-17:30 online only in [[https://teams.microsoft.com/l/team/19%3aP-pCq0TTDVLM5QVHFU_TQSDIHGniNlT4yGleTW-fIPQ1%40thread.tacv2/conversations?groupId=a2f03dce-0a9b-4697-b178-8224243b0abe&amp;amp;tenantId=3efd4d88-9b88-4fc9-b6c0-c7ca50f1db57 MS Teams Team for ITX8301 in Spring 2022]].&lt;br /&gt;
&lt;br /&gt;
Preliminary plan:&lt;br /&gt;
* Jan 25: Introduction. How to perform search and evaluate sources I&lt;br /&gt;
[https://scholar.google.com Google Scholar], [https://dblp.uni-trier.de DBLP], [https://www.taltech.ee/en/library Tallinn University of Technology Library], [https://digikogu.taltech.ee/en/Search/Items?ItemTypes=18&amp;amp;ItemTypes=9&amp;amp;ItemTypes=19&amp;amp;Query%914%93=&amp;amp;Query%915%93=&amp;amp;Query%918%93=&amp;amp;Query%917%93=IVSM Theses defended in Software Engineering MSc in Tallinn University of Technology]. To access the research papers in various portals, please consider using [https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/kauguehendus-vpn/kaugtoeoeuehendus-eduvpn EduVPN]&lt;br /&gt;
&lt;br /&gt;
* Feb 1: How to perform search and evaluate sources II. &lt;br /&gt;
&lt;br /&gt;
* Task: deadline March 1: Pick a research paper (with the help of supervisor / seminar lecturer), read it and be prepared to present the results.&lt;br /&gt;
&lt;br /&gt;
* Feb 8 - Discussion on how research papers are written and how to read them. Please watch the following video before the seminar: [https://www.microsoft.com/en-us/research/academic-program/write-great-research-paper/]&lt;br /&gt;
* Feb 15 Research talks by example. Please watch some talk videos, e.g. [https://esec-fse19.ut.ee/program/keynotes/ ESEC/FSE2019 keynotes] [https://www.youtube.com/watch?v=vgdVIeQKH-E Satya Nadella&amp;#039;s keynote at CVPR2020] (Current videos from the CVF youtube channel [https://www.youtube.com/channel/UC0n76gicaarsN_Y9YShWwhw]) (more links to be provided according to your interests).&lt;br /&gt;
* Feb 22 Discussion on how to give research talks. Please watch the video ahead of the seminar [https://www.microsoft.com/en-us/research/academic-program/give-great-research-talk/]&lt;br /&gt;
* March 1: Student presentations round I (research paper of interest or problem statement, 20 min presentation)&lt;br /&gt;
&lt;br /&gt;
* March 8: Student presentations round I (research paper of interest or problem statement, 20 min presentation)&lt;br /&gt;
&lt;br /&gt;
* March 15: Student presentations round I (research paper of interest or problem statement, 20 min presentation) &lt;br /&gt;
&lt;br /&gt;
* March 22 : Student presentations round I (additional slot) (research paper of interest or problem statement, 20 min presentation)&lt;br /&gt;
&lt;br /&gt;
* March 29: What constitutes a good [[Problem Statement]] for MSc thesis? &lt;br /&gt;
* April 5: Interactive session on planned problem statements&lt;br /&gt;
* April 12: Structured writing in Latex&lt;br /&gt;
* April 19: Discussion of submissions (submissions due on April 30)&lt;br /&gt;
* April 26:  Student presentations II&lt;br /&gt;
**&lt;br /&gt;
**&lt;br /&gt;
**&lt;br /&gt;
**&lt;br /&gt;
* May 3: Student presentations II&lt;br /&gt;
&lt;br /&gt;
**&lt;br /&gt;
* May 10: Student presentations II&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student presentations ==&lt;br /&gt;
&lt;br /&gt;
On your MSc topic&lt;br /&gt;
&lt;br /&gt;
April - May&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The discussions in Teams.&lt;br /&gt;
&lt;br /&gt;
== Thesis topics ==&lt;br /&gt;
&lt;br /&gt;
[https://cs.ttu.ee/services/protsessor|List of thesis topics for defence]&lt;br /&gt;
&lt;br /&gt;
== Methods for research ==&lt;br /&gt;
&lt;br /&gt;
[[Selecting the Research Method]]&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
==ITX8301:==&lt;br /&gt;
&lt;br /&gt;
* 50% Written problem statement.&lt;br /&gt;
* 20% Presentation of research paper (peresentation session I).&lt;br /&gt;
* 30% Final presentation and participation in sessions where fellow students give presentations.&lt;br /&gt;
&lt;br /&gt;
==ITX8302:==&lt;br /&gt;
&lt;br /&gt;
*    20% of 100%: Problem statement and methodology.&lt;br /&gt;
*    50% of 100%: Written background and related work submission.&lt;br /&gt;
*    30% of 100%: Your mock defence talk and participation in seminars where other students give talks. Note that you will need to submit your current draft of the thesis by the time you give the talk. The draft is not marked, but it will be used for questions after your talk. &lt;br /&gt;
&lt;br /&gt;
The final grade will be calculated as follows from the sum of the above results:&lt;br /&gt;
&lt;br /&gt;
*    90% or more: 5&lt;br /&gt;
*    80% or more: 4&lt;br /&gt;
*    70% or more: 3&lt;br /&gt;
*    60% or more: 2&lt;br /&gt;
*    50% or more: 1&lt;br /&gt;
*    less than 50%: 0&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=MSc_seminar_I_2022_Spring&amp;diff=10365</id>
		<title>MSc seminar I 2022 Spring</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=MSc_seminar_I_2022_Spring&amp;diff=10365"/>
		<updated>2022-01-24T12:34:37Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: /* ITX8301 Magistriseminar I / MSc Seminar I */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=ITX8301 Magistriseminar I / MSc Seminar I=&lt;br /&gt;
&lt;br /&gt;
Lecturer:&lt;br /&gt;
&lt;br /&gt;
* [https://taltech.ee/en/contacts/leonidas-tsiopoulos Leonidas Tsiopoulos]&lt;br /&gt;
&lt;br /&gt;
Spring 2022: Tue 16:00-17:30 online only in [[https://teams.microsoft.com/l/team/19%3aP-pCq0TTDVLM5QVHFU_TQSDIHGniNlT4yGleTW-fIPQ1%40thread.tacv2/conversations?groupId=a2f03dce-0a9b-4697-b178-8224243b0abe&amp;amp;tenantId=3efd4d88-9b88-4fc9-b6c0-c7ca50f1db57 MS Teams Team for ITX8301 in Spring 2022]].&lt;br /&gt;
&lt;br /&gt;
Preliminary plan:&lt;br /&gt;
* Jan 25: Introduction. How to perform search and evaluate sources I&lt;br /&gt;
[https://scholar.google.com Google Scholar], [https://academic.microsoft.com Microsoft Academic Search], [https://dblp.uni-trier.de DBLP], [https://www.taltech.ee/en/library Tallinn University of Technology Library], [https://digikogu.taltech.ee/en/Search/Items?ItemTypes=18&amp;amp;ItemTypes=9&amp;amp;ItemTypes=19&amp;amp;Query%914%93=&amp;amp;Query%915%93=&amp;amp;Query%918%93=&amp;amp;Query%917%93=IVSM Theses defended in Software Engineering MSc in Tallinn University of Technology]. To access the research papers in various portals, please consider using [https://confluence.ttu.ee/it-info/it-arvuti-ja-oppetoeoekoht/kauguehendus-vpn/kaugtoeoeuehendus-eduvpn EduVPN]&lt;br /&gt;
&lt;br /&gt;
* Feb 1: How to perform search and evaluate sources II. &lt;br /&gt;
&lt;br /&gt;
* Task: deadline March 1: Pick a research paper (with the help of supervisor / seminar lecturer), read it and be prepared to present the results.&lt;br /&gt;
&lt;br /&gt;
* Feb 8 - Discussion on how research papers are written and how to read them. Please watch the following video before the seminar: [https://www.microsoft.com/en-us/research/academic-program/write-great-research-paper/]&lt;br /&gt;
* Feb 15 Research talks by example. Please watch some talk videos, e.g. [https://esec-fse19.ut.ee/program/keynotes/ ESEC/FSE2019 keynotes] [https://www.youtube.com/watch?v=vgdVIeQKH-E Satya Nadella&amp;#039;s keynote at CVPR2020] (Current videos from the CVF youtube channel [https://www.youtube.com/channel/UC0n76gicaarsN_Y9YShWwhw]) (more links to be provided according to your interests).&lt;br /&gt;
* Feb 22 Discussion on how to give research talks. Please watch the video ahead of the seminar [https://www.microsoft.com/en-us/research/academic-program/give-great-research-talk/]&lt;br /&gt;
* March 1: Student presentations round I (research paper of interest or problem statement, 20 min presentation)&lt;br /&gt;
&lt;br /&gt;
* March 8: Student presentations round I (research paper of interest or problem statement, 20 min presentation)&lt;br /&gt;
&lt;br /&gt;
* March 15: Student presentations round I (research paper of interest or problem statement, 20 min presentation) &lt;br /&gt;
&lt;br /&gt;
* March 22 : Student presentations round I (additional slot) (research paper of interest or problem statement, 20 min presentation)&lt;br /&gt;
&lt;br /&gt;
* March 29: What constitutes a good [[Problem Statement]] for MSc thesis? &lt;br /&gt;
* April 5: Interactive session on planned problem statements&lt;br /&gt;
* April 12: Structured writing in Latex&lt;br /&gt;
* April 19: Discussion of submissions (submissions due on April 30)&lt;br /&gt;
* April 26:  Student presentations II&lt;br /&gt;
**&lt;br /&gt;
**&lt;br /&gt;
**&lt;br /&gt;
**&lt;br /&gt;
* May 3: Student presentations II&lt;br /&gt;
&lt;br /&gt;
**&lt;br /&gt;
* May 10: Student presentations II&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Student presentations ==&lt;br /&gt;
&lt;br /&gt;
On your MSc topic&lt;br /&gt;
&lt;br /&gt;
April - May&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The discussions in Teams.&lt;br /&gt;
&lt;br /&gt;
== Thesis topics ==&lt;br /&gt;
&lt;br /&gt;
[https://cs.ttu.ee/services/protsessor|List of thesis topics for defence]&lt;br /&gt;
&lt;br /&gt;
== Methods for research ==&lt;br /&gt;
&lt;br /&gt;
[[Selecting the Research Method]]&lt;br /&gt;
&lt;br /&gt;
= Grading =&lt;br /&gt;
&lt;br /&gt;
==ITX8301:==&lt;br /&gt;
&lt;br /&gt;
* 50% Written problem statement.&lt;br /&gt;
* 20% Presentation of research paper (peresentation session I).&lt;br /&gt;
* 30% Final presentation and participation in sessions where fellow students give presentations.&lt;br /&gt;
&lt;br /&gt;
==ITX8302:==&lt;br /&gt;
&lt;br /&gt;
*    20% of 100%: Problem statement and methodology.&lt;br /&gt;
*    50% of 100%: Written background and related work submission.&lt;br /&gt;
*    30% of 100%: Your mock defence talk and participation in seminars where other students give talks. Note that you will need to submit your current draft of the thesis by the time you give the talk. The draft is not marked, but it will be used for questions after your talk. &lt;br /&gt;
&lt;br /&gt;
The final grade will be calculated as follows from the sum of the above results:&lt;br /&gt;
&lt;br /&gt;
*    90% or more: 5&lt;br /&gt;
*    80% or more: 4&lt;br /&gt;
*    70% or more: 3&lt;br /&gt;
*    60% or more: 2&lt;br /&gt;
*    50% or more: 1&lt;br /&gt;
*    less than 50%: 0&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=9121</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=9121"/>
		<updated>2020-02-14T08:47:31Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: Leonidas Tsiopoulos &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: leonidas.tsiopoulos ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: Maksym Bortin &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: maksym.bortin ätt ttu.ee, room B404 in the Cybernetics Building &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Evelin Halling &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: evelin.halling ätt ttu.ee &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Tuesdays 10:00, ICT-341 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Tuesdays 12:00, ICT-341 - Evelin Halling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: (To Be Updated) &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*  ... &amp;lt;br&amp;gt;&lt;br /&gt;
** Exam is for those who have not passed any of the tests or want to improve their final mark&lt;br /&gt;
&amp;lt;!--* ... &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan - To be updated for Module II and III==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1: Model checking   [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: (05.03.2019)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;12.03.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 6]]: Program specifications (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7]]: Proving partial correctness of programs (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 10]]: Verifying nondeterministic and parallel programs  (02.04.2019)&lt;br /&gt;
* Practicing for Test 2: Deductive verification of non-deterministic and parallel programs (04.04.2019 at lab time)&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2: Deductive verification of sequential, non-deterministic and parallel programs (&amp;#039;&amp;#039;&amp;#039;09.04.2019,at 12.00&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:Software Synthesis - Overview of Temporal Synthesis - Lecture 11.pdf|Lecture 11]]: Software synthesis I (16.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Introduction to Acacia - Lecture 12.pdf|Lecture 12]]: Software synthesis II (23.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf|Lecture 13]]: Software synthesis III (30.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis with Acacia part III - Lecture 14.pdf|Lecture 14]]: Software synthesis IV (7.05.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Lecture V - Recap.pdf|Lecture 15]]: Software synthesis (recap) and practicing for test  (14.05.2019)&lt;br /&gt;
* Test 3: Software synthesis (&amp;#039;&amp;#039;&amp;#039;16.05.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* Retake of Test 2, 2nd task: (&amp;#039;&amp;#039;&amp;#039;21.05.2019 at 12.00 (New!)&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:Test_2_2019_lahendus.pdf|Eample_Solution]]: (&amp;#039;&amp;#039;&amp;#039;Example solution of Task2 (NEW!)&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==Labs - To be updated from lab 4 onwards==&lt;br /&gt;
* Exercise Environment for Module II:&lt;br /&gt;
** Download and install the environment: [[Media:HoareLogic.tar| Hoare Logic environment]]&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment I: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Assignment II: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12, page 172]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13:&lt;br /&gt;
** [http://web.iitd.ac.in/~sumeet/slide3.pdf LTL]&lt;br /&gt;
* Lab 14:&lt;br /&gt;
** [[Media:ITI8531_LTL_exercises.pdf|Exercises]]&lt;br /&gt;
** [http://goal.im.ntu.edu.tw/wiki/doku.php GOAL tool]&lt;br /&gt;
** [http://www.lsv.fr/~gastin/ltl2ba/ LTL2BA]&lt;br /&gt;
* Lab 15&lt;br /&gt;
** [[Media:ITI8531_LTL_assignments.pdf|LTL Assignment]]&lt;br /&gt;
** [[Media:Software Synthesis and Verification LTL Assignment-Updated Spec.pdf|Updated Spec for LTL Synthesis Assignment]]&lt;br /&gt;
** [[Media:Guidelines for Lab Exercise Report for Synthesis with Acacia.pdf|Guidelines for Assignment]]&lt;br /&gt;
** [[Media:Acacia Installation Commands.pdf|Acacia Tool Installation Commands]]&lt;br /&gt;
** [[Media:Acacia_Manual.pdf|Acacia Tool Installation Guidelines and Manual for Command Line Options]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment on 17 May 2018&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=9120</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=9120"/>
		<updated>2020-02-14T08:38:27Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: /* Labs - To be updated from lab 4 on wards */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: Leonidas Tsiopoulos &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: leonidas.tsiopoulos ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: Maksym Bordin &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: maksym.bordin ätt ttu.ee, room B404 in the Cybernetics Building &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Evelin Halling &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: evelin.halling ätt ttu.ee &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Tuesdays 10:00, ICT-341 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Tuesdays 12:00, ICT-341 - Evelin Halling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: (To Be Updated) &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*  ... &amp;lt;br&amp;gt;&lt;br /&gt;
** Exam is for those who have not passed any of the tests or want to improve their final mark&lt;br /&gt;
&amp;lt;!--* ... &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan - To be updated for Module II and III==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1: Model checking   [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: (05.03.2019)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;12.03.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 6]]: Program specifications (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7]]: Proving partial correctness of programs (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 10]]: Verifying nondeterministic and parallel programs  (02.04.2019)&lt;br /&gt;
* Practicing for Test 2: Deductive verification of non-deterministic and parallel programs (04.04.2019 at lab time)&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2: Deductive verification of sequential, non-deterministic and parallel programs (&amp;#039;&amp;#039;&amp;#039;09.04.2019,at 12.00&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:Software Synthesis - Overview of Temporal Synthesis - Lecture 11.pdf|Lecture 11]]: Software synthesis I (16.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Introduction to Acacia - Lecture 12.pdf|Lecture 12]]: Software synthesis II (23.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf|Lecture 13]]: Software synthesis III (30.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis with Acacia part III - Lecture 14.pdf|Lecture 14]]: Software synthesis IV (7.05.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Lecture V - Recap.pdf|Lecture 15]]: Software synthesis (recap) and practicing for test  (14.05.2019)&lt;br /&gt;
* Test 3: Software synthesis (&amp;#039;&amp;#039;&amp;#039;16.05.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* Retake of Test 2, 2nd task: (&amp;#039;&amp;#039;&amp;#039;21.05.2019 at 12.00 (New!)&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:Test_2_2019_lahendus.pdf|Eample_Solution]]: (&amp;#039;&amp;#039;&amp;#039;Example solution of Task2 (NEW!)&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==Labs - To be updated from lab 4 onwards==&lt;br /&gt;
* Exercise Environment for Module II:&lt;br /&gt;
** Download and install the environment: [[Media:HoareLogic.tar| Hoare Logic environment]]&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment I: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Assignment II: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12, page 172]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13:&lt;br /&gt;
** [http://web.iitd.ac.in/~sumeet/slide3.pdf LTL]&lt;br /&gt;
* Lab 14:&lt;br /&gt;
** [[Media:ITI8531_LTL_exercises.pdf|Exercises]]&lt;br /&gt;
** [http://goal.im.ntu.edu.tw/wiki/doku.php GOAL tool]&lt;br /&gt;
** [http://www.lsv.fr/~gastin/ltl2ba/ LTL2BA]&lt;br /&gt;
* Lab 15&lt;br /&gt;
** [[Media:ITI8531_LTL_assignments.pdf|LTL Assignment]]&lt;br /&gt;
** [[Media:Software Synthesis and Verification LTL Assignment-Updated Spec.pdf|Updated Spec for LTL Synthesis Assignment]]&lt;br /&gt;
** [[Media:Guidelines for Lab Exercise Report for Synthesis with Acacia.pdf|Guidelines for Assignment]]&lt;br /&gt;
** [[Media:Acacia Installation Commands.pdf|Acacia Tool Installation Commands]]&lt;br /&gt;
** [[Media:Acacia_Manual.pdf|Acacia Tool Installation Guidelines and Manual for Command Line Options]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment on 17 May 2018&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:HoareLogic.tar&amp;diff=9119</id>
		<title>Fail:HoareLogic.tar</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:HoareLogic.tar&amp;diff=9119"/>
		<updated>2020-02-14T08:36:59Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=9118</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=9118"/>
		<updated>2020-02-14T08:36:32Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: /* Labs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: Leonidas Tsiopoulos &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: leonidas.tsiopoulos ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: Maksym Bordin &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: maksym.bordin ätt ttu.ee, room B404 in the Cybernetics Building &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Evelin Halling &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: evelin.halling ätt ttu.ee &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Tuesdays 10:00, ICT-341 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Tuesdays 12:00, ICT-341 - Evelin Halling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: (To Be Updated) &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*  ... &amp;lt;br&amp;gt;&lt;br /&gt;
** Exam is for those who have not passed any of the tests or want to improve their final mark&lt;br /&gt;
&amp;lt;!--* ... &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan - To be updated for Module II and III==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1: Model checking   [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: (05.03.2019)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;12.03.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 6]]: Program specifications (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7]]: Proving partial correctness of programs (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 10]]: Verifying nondeterministic and parallel programs  (02.04.2019)&lt;br /&gt;
* Practicing for Test 2: Deductive verification of non-deterministic and parallel programs (04.04.2019 at lab time)&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2: Deductive verification of sequential, non-deterministic and parallel programs (&amp;#039;&amp;#039;&amp;#039;09.04.2019,at 12.00&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:Software Synthesis - Overview of Temporal Synthesis - Lecture 11.pdf|Lecture 11]]: Software synthesis I (16.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Introduction to Acacia - Lecture 12.pdf|Lecture 12]]: Software synthesis II (23.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf|Lecture 13]]: Software synthesis III (30.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis with Acacia part III - Lecture 14.pdf|Lecture 14]]: Software synthesis IV (7.05.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Lecture V - Recap.pdf|Lecture 15]]: Software synthesis (recap) and practicing for test  (14.05.2019)&lt;br /&gt;
* Test 3: Software synthesis (&amp;#039;&amp;#039;&amp;#039;16.05.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* Retake of Test 2, 2nd task: (&amp;#039;&amp;#039;&amp;#039;21.05.2019 at 12.00 (New!)&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:Test_2_2019_lahendus.pdf|Eample_Solution]]: (&amp;#039;&amp;#039;&amp;#039;Example solution of Task2 (NEW!)&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==Labs - To be updated from lab 4 on wards==&lt;br /&gt;
* Exercise Environment for Module II:&lt;br /&gt;
** Download and install the environment: [[Media:HoareLogic.tar| Hoare Logic environment]]&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment I: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Assignment II: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12, page 172]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13:&lt;br /&gt;
** [http://web.iitd.ac.in/~sumeet/slide3.pdf LTL]&lt;br /&gt;
* Lab 14:&lt;br /&gt;
** [[Media:ITI8531_LTL_exercises.pdf|Exercises]]&lt;br /&gt;
** [http://goal.im.ntu.edu.tw/wiki/doku.php GOAL tool]&lt;br /&gt;
** [http://www.lsv.fr/~gastin/ltl2ba/ LTL2BA]&lt;br /&gt;
* Lab 15&lt;br /&gt;
** [[Media:ITI8531_LTL_assignments.pdf|LTL Assignment]]&lt;br /&gt;
** [[Media:Software Synthesis and Verification LTL Assignment-Updated Spec.pdf|Updated Spec for LTL Synthesis Assignment]]&lt;br /&gt;
** [[Media:Guidelines for Lab Exercise Report for Synthesis with Acacia.pdf|Guidelines for Assignment]]&lt;br /&gt;
** [[Media:Acacia Installation Commands.pdf|Acacia Tool Installation Commands]]&lt;br /&gt;
** [[Media:Acacia_Manual.pdf|Acacia Tool Installation Guidelines and Manual for Command Line Options]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment on 17 May 2018&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=9117</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=9117"/>
		<updated>2020-02-14T08:28:07Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: Leonidas Tsiopoulos &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: leonidas.tsiopoulos ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: Maksym Bordin &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: maksym.bordin ätt ttu.ee, room B404 in the Cybernetics Building &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Evelin Halling &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: evelin.halling ätt ttu.ee &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Tuesdays 10:00, ICT-341 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Tuesdays 12:00, ICT-341 - Evelin Halling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams: (To Be Updated) &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*  ... &amp;lt;br&amp;gt;&lt;br /&gt;
** Exam is for those who have not passed any of the tests or want to improve their final mark&lt;br /&gt;
&amp;lt;!--* ... &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan - To be updated for Module II and III==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1: Model checking   [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: (05.03.2019)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;12.03.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 6]]: Program specifications (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7]]: Proving partial correctness of programs (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 10]]: Verifying nondeterministic and parallel programs  (02.04.2019)&lt;br /&gt;
* Practicing for Test 2: Deductive verification of non-deterministic and parallel programs (04.04.2019 at lab time)&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2: Deductive verification of sequential, non-deterministic and parallel programs (&amp;#039;&amp;#039;&amp;#039;09.04.2019,at 12.00&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:Software Synthesis - Overview of Temporal Synthesis - Lecture 11.pdf|Lecture 11]]: Software synthesis I (16.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Introduction to Acacia - Lecture 12.pdf|Lecture 12]]: Software synthesis II (23.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf|Lecture 13]]: Software synthesis III (30.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis with Acacia part III - Lecture 14.pdf|Lecture 14]]: Software synthesis IV (7.05.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Lecture V - Recap.pdf|Lecture 15]]: Software synthesis (recap) and practicing for test  (14.05.2019)&lt;br /&gt;
* Test 3: Software synthesis (&amp;#039;&amp;#039;&amp;#039;16.05.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* Retake of Test 2, 2nd task: (&amp;#039;&amp;#039;&amp;#039;21.05.2019 at 12.00 (New!)&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:Test_2_2019_lahendus.pdf|Eample_Solution]]: (&amp;#039;&amp;#039;&amp;#039;Example solution of Task2 (NEW!)&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment I: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Assignment II: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12, page 172]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13:&lt;br /&gt;
** [http://web.iitd.ac.in/~sumeet/slide3.pdf LTL]&lt;br /&gt;
* Lab 14:&lt;br /&gt;
** [[Media:ITI8531_LTL_exercises.pdf|Exercises]]&lt;br /&gt;
** [http://goal.im.ntu.edu.tw/wiki/doku.php GOAL tool]&lt;br /&gt;
** [http://www.lsv.fr/~gastin/ltl2ba/ LTL2BA]&lt;br /&gt;
* Lab 15&lt;br /&gt;
** [[Media:ITI8531_LTL_assignments.pdf|LTL Assignment]]&lt;br /&gt;
** [[Media:Software Synthesis and Verification LTL Assignment-Updated Spec.pdf|Updated Spec for LTL Synthesis Assignment]]&lt;br /&gt;
** [[Media:Guidelines for Lab Exercise Report for Synthesis with Acacia.pdf|Guidelines for Assignment]]&lt;br /&gt;
** [[Media:Acacia Installation Commands.pdf|Acacia Tool Installation Commands]]&lt;br /&gt;
** [[Media:Acacia_Manual.pdf|Acacia Tool Installation Guidelines and Manual for Command Line Options]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment on 17 May 2018&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=ITI8610&amp;diff=8975</id>
		<title>ITI8610</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=ITI8610&amp;diff=8975"/>
		<updated>2019-12-09T12:19:20Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: /* Module II: : Assured Software Analytics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8610 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Co-lecturer&amp;#039;&amp;#039;&amp;#039;: Leonidas Tsiopoulos &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Co-lecturer&amp;#039;&amp;#039;&amp;#039;: Aleksandr Lenin &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 16:00, ICT-A2 &amp;#039;&amp;#039;&amp;#039;NEW!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 17.45, ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Lab supervisors:&lt;br /&gt;
** Aleksandr Lenin (aleksandr.lenin ätt ttu.ee) - Module I&lt;br /&gt;
** Jüri Vain (juri.vain ätt ttu.ee),  Leonidas Tsiopoulos (letsio ätt ttu.ee) - Module II&lt;br /&gt;
&lt;br /&gt;
==News 2019==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Deadline for submitting lab assignments of Module II  -- TBA&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Please fill in [https://doodle.com/poll/3g7333mkn59wp6fe this] Doodle poll and indicate your availability for Module I: Security Assurance lecture and practice slots. Please note that everyone is free to make more than a single choice, you can mark as many slots as you see fit, as well as that every person has 3 options: yes, no, ifneedbe, where yes means this time slot is free for you and you are available at this time, no means you are absolutely unavailable, and ifneedbe means this time slot is unconvenient for you, but if necessary you will be able to make it.&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
# [[Media:ITI_8610_lecture_1.pdf|Lecture 1]]: Introduction to software assurance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Module I: Assurance processes, risk management &amp;amp; security assurance====&lt;br /&gt;
# [[Media:ITI8610-2019-Risk.pdf|Risks - definitions, terminology, risk taxonomies]]&lt;br /&gt;
# [[Media:Risk-Taxonomy-FAIR.pdf|FAIR Risk Taxonomy]]&lt;br /&gt;
# [[Media:ITI8610-Riskmanagement.pdf|Risk Management]]&lt;br /&gt;
# [[Media:ITI8610-2019-FAIR_Template.zip|Qualitative Risk Analysis Template]]&lt;br /&gt;
# [[Media:ITB8811-2019-Probability.pdf|Theory of Probability]]&lt;br /&gt;
# [[Media:ITI8610-2019-Reliability.pdf|Reliability and Availability]]&lt;br /&gt;
# [[Media:ITI8610-2019-Security_Modeling.pdf|Security Modeling. Quantitative Risk Management]]&lt;br /&gt;
&lt;br /&gt;
====Module II: : Assured Software Analytics ====&lt;br /&gt;
* [[Media:Module_III_Lecture_1.pdf|Module II Lecture 1]]: Design by Contract&lt;br /&gt;
* [[Media:Module III 2nd lecture JML Specification Cases.pdf|Module II Lecture 2]]: Specification cases&lt;br /&gt;
* [[Media:e.pdf|Module II Lecture 3]]: Multi-view contracts of cyber-physical systems&lt;br /&gt;
* [[Media:Module III 4th lecture.pdf|Module II Lecture 4]]: JML contracts for OOP methods&lt;br /&gt;
* [[Media:OpenJML - Solvers - 15_11_2018.pdf|Module II Lecture 5]]: OpenJML and SMT Solvers&lt;br /&gt;
* [[Media:WorstPracticesInSWDevelopment.pdf|Module II Lecture 6]] (Guest lecture): M. Markvardt (ASA Quality) &amp;quot;Worst Practices in Software Quality a.k.a How to Deal with Risks&amp;quot;&lt;br /&gt;
* Lecture 7 (Guest lecture): Dr. Mohammad Al-Taye (Philadelphia Univ., Jordan) &amp;quot;QA by testing&amp;quot;&lt;br /&gt;
* Lecture 8: Safety analysis techniques (28.11.2019)&lt;br /&gt;
* [[Media:Automotive audio amplifiers.pdf|Module II Lecture 9]] (Guest lecture): R. Kadastik (Adacore) &amp;quot;Automotive audio amplifiers&amp;quot; (5.12.2019)&lt;br /&gt;
&lt;br /&gt;
==Practice Assignments ==&lt;br /&gt;
Possible topics for course project (same topic can be chosen by several teams) &lt;br /&gt;
* Smart parking slot /Nutikas parkla&lt;br /&gt;
* Moon habitad IGLUNA safety system / Kuuelamu IGLUNA ohutuse tagamise süsteem&lt;br /&gt;
* Moon habitad IGLUNA security system / Kuuelamu IGLUNA turbesüsteem&lt;br /&gt;
* Railway crossing control / Raudtee ülesõidukoha juhtimine&lt;br /&gt;
* Nutikas autode paigutaja praamidele&lt;br /&gt;
* Automaatne haigla ravimite annustamise ja kohaletoimetamise süsteem&lt;br /&gt;
* Smart home air quality control &lt;br /&gt;
* Automaatse tunnustamisega trahvisüsteem&lt;br /&gt;
* Automaatne videosalvestussüsteem&lt;br /&gt;
* TESLA (auto) juhtimisüsteem &lt;br /&gt;
* Bolt tõukerataste rentimissüsteem&lt;br /&gt;
* Biometric locking systems (ukse- ja relvalukud).&lt;br /&gt;
&lt;br /&gt;
==Project Teams==&lt;br /&gt;
* Team 1: Allan Paalo, Siim Suviste, Oliver Tooming &amp;quot;TESLA self-driving car&amp;quot;&lt;br /&gt;
* Team 2: Krõõt Grete Mänd, Ilja Samoilov &amp;quot;Smart home air quality control&amp;quot;&lt;br /&gt;
* Team 3: Veronika Zamakhova, Sergei Zarembo, Dmitri Golovatš &amp;quot;Bolt tõukerataste rentimissüsteem&amp;quot;&lt;br /&gt;
* Team 4: Magnus Teekivi, Ly Tempel, Mirjam Pajumägi &amp;quot;Railway crossing control / Raudtee ülesõidukoha juhtimine&amp;quot;&lt;br /&gt;
* Team 5: Kristjan-Martin Kirjanen, Kaarel Värk, Andreas Nagel &amp;quot; Biometric locking systems&amp;quot;&lt;br /&gt;
* Team 6: Rasmus Tomsen, Henry Härm &amp;quot;Smart video recording system / Automaatne videosalvestuse süsteem&amp;quot;&lt;br /&gt;
* Team 7: Johanna Kammiste,  Igor Podgainõi &amp;quot;Smart parking slot / Nutikas parkla I&amp;quot;&lt;br /&gt;
* Team 8: Kristjan Vool, Regina Helena Lõpp-Elmeste &amp;quot;Smart parking slot / Nutikas parkla II&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Module I: Security Assurance ====&lt;br /&gt;
Assignment 1: Perform a qualitative Risk Analysis of your case study using FAIR (Factor Analysis of Information Security Risk) framework and submit a report in pdf format.&amp;lt;br /&amp;gt;&lt;br /&gt;
Assignment 2: Model one threat in the form of an ADT (Attack-Defense Tree) using the ADTool software http://satoss.uni.lu/members/piotr/adtool/ , export your model in XML format (File-&amp;gt;export) and submit the generated XML file.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Module II ====&lt;br /&gt;
* [[Media:Project_assignment.pdf|Lab instruction]]: Lab assignment plan&lt;br /&gt;
* [[Media:OpenJML installation instructions.pdf|OpenJML Installation]]: OpenJML Installation Instructions&lt;br /&gt;
NB!&lt;br /&gt;
To report completed lab assignments go to web page https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
and register as user with uniID of TUT&lt;br /&gt;
* Some reporting examples from earlier years&lt;br /&gt;
** [[Media:Climate_control.pdf| Smart home climate control]]: Project report&lt;br /&gt;
** [[Media:Energy_control.pdf| Smart house energy management]]: Project report&lt;br /&gt;
&lt;br /&gt;
== Grading ==&lt;br /&gt;
&lt;br /&gt;
Each of the two modules is graded independently on the scale 0-100 points. A student must receive a positive grade in every module. Therefore, a student may obtain max 200 points for the entire course. 51%, or 101 points is the absolute minimum required to pass the course. The standard TalTech grading rules are applied to calculate the student&amp;#039;s final grade.&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
https://ained.ttu.ee -- õppekeskkonas olevad materjalid&amp;lt;br /&amp;gt;&lt;br /&gt;
Gary McGraw &amp;quot;Software Security. Building Security In&amp;quot;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Automotive_audio_amplifiers.pdf&amp;diff=8974</id>
		<title>Fail:Automotive audio amplifiers.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Automotive_audio_amplifiers.pdf&amp;diff=8974"/>
		<updated>2019-12-09T12:17:14Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=ITI8610&amp;diff=8973</id>
		<title>ITI8610</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=ITI8610&amp;diff=8973"/>
		<updated>2019-12-09T12:16:43Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: /* Module II: : Assured Software Analytics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8610 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Co-lecturer&amp;#039;&amp;#039;&amp;#039;: Leonidas Tsiopoulos &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Co-lecturer&amp;#039;&amp;#039;&amp;#039;: Aleksandr Lenin &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 16:00, ICT-A2 &amp;#039;&amp;#039;&amp;#039;NEW!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 17.45, ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Lab supervisors:&lt;br /&gt;
** Aleksandr Lenin (aleksandr.lenin ätt ttu.ee) - Module I&lt;br /&gt;
** Jüri Vain (juri.vain ätt ttu.ee),  Leonidas Tsiopoulos (letsio ätt ttu.ee) - Module II&lt;br /&gt;
&lt;br /&gt;
==News 2019==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Deadline for submitting lab assignments of Module II  -- TBA&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Please fill in [https://doodle.com/poll/3g7333mkn59wp6fe this] Doodle poll and indicate your availability for Module I: Security Assurance lecture and practice slots. Please note that everyone is free to make more than a single choice, you can mark as many slots as you see fit, as well as that every person has 3 options: yes, no, ifneedbe, where yes means this time slot is free for you and you are available at this time, no means you are absolutely unavailable, and ifneedbe means this time slot is unconvenient for you, but if necessary you will be able to make it.&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
# [[Media:ITI_8610_lecture_1.pdf|Lecture 1]]: Introduction to software assurance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Module I: Assurance processes, risk management &amp;amp; security assurance====&lt;br /&gt;
# [[Media:ITI8610-2019-Risk.pdf|Risks - definitions, terminology, risk taxonomies]]&lt;br /&gt;
# [[Media:Risk-Taxonomy-FAIR.pdf|FAIR Risk Taxonomy]]&lt;br /&gt;
# [[Media:ITI8610-Riskmanagement.pdf|Risk Management]]&lt;br /&gt;
# [[Media:ITI8610-2019-FAIR_Template.zip|Qualitative Risk Analysis Template]]&lt;br /&gt;
# [[Media:ITB8811-2019-Probability.pdf|Theory of Probability]]&lt;br /&gt;
# [[Media:ITI8610-2019-Reliability.pdf|Reliability and Availability]]&lt;br /&gt;
# [[Media:ITI8610-2019-Security_Modeling.pdf|Security Modeling. Quantitative Risk Management]]&lt;br /&gt;
&lt;br /&gt;
====Module II: : Assured Software Analytics ====&lt;br /&gt;
* [[Media:Module_III_Lecture_1.pdf|Module II Lecture 1]]: Design by Contract&lt;br /&gt;
* [[Media:Module III 2nd lecture JML Specification Cases.pdf|Module II Lecture 2]]: Specification cases&lt;br /&gt;
* [[Media:e.pdf|Module II Lecture 3]]: Multi-view contracts of cyber-physical systems&lt;br /&gt;
* [[Media:Module III 4th lecture.pdf|Module II Lecture 4]]: JML contracts for OOP methods&lt;br /&gt;
* [[Media:OpenJML - Solvers - 15_11_2018.pdf|Module II Lecture 5]]: OpenJML and SMT Solvers&lt;br /&gt;
* [[Media:WorstPracticesInSWDevelopment.pdf|Module II Lecture 6]] (Guest lecture): M. Markvardt (ASA Quality) &amp;quot;Worst Practices in Software Quality a.k.a How to Deal with Risks&amp;quot;&lt;br /&gt;
* Lecture 7 (Guest lecture): Dr. Mohammad Al-Taye (Philadelphia Univ., Jordan) &amp;quot;QA by testing&amp;quot;&lt;br /&gt;
* Lecture 8: Safety analysis techniques (28.11.2019)&lt;br /&gt;
* [[Media:Automotive audio amplifiers.pdf|Module II Lecture 9]] (Guest lecture): R. Kadastik (Adacore) &amp;quot;IoT tarkava töökindluse köögipoolest&amp;quot; (5.12.2019)&lt;br /&gt;
&lt;br /&gt;
==Practice Assignments ==&lt;br /&gt;
Possible topics for course project (same topic can be chosen by several teams) &lt;br /&gt;
* Smart parking slot /Nutikas parkla&lt;br /&gt;
* Moon habitad IGLUNA safety system / Kuuelamu IGLUNA ohutuse tagamise süsteem&lt;br /&gt;
* Moon habitad IGLUNA security system / Kuuelamu IGLUNA turbesüsteem&lt;br /&gt;
* Railway crossing control / Raudtee ülesõidukoha juhtimine&lt;br /&gt;
* Nutikas autode paigutaja praamidele&lt;br /&gt;
* Automaatne haigla ravimite annustamise ja kohaletoimetamise süsteem&lt;br /&gt;
* Smart home air quality control &lt;br /&gt;
* Automaatse tunnustamisega trahvisüsteem&lt;br /&gt;
* Automaatne videosalvestussüsteem&lt;br /&gt;
* TESLA (auto) juhtimisüsteem &lt;br /&gt;
* Bolt tõukerataste rentimissüsteem&lt;br /&gt;
* Biometric locking systems (ukse- ja relvalukud).&lt;br /&gt;
&lt;br /&gt;
==Project Teams==&lt;br /&gt;
* Team 1: Allan Paalo, Siim Suviste, Oliver Tooming &amp;quot;TESLA self-driving car&amp;quot;&lt;br /&gt;
* Team 2: Krõõt Grete Mänd, Ilja Samoilov &amp;quot;Smart home air quality control&amp;quot;&lt;br /&gt;
* Team 3: Veronika Zamakhova, Sergei Zarembo, Dmitri Golovatš &amp;quot;Bolt tõukerataste rentimissüsteem&amp;quot;&lt;br /&gt;
* Team 4: Magnus Teekivi, Ly Tempel, Mirjam Pajumägi &amp;quot;Railway crossing control / Raudtee ülesõidukoha juhtimine&amp;quot;&lt;br /&gt;
* Team 5: Kristjan-Martin Kirjanen, Kaarel Värk, Andreas Nagel &amp;quot; Biometric locking systems&amp;quot;&lt;br /&gt;
* Team 6: Rasmus Tomsen, Henry Härm &amp;quot;Smart video recording system / Automaatne videosalvestuse süsteem&amp;quot;&lt;br /&gt;
* Team 7: Johanna Kammiste,  Igor Podgainõi &amp;quot;Smart parking slot / Nutikas parkla I&amp;quot;&lt;br /&gt;
* Team 8: Kristjan Vool, Regina Helena Lõpp-Elmeste &amp;quot;Smart parking slot / Nutikas parkla II&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Module I: Security Assurance ====&lt;br /&gt;
Assignment 1: Perform a qualitative Risk Analysis of your case study using FAIR (Factor Analysis of Information Security Risk) framework and submit a report in pdf format.&amp;lt;br /&amp;gt;&lt;br /&gt;
Assignment 2: Model one threat in the form of an ADT (Attack-Defense Tree) using the ADTool software http://satoss.uni.lu/members/piotr/adtool/ , export your model in XML format (File-&amp;gt;export) and submit the generated XML file.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Module II ====&lt;br /&gt;
* [[Media:Project_assignment.pdf|Lab instruction]]: Lab assignment plan&lt;br /&gt;
* [[Media:OpenJML installation instructions.pdf|OpenJML Installation]]: OpenJML Installation Instructions&lt;br /&gt;
NB!&lt;br /&gt;
To report completed lab assignments go to web page https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
and register as user with uniID of TUT&lt;br /&gt;
* Some reporting examples from earlier years&lt;br /&gt;
** [[Media:Climate_control.pdf| Smart home climate control]]: Project report&lt;br /&gt;
** [[Media:Energy_control.pdf| Smart house energy management]]: Project report&lt;br /&gt;
&lt;br /&gt;
== Grading ==&lt;br /&gt;
&lt;br /&gt;
Each of the two modules is graded independently on the scale 0-100 points. A student must receive a positive grade in every module. Therefore, a student may obtain max 200 points for the entire course. 51%, or 101 points is the absolute minimum required to pass the course. The standard TalTech grading rules are applied to calculate the student&amp;#039;s final grade.&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
https://ained.ttu.ee -- õppekeskkonas olevad materjalid&amp;lt;br /&amp;gt;&lt;br /&gt;
Gary McGraw &amp;quot;Software Security. Building Security In&amp;quot;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:WorstPracticesInSWDevelopment.pdf&amp;diff=8919</id>
		<title>Fail:WorstPracticesInSWDevelopment.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:WorstPracticesInSWDevelopment.pdf&amp;diff=8919"/>
		<updated>2019-11-18T16:15:40Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=ITI8610&amp;diff=8918</id>
		<title>ITI8610</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=ITI8610&amp;diff=8918"/>
		<updated>2019-11-18T16:12:08Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: /* Module II: : Assured Software Analytics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8610 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Co-lecturer&amp;#039;&amp;#039;&amp;#039;: Leonidas Tsiopoulos &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Co-lecturer&amp;#039;&amp;#039;&amp;#039;: Aleksandr Lenin &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 16:00, ICT-A2 &amp;#039;&amp;#039;&amp;#039;NEW!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 17.45, ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Lab supervisors:&lt;br /&gt;
** Aleksandr Lenin (aleksandr.lenin ätt ttu.ee) - Module I&lt;br /&gt;
** Jüri Vain (juri.vain ätt ttu.ee),  Leonidas Tsiopoulos (letsio ätt ttu.ee) - Module II&lt;br /&gt;
&lt;br /&gt;
==News 2019==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Deadline for submitting lab assignments of Module II  -- TBA&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Please fill in [https://doodle.com/poll/3g7333mkn59wp6fe this] Doodle poll and indicate your availability for Module I: Security Assurance lecture and practice slots. Please note that everyone is free to make more than a single choice, you can mark as many slots as you see fit, as well as that every person has 3 options: yes, no, ifneedbe, where yes means this time slot is free for you and you are available at this time, no means you are absolutely unavailable, and ifneedbe means this time slot is unconvenient for you, but if necessary you will be able to make it.&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
# [[Media:ITI_8610_lecture_1.pdf|Lecture 1]]: Introduction to software assurance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Module I: Assurance processes, risk management &amp;amp; security assurance====&lt;br /&gt;
# [[Media:ITI8610-2019-Risk.pdf|Risks - definitions, terminology, risk taxonomies]]&lt;br /&gt;
# [[Media:Risk-Taxonomy-FAIR.pdf|FAIR Risk Taxonomy]]&lt;br /&gt;
# [[Media:ITI8610-Riskmanagement.pdf|Risk Management]]&lt;br /&gt;
# [[Media:ITI8610-2019-FAIR_Template.zip|Qualitative Risk Analysis Template]]&lt;br /&gt;
# [[Media:ITB8811-2019-Probability.pdf|Theory of Probability]]&lt;br /&gt;
# [[Media:ITI8610-2019-Reliability.pdf|Reliability and Availability]]&lt;br /&gt;
# [[Media:ITI8610-2019-Security_Modeling.pdf|Security Modeling. Quantitative Risk Management]]&lt;br /&gt;
&lt;br /&gt;
====Module II: : Assured Software Analytics ====&lt;br /&gt;
* [[Media:Module_III_Lecture_1.pdf|Module II Lecture 1]]: Design by Contract&lt;br /&gt;
* [[Media:Module III 2nd lecture JML Specification Cases.pdf|Module II Lecture 2]]: Specification cases&lt;br /&gt;
* [[Media:e.pdf|Module II Lecture 3]]: Multi-view contracts of cyber-physical systems&lt;br /&gt;
* [[Media:Module III 4th lecture.pdf|Module II Lecture 4]]: JML contracts for OOP methods&lt;br /&gt;
* [[Media:OpenJML - Solvers - 15_11_2018.pdf|Module II Lecture 5]]: OpenJML and SMT Solvers&lt;br /&gt;
* [[Media:WorstPracticesInSWDevelopment.pdf|Module II Lecture 6]]: Worst Practices in Software Quality a.k.a How to Deal with Risks&lt;br /&gt;
&lt;br /&gt;
==Practice Assignments ==&lt;br /&gt;
Possible topics for course project (same topic can be chosen by several teams) &lt;br /&gt;
* Smart parking slot /Nutikas parkla&lt;br /&gt;
* Moon habitad IGLUNA safety system / Kuuelamu IGLUNA ohutuse tagamise süsteem&lt;br /&gt;
* Moon habitad IGLUNA security system / Kuuelamu IGLUNA turbesüsteem&lt;br /&gt;
* Railway crossing control / Raudtee ülesõidukoha juhtimine&lt;br /&gt;
* Nutikas autode paigutaja praamidele&lt;br /&gt;
* Automaatne haigla ravimite annustamise ja kohaletoimetamise süsteem&lt;br /&gt;
* Smart home air quality control &lt;br /&gt;
* Automaatse tunnustamisega trahvisüsteem&lt;br /&gt;
* Automaatne videosalvestussüsteem&lt;br /&gt;
* TESLA (auto) juhtimisüsteem &lt;br /&gt;
* Bolt tõukerataste rentimissüsteem&lt;br /&gt;
* Biometric locking systems (ukse- ja relvalukud).&lt;br /&gt;
&lt;br /&gt;
==Project Teams==&lt;br /&gt;
* Team 1: Allan Paalo, Siim Suviste, Oliver Tooming &amp;quot;TESLA self-driving car&amp;quot;&lt;br /&gt;
* Team 2: Krõõt Grete Mänd, Ilja Samoilov &amp;quot;Smart home air quality control&amp;quot;&lt;br /&gt;
* Team 3: Veronika Zamakhova, Sergei Zarembo, Dmitri Golovatš &amp;quot;Bolt tõukerataste rentimissüsteem&amp;quot;&lt;br /&gt;
* Team 4: Magnus Teekivi, Ly Tempel, Mirjam Pajumägi &amp;quot;Railway crossing control / Raudtee ülesõidukoha juhtimine&amp;quot;&lt;br /&gt;
* Team 5: Kristjan-Martin Kirjanen, Kaarel Värk, Andreas Nagel &amp;quot; Biometric locking systems&amp;quot;&lt;br /&gt;
* Team 6: Rasmus Tomsen, Henry Härm &amp;quot;Smart video recording system / Automaatne videosalvestuse süsteem&amp;quot;&lt;br /&gt;
* Team 7: Johanna Kammiste,  Igor Podgainõi &amp;quot;Smart parking slot / Nutikas parkla I&amp;quot;&lt;br /&gt;
* Team 8: Kristjan Vool, Regina Helena Lõpp-Elmeste &amp;quot;Smart parking slot / Nutikas parkla II&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Module I: Security Assurance ====&lt;br /&gt;
Assignment 1: Perform a qualitative Risk Analysis of your case study using FAIR (Factor Analysis of Information Security Risk) framework and submit a report in pdf format.&amp;lt;br /&amp;gt;&lt;br /&gt;
Assignment 2: Model one threat in the form of an ADT (Attack-Defense Tree) using the ADTool software http://satoss.uni.lu/members/piotr/adtool/ , export your model in XML format (File-&amp;gt;export) and submit the generated XML file.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Module II ====&lt;br /&gt;
* [[Media:Project_assignment.pdf|Lab instruction]]: Lab assignment plan&lt;br /&gt;
* [[Media:OpenJML installation instructions.pdf|OpenJML Installation]]: OpenJML Installation Instructions&lt;br /&gt;
NB!&lt;br /&gt;
To report completed lab assignments go to web page https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
and register as user with uniID of TUT&lt;br /&gt;
* Some reporting examples from earlier years&lt;br /&gt;
** [[Media:Climate_control.pdf| Smart home climate control]]: Project report&lt;br /&gt;
** [[Media:Energy_control.pdf| Smart house energy management]]: Project report&lt;br /&gt;
&lt;br /&gt;
== Grading ==&lt;br /&gt;
&lt;br /&gt;
Each of the two modules is graded independently on the scale 0-100 points. A student must receive a positive grade in every module. Therefore, a student may obtain max 200 points for the entire course. 51%, or 101 points is the absolute minimum required to pass the course. The standard TalTech grading rules are applied to calculate the student&amp;#039;s final grade.&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
https://ained.ttu.ee -- õppekeskkonas olevad materjalid&amp;lt;br /&amp;gt;&lt;br /&gt;
Gary McGraw &amp;quot;Software Security. Building Security In&amp;quot;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:OpenJML_installation_instructions.pdf&amp;diff=8844</id>
		<title>Fail:OpenJML installation instructions.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:OpenJML_installation_instructions.pdf&amp;diff=8844"/>
		<updated>2019-10-31T12:03:43Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=ITI8610&amp;diff=8843</id>
		<title>ITI8610</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=ITI8610&amp;diff=8843"/>
		<updated>2019-10-31T12:03:09Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: /* Module II */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8610 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Co-lecturer&amp;#039;&amp;#039;&amp;#039;: Leonidas Tsiopoulos &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Co-lecturer&amp;#039;&amp;#039;&amp;#039;: Aleksandr Lenin &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Thursdays 16:00, ICT-A2 &amp;#039;&amp;#039;&amp;#039;NEW!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 17.45, ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
* Lab supervisors:&lt;br /&gt;
** Aleksandr Lenin (aleksandr.lenin ätt ttu.ee) - Module I&lt;br /&gt;
** Jüri Vain (juri.vain ätt ttu.ee),  Leonidas Tsiopoulos (letsio ätt ttu.ee) - Module II&lt;br /&gt;
&lt;br /&gt;
==News 2019==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Deadline for submitting lab assignments of Module II  -- TBA&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Please fill in [https://doodle.com/poll/3g7333mkn59wp6fe this] Doodle poll and indicate your availability for Module I: Security Assurance lecture and practice slots. Please note that everyone is free to make more than a single choice, you can mark as many slots as you see fit, as well as that every person has 3 options: yes, no, ifneedbe, where yes means this time slot is free for you and you are available at this time, no means you are absolutely unavailable, and ifneedbe means this time slot is unconvenient for you, but if necessary you will be able to make it.&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
# [[Media:ITI_8610_lecture_1.pdf|Lecture 1]]: Introduction to software assurance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Module I: Assurance processes, risk management &amp;amp; security assurance====&lt;br /&gt;
# [[Media:ITI8610-2019-Risk.pdf|Risks - definitions, terminology, risk taxonomies]]&lt;br /&gt;
# [[Media:Risk-Taxonomy-FAIR.pdf|FAIR Risk Taxonomy]]&lt;br /&gt;
# [[Media:ITI8610-Riskmanagement.pdf|Risk Management]]&lt;br /&gt;
# [[Media:ITI8610-2019-FAIR_Template.zip|Qualitative Risk Analysis Template]]&lt;br /&gt;
# [[Media:ITB8811-2019-Probability.pdf|Theory of Probability]]&lt;br /&gt;
# [[Media:ITI8610-2019-Reliability.pdf|Reliability and Availability]]&lt;br /&gt;
# [[Media:ITI8610-2019-Security_Modeling.pdf|Security Modeling. Quantitative Risk Management]]&lt;br /&gt;
&lt;br /&gt;
====Module II: : Assured Software Analytics ====&lt;br /&gt;
* [[Media:Module_III_Lecture_1.pdf|Module II Lecture 1]]: Design by Contract&lt;br /&gt;
* [[Media:Module III 2nd lecture JML Specification Cases.pdf|Module II Lecture 2]]: Specification cases&lt;br /&gt;
* [[Media:e.pdf|Module II Lecture 3]]: Multi-view contracts of cyber-physical systems&lt;br /&gt;
* [[Media:Module III 4th lecture.pdf|Module II Lecture 4]]: JML contracts for OOP methods&lt;br /&gt;
* [[Media:OpenJML - Solvers - 15_11_2018.pdf|Module II Lecture 5]]: OpenJML and SMT Solvers&lt;br /&gt;
&lt;br /&gt;
==Practice Assignments ==&lt;br /&gt;
Possible topics for course project (same topic can be chosen by several teams) &lt;br /&gt;
* Smart parking slot /Nutikas parkla&lt;br /&gt;
* Moon habitad IGLUNA safety system / Kuuelamu IGLUNA ohutuse tagamise süsteem&lt;br /&gt;
* Moon habitad IGLUNA security system / Kuuelamu IGLUNA turbesüsteem&lt;br /&gt;
* Railway crossing control / Raudtee ülesõidukoha juhtimine&lt;br /&gt;
* Nutikas autode paigutaja praamidele&lt;br /&gt;
* Automaatne haigla ravimite annustamise ja kohaletoimetamise süsteem&lt;br /&gt;
* Smart home air quality control &lt;br /&gt;
* Automaatse tunnustamisega trahvisüsteem&lt;br /&gt;
* Automaatne videosalvestussüsteem&lt;br /&gt;
* TESLA (auto) juhtimisüsteem &lt;br /&gt;
* Bolt tõukerataste rentimissüsteem&lt;br /&gt;
* Biometric locking systems (ukse- ja relvalukud).&lt;br /&gt;
&lt;br /&gt;
==Project Teams==&lt;br /&gt;
* Team 1: Allan Paalo, Siim Suviste, Oliver Tooming &amp;quot;TESLA self-driving car&amp;quot;&lt;br /&gt;
* Team 2: Krõõt Grete Mänd, Ilja Samoilov &amp;quot;Smart home air quality control&amp;quot;&lt;br /&gt;
* Team 3: Veronika Zamakhova, Sergei Zarembo, Dmitri Golovatš &amp;quot;Bolt tõukerataste rentimissüsteem&amp;quot;&lt;br /&gt;
* Team 4: Magnus Teekivi, Ly Tempel, Mirjam Pajumägi &amp;quot;Railway crossing control / Raudtee ülesõidukoha juhtimine&amp;quot;&lt;br /&gt;
* Team 5: Kristjan-Martin Kirjanen, Kaarel Värk, Andreas Nagel &amp;quot; Biometric locking systems&amp;quot;&lt;br /&gt;
* Team 6: Rasmus Tomsen, Henry Härm &amp;quot;Smart video recording system / Automaatne videosalvestuse süsteem&amp;quot;&lt;br /&gt;
* Team 7: Johanna Kammiste,  Igor Podgainõi &amp;quot;Smart parking slot / Nutikas parkla I&amp;quot;&lt;br /&gt;
* Team 8: Kristjan Vool, Regina Helena Lõpp-Elmeste &amp;quot;Smart parking slot / Nutikas parkla II&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Module I: Security Assurance ====&lt;br /&gt;
Assignment 1: Perform a qualitative Risk Analysis of your case study using FAIR (Factor Analysis of Information Security Risk) framework and submit a report in pdf format.&amp;lt;br /&amp;gt;&lt;br /&gt;
Assignment 2: Model one threat in the form of an ADT (Attack-Defense Tree) using the ADTool software http://satoss.uni.lu/members/piotr/adtool/ , export your model in XML format (File-&amp;gt;export) and submit the generated XML file.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Module II ====&lt;br /&gt;
* [[Media:Project_assignment.pdf|Lab instruction]]: Lab assignment plan&lt;br /&gt;
* [[Media:OpenJML installation instructions.pdf|OpenJML Installation]]: OpenJML Installation Instructions&lt;br /&gt;
NB!&lt;br /&gt;
To report completed lab assignments go to web page https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
and register as user with uniID of TUT&lt;br /&gt;
* Some reporting examples from earlier years&lt;br /&gt;
** [[Media:Climate_control.pdf| Smart home climate control]]: Project report&lt;br /&gt;
** [[Media:Energy_control.pdf| Smart house energy management]]: Project report&lt;br /&gt;
&lt;br /&gt;
== Grading ==&lt;br /&gt;
&lt;br /&gt;
Each of the two modules is graded independently on the scale 0-100 points. A student must receive a positive grade in every module. Therefore, a student may obtain max 200 points for the entire course. 51%, or 101 points is the absolute minimum required to pass the course. The standard TalTech grading rules are applied to calculate the student&amp;#039;s final grade.&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
https://ained.ttu.ee -- õppekeskkonas olevad materjalid&amp;lt;br /&amp;gt;&lt;br /&gt;
Gary McGraw &amp;quot;Software Security. Building Security In&amp;quot;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Software_Synthesis_-_Lecture_V_-_Recap.pdf&amp;diff=8387</id>
		<title>Fail:Software Synthesis - Lecture V - Recap.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Software_Synthesis_-_Lecture_V_-_Recap.pdf&amp;diff=8387"/>
		<updated>2019-05-14T14:44:05Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8386</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8386"/>
		<updated>2019-05-14T14:43:30Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: Leonidas Tsiopoulos &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: leonidas.tsiopoulos ätt ttu.ee, ICT-424 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Evelin Halling &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: evelin.halling ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Tuesdays 12:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 10:00, ICT-A1 - Evelin Halling&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams:  &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 24, 10:00, room ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 31, 10:00, room ICT-A1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1: Model checking   [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: (05.03.2019)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;12.03.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 6]]: Program specifications (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7]]: Proving partial correctness of programs (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 10]]: Verifying nondeterministic and parallel programs  (02.04.2019)&lt;br /&gt;
* Practicing for Test 2: Deductive verification of non-deterministic and parallel programs (04.04.2019 at lab time)&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2: Deductive verification of sequential, non-deterministic and parallel programs (&amp;#039;&amp;#039;&amp;#039;09.04.2019,at 12.00&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:Software Synthesis - Overview of Temporal Synthesis - Lecture 11.pdf|Lecture 11]]: Software synthesis I (16.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Introduction to Acacia - Lecture 12.pdf|Lecture 12]]: Software synthesis II (23.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf|Lecture 13]]: Software synthesis III (30.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis with Acacia part III - Lecture 14.pdf|Lecture 14]]: Software synthesis IV (7.05.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Lecture V - Recap.pdf|Lecture 15]]: Software synthesis (recap) and practicing for test  (14.05.2019)&lt;br /&gt;
* Test 3: Software synthesis (&amp;#039;&amp;#039;&amp;#039;16.05.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment I: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Assignment II: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12, page 172]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13:&lt;br /&gt;
** [http://web.iitd.ac.in/~sumeet/slide3.pdf LTL]&lt;br /&gt;
* Lab 14:&lt;br /&gt;
** [[Media:ITI8531_LTL_exercises.pdf|Exercises]]&lt;br /&gt;
** [http://goal.im.ntu.edu.tw/wiki/doku.php GOAL tool]&lt;br /&gt;
** [http://www.lsv.fr/~gastin/ltl2ba/ LTL2BA]&lt;br /&gt;
* Lab 15&lt;br /&gt;
** [[Media:ITI8531_LTL_assignments.pdf|LTL Assignment]]&lt;br /&gt;
** [[Media:Software Synthesis and Verification LTL Assignment-Updated Spec.pdf|Updated Spec for LTL Synthesis Assignment]]&lt;br /&gt;
** [[Media:Guidelines for Lab Exercise Report for Synthesis with Acacia.pdf|Guidelines for Assignment]]&lt;br /&gt;
** [[Media:Acacia Installation Commands.pdf|Acacia Tool Installation Commands]]&lt;br /&gt;
** [[Media:Acacia_Manual.pdf|Acacia Tool Installation Guidelines and Manual for Command Line Options]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment on 17 May 2018&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Software_Synthesis_and_Verification_LTL_Assignment-Updated_Spec.pdf&amp;diff=8385</id>
		<title>Fail:Software Synthesis and Verification LTL Assignment-Updated Spec.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Software_Synthesis_and_Verification_LTL_Assignment-Updated_Spec.pdf&amp;diff=8385"/>
		<updated>2019-05-14T07:36:49Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8384</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8384"/>
		<updated>2019-05-14T07:36:00Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: Leonidas Tsiopoulos &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: leonidas.tsiopoulos ätt ttu.ee, ICT-424 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Evelin Halling &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: evelin.halling ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Tuesdays 12:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 10:00, ICT-A1 - Evelin Halling&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams:  &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 24, 10:00, room ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 31, 10:00, room ICT-A1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1: Model checking   [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: (05.03.2019)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;12.03.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 6]]: Program specifications (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7]]: Proving partial correctness of programs (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 10]]: Verifying nondeterministic and parallel programs  (02.04.2019)&lt;br /&gt;
* Practicing for Test 2: Deductive verification of non-deterministic and parallel programs (04.04.2019 at lab time)&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2: Deductive verification of sequential, non-deterministic and parallel programs (&amp;#039;&amp;#039;&amp;#039;09.04.2019,at 12.00&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:Software Synthesis - Overview of Temporal Synthesis - Lecture 11.pdf|Lecture 11]]: Software synthesis I (16.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Introduction to Acacia - Lecture 12.pdf|Lecture 12]]: Software synthesis II (23.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf|Lecture 13]]: Software synthesis III (30.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis with Acacia part III - Lecture 14.pdf|Lecture 14]]: Software synthesis IV (7.05.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 15]]: Software synthesis (recap)  and practicing for test  (14.05.2019)&lt;br /&gt;
* Test 3: Software synthesis (&amp;#039;&amp;#039;&amp;#039;16.05.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment I: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Assignment II: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12, page 172]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13:&lt;br /&gt;
** [http://web.iitd.ac.in/~sumeet/slide3.pdf LTL]&lt;br /&gt;
* Lab 14:&lt;br /&gt;
** [[Media:ITI8531_LTL_exercises.pdf|Exercises]]&lt;br /&gt;
** [http://goal.im.ntu.edu.tw/wiki/doku.php GOAL tool]&lt;br /&gt;
** [http://www.lsv.fr/~gastin/ltl2ba/ LTL2BA]&lt;br /&gt;
* Lab 15&lt;br /&gt;
** [[Media:ITI8531_LTL_assignments.pdf|LTL Assignment]]&lt;br /&gt;
** [[Media:Software Synthesis and Verification LTL Assignment-Updated Spec.pdf|Updated Spec for LTL Synthesis Assignment]]&lt;br /&gt;
** [[Media:Guidelines for Lab Exercise Report for Synthesis with Acacia.pdf|Guidelines for Assignment]]&lt;br /&gt;
** [[Media:Acacia Installation Commands.pdf|Acacia Tool Installation Commands]]&lt;br /&gt;
** [[Media:Acacia_Manual.pdf|Acacia Tool Installation Guidelines and Manual for Command Line Options]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment on 17 May 2018&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Acacia_Manual.pdf&amp;diff=8369</id>
		<title>Fail:Acacia Manual.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Acacia_Manual.pdf&amp;diff=8369"/>
		<updated>2019-05-10T07:10:12Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8368</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8368"/>
		<updated>2019-05-10T07:09:08Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Evelin Halling &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: evelin.halling ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Tuesdays 12:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 10:00, ICT-A1 - Evelin Halling&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams:  &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 24, 10:00, room ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 31, 10:00, room ICT-A1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1: Model checking   [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: (05.03.2019)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;12.03.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 6]]: Program specifications (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7]]: Proving partial correctness of programs (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 10]]: Verifying nondeterministic and parallel programs  (02.04.2019)&lt;br /&gt;
* Practicing for Test 2: Deductive verification of non-deterministic and parallel programs (04.04.2019 at lab time)&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2: Deductive verification of sequential, non-deterministic and parallel programs (&amp;#039;&amp;#039;&amp;#039;09.04.2019,at 12.00&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:Software Synthesis - Overview of Temporal Synthesis - Lecture 11.pdf|Lecture 11]]: Software synthesis I (16.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Introduction to Acacia - Lecture 12.pdf|Lecture 12]]: Software synthesis II (23.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf|Lecture 13]]: Software synthesis III (30.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis with Acacia part III - Lecture 14.pdf|Lecture 14]]: Software synthesis IV (7.05.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 15]]: Software synthesis (recap)  and practicing for test  (14.05.2019)&lt;br /&gt;
* Test 3: Software synthesis (&amp;#039;&amp;#039;&amp;#039;16.05.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment I: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Assignment II: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12, page 172]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13:&lt;br /&gt;
** [http://web.iitd.ac.in/~sumeet/slide3.pdf LTL]&lt;br /&gt;
* Lab 14:&lt;br /&gt;
** [[Media:ITI8531_LTL_exercises.pdf|Exercises]]&lt;br /&gt;
** [http://goal.im.ntu.edu.tw/wiki/doku.php GOAL tool]&lt;br /&gt;
** [http://www.lsv.fr/~gastin/ltl2ba/ LTL2BA]&lt;br /&gt;
* Lab 15&lt;br /&gt;
** [[Media:ITI8531_LTL_assignments.pdf|LTL Assignment]]&lt;br /&gt;
** [[Media:Guidelines for Lab Exercise Report for Synthesis with Acacia.pdf|Guidelines for Assignment]]&lt;br /&gt;
** [[Media:Acacia Installation Commands.pdf|Acacia Tool Installation Commands]]&lt;br /&gt;
** [[Media:Acacia_Manual.pdf|Acacia Tool Installation Guidelines and Manual for Command Line Options]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment on 17 May 2018&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Acacia_Installation_Commands.pdf&amp;diff=8362</id>
		<title>Fail:Acacia Installation Commands.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Acacia_Installation_Commands.pdf&amp;diff=8362"/>
		<updated>2019-05-09T09:11:31Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8361</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8361"/>
		<updated>2019-05-09T09:11:00Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Evelin Halling &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: evelin.halling ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Tuesdays 12:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 10:00, ICT-A1 - Evelin Halling&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams:  &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 24, 10:00, room ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 31, 10:00, room ICT-A1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1: Model checking   [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: (05.03.2019)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;12.03.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 6]]: Program specifications (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7]]: Proving partial correctness of programs (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 10]]: Verifying nondeterministic and parallel programs  (02.04.2019)&lt;br /&gt;
* Practicing for Test 2: Deductive verification of non-deterministic and parallel programs (04.04.2019 at lab time)&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2: Deductive verification of sequential, non-deterministic and parallel programs (&amp;#039;&amp;#039;&amp;#039;09.04.2019,at 12.00&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:Software Synthesis - Overview of Temporal Synthesis - Lecture 11.pdf|Lecture 11]]: Software synthesis I (16.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Introduction to Acacia - Lecture 12.pdf|Lecture 12]]: Software synthesis II (23.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf|Lecture 13]]: Software synthesis III (30.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis with Acacia part III - Lecture 14.pdf|Lecture 14]]: Software synthesis IV (7.05.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 15]]: Software synthesis (recap)  and practicing for test  (14.05.2019)&lt;br /&gt;
* Test 3: Software synthesis (&amp;#039;&amp;#039;&amp;#039;16.05.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment I: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Assignment II: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12, page 172]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13:&lt;br /&gt;
** [http://web.iitd.ac.in/~sumeet/slide3.pdf LTL]&lt;br /&gt;
* Lab 14:&lt;br /&gt;
** [[Media:ITI8531_LTL_exercises.pdf|Exercises]]&lt;br /&gt;
** [http://goal.im.ntu.edu.tw/wiki/doku.php GOAL tool]&lt;br /&gt;
** [http://www.lsv.fr/~gastin/ltl2ba/ LTL2BA]&lt;br /&gt;
* Lab 15&lt;br /&gt;
** [[Media:ITI8531_LTL_assignments.pdf|LTL Assignment]]&lt;br /&gt;
** [[Media:Guidelines for Lab Exercise Report for Synthesis with Acacia.pdf|Guidelines for Assignment]]&lt;br /&gt;
** [[Media:Acacia Installation Commands.pdf|Acacia Tool Installation Commands]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment on 17 May 2018&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Guidelines_for_Lab_Exercise_Report_for_Synthesis_with_Acacia.pdf&amp;diff=8360</id>
		<title>Fail:Guidelines for Lab Exercise Report for Synthesis with Acacia.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Guidelines_for_Lab_Exercise_Report_for_Synthesis_with_Acacia.pdf&amp;diff=8360"/>
		<updated>2019-05-09T09:04:05Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8359</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8359"/>
		<updated>2019-05-09T09:03:35Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Evelin Halling &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: evelin.halling ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Tuesdays 12:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 10:00, ICT-A1 - Evelin Halling&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams:  &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 24, 10:00, room ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 31, 10:00, room ICT-A1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1: Model checking   [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: (05.03.2019)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;12.03.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 6]]: Program specifications (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7]]: Proving partial correctness of programs (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 10]]: Verifying nondeterministic and parallel programs  (02.04.2019)&lt;br /&gt;
* Practicing for Test 2: Deductive verification of non-deterministic and parallel programs (04.04.2019 at lab time)&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2: Deductive verification of sequential, non-deterministic and parallel programs (&amp;#039;&amp;#039;&amp;#039;09.04.2019,at 12.00&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:Software Synthesis - Overview of Temporal Synthesis - Lecture 11.pdf|Lecture 11]]: Software synthesis I (16.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Introduction to Acacia - Lecture 12.pdf|Lecture 12]]: Software synthesis II (23.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf|Lecture 13]]: Software synthesis III (30.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis with Acacia part III - Lecture 14.pdf|Lecture 14]]: Software synthesis IV (7.05.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 15]]: Software synthesis (recap)  and practicing for test  (14.05.2019)&lt;br /&gt;
* Test 3: Software synthesis (&amp;#039;&amp;#039;&amp;#039;16.05.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment I: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Assignment II: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12, page 172]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13:&lt;br /&gt;
** [http://web.iitd.ac.in/~sumeet/slide3.pdf LTL]&lt;br /&gt;
* Lab 14:&lt;br /&gt;
** [[Media:ITI8531_LTL_exercises.pdf|Exercises]]&lt;br /&gt;
** [http://goal.im.ntu.edu.tw/wiki/doku.php GOAL tool]&lt;br /&gt;
** [http://www.lsv.fr/~gastin/ltl2ba/ LTL2BA]&lt;br /&gt;
* Lab 15&lt;br /&gt;
** [[Media:ITI8531_LTL_assignments.pdf|LTL Assignment]]&lt;br /&gt;
** [[Media:Guidelines for Lab Exercise Report for Synthesis with Acacia.pdf|Guidelines for Assignment]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment on 17 May 2018&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Software_Synthesis_-_LTL_Synthesis_with_Acacia_part_III_-_Lecture_14.pdf&amp;diff=8348</id>
		<title>Fail:Software Synthesis - LTL Synthesis with Acacia part III - Lecture 14.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Software_Synthesis_-_LTL_Synthesis_with_Acacia_part_III_-_Lecture_14.pdf&amp;diff=8348"/>
		<updated>2019-05-07T14:59:34Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8347</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8347"/>
		<updated>2019-05-07T14:59:09Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Evelin Halling &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: evelin.halling ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Tuesdays 12:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 10:00, ICT-A1 - Evelin Halling&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams:  &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 24, 10:00, room ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 31, 10:00, room ICT-A1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1: Model checking   [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: (05.03.2019)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;12.03.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 6]]: Program specifications (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7]]: Proving partial correctness of programs (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 10]]: Verifying nondeterministic and parallel programs  (02.04.2019)&lt;br /&gt;
* Practicing for Test 2: Deductive verification of non-deterministic and parallel programs (04.04.2019 at lab time)&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2: Deductive verification of sequential, non-deterministic and parallel programs (&amp;#039;&amp;#039;&amp;#039;09.04.2019,at 12.00&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:Software Synthesis - Overview of Temporal Synthesis - Lecture 11.pdf|Lecture 11]]: Software synthesis I (16.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Introduction to Acacia - Lecture 12.pdf|Lecture 12]]: Software synthesis II (23.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf|Lecture 13]]: Software synthesis III (30.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis with Acacia part III - Lecture 14.pdf|Lecture 14]]: Software synthesis IV (7.05.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 15]]: Software synthesis (recap)  and practicing for test  (14.05.2019)&lt;br /&gt;
* Test 3: Software synthesis (&amp;#039;&amp;#039;&amp;#039;16.05.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment I: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Assignment II: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12, page 172]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13:&lt;br /&gt;
** [http://web.iitd.ac.in/~sumeet/slide3.pdf LTL]&lt;br /&gt;
* Lab 14:&lt;br /&gt;
** [[Media:ITI8531_LTL_exercises.pdf|Exercises]]&lt;br /&gt;
** [http://goal.im.ntu.edu.tw/wiki/doku.php GOAL tool]&lt;br /&gt;
** [http://www.lsv.fr/~gastin/ltl2ba/ LTL2BA]&lt;br /&gt;
* Lab 15&lt;br /&gt;
** [[Media:ITI8531_LTL_assignments.pdf|LTL Assignment]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment on 17 May 2018&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8318</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8318"/>
		<updated>2019-04-30T13:07:33Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Evelin Halling &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: evelin.halling ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Tuesdays 12:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 10:00, ICT-A1 - Evelin Halling&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams:  &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 24, 10:00, room ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 31, 10:00, room ICT-A1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1: Model checking   [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: (05.03.2019)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;12.03.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 6]]: Program specifications (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7]]: Proving partial correctness of programs (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 10]]: Verifying nondeterministic and parallel programs  (02.04.2019)&lt;br /&gt;
* Practicing for Test 2: Deductive verification of non-deterministic and parallel programs (04.04.2019 at lab time)&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2: Deductive verification of sequential, non-deterministic and parallel programs (&amp;#039;&amp;#039;&amp;#039;09.04.2019,at 12.00&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:Software Synthesis - Overview of Temporal Synthesis - Lecture 11.pdf|Lecture 11]]: Software synthesis I (16.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Introduction to Acacia - Lecture 12.pdf|Lecture 12]]: Software synthesis II (23.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf|Lecture 13]]: Software synthesis III (30.04.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 14]]: Software synthesis IV (7.05.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 15]]: Software synthesis (recap)  and practicing for test  (14.05.2019)&lt;br /&gt;
* Test 3: Software synthesis (&amp;#039;&amp;#039;&amp;#039;16.05.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment I: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Assignment II: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12, page 172]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13:&lt;br /&gt;
** [http://web.iitd.ac.in/~sumeet/slide3.pdf LTL]&lt;br /&gt;
* Lab 14:&lt;br /&gt;
** [[Media:ITI8531_LTL_exercises.pdf|Exercises]]&lt;br /&gt;
** [http://goal.im.ntu.edu.tw/wiki/doku.php GOAL tool]&lt;br /&gt;
** [http://www.lsv.fr/~gastin/ltl2ba/ LTL2BA]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment on 17 May 2018&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Software_Synthesis_-_LTL_Synthesis_and_Acacia_II_-_Lecture_13.pdf&amp;diff=8317</id>
		<title>Fail:Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Software_Synthesis_-_LTL_Synthesis_and_Acacia_II_-_Lecture_13.pdf&amp;diff=8317"/>
		<updated>2019-04-30T12:57:36Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: Leonidas laadis üles faili &amp;amp;quot;Pilt:Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf&amp;amp;quot; uue versiooni&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Software_Synthesis_-_LTL_Synthesis_and_Acacia_II_-_Lecture_13.pdf&amp;diff=8316</id>
		<title>Fail:Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Software_Synthesis_-_LTL_Synthesis_and_Acacia_II_-_Lecture_13.pdf&amp;diff=8316"/>
		<updated>2019-04-30T12:36:11Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: Leonidas laadis üles faili &amp;amp;quot;Pilt:Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf&amp;amp;quot; uue versiooni&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Software_Synthesis_-_LTL_Synthesis_and_Acacia_II_-_Lecture_13.pdf&amp;diff=8315</id>
		<title>Fail:Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Software_Synthesis_-_LTL_Synthesis_and_Acacia_II_-_Lecture_13.pdf&amp;diff=8315"/>
		<updated>2019-04-30T12:34:33Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8314</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8314"/>
		<updated>2019-04-30T12:30:49Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Evelin Halling &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: evelin.halling ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Tuesdays 12:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 10:00, ICT-A1 - Evelin Halling&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams:  &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 24, 10:00, room ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 31, 10:00, room ICT-A1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1: Model checking   [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: (05.03.2019)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;12.03.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 6]]: Program specifications (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7]]: Proving partial correctness of programs (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 10]]: Verifying nondeterministic and parallel programs  (02.04.2019)&lt;br /&gt;
* Practicing for Test 2: Deductive verification of non-deterministic and parallel programs (04.04.2019 at lab time)&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2: Deductive verification of sequential, non-deterministic and parallel programs (&amp;#039;&amp;#039;&amp;#039;09.04.2019,at 12.00&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:Software Synthesis - Overview of Temporal Synthesis - Lecture 11.pdf|Lecture 11]]: Software synthesis I (16.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Introduction to Acacia - Lecture 12.pdf|Lecture 12]]: Software synthesis II (23.04.2019)&lt;br /&gt;
* [[Software Synthesis - LTL Synthesis and Acacia II - Lecture 13.pdf|Lecture 13]]: Software synthesis III (30.04.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 14]]: Software synthesis IV (7.05.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 15]]: Software synthesis (recap)  and practicing for test  (14.05.2019)&lt;br /&gt;
* Test 3: Software synthesis (&amp;#039;&amp;#039;&amp;#039;16.05.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment I: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Assignment II: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12, page 172]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13:&lt;br /&gt;
** [http://web.iitd.ac.in/~sumeet/slide3.pdf LTL]&lt;br /&gt;
* Lab 14:&lt;br /&gt;
** [[Media:ITI8531_LTL_exercises.pdf|Exercises]]&lt;br /&gt;
** [http://goal.im.ntu.edu.tw/wiki/doku.php GOAL tool]&lt;br /&gt;
** [http://www.lsv.fr/~gastin/ltl2ba/ LTL2BA]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment on 17 May 2018&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8294</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8294"/>
		<updated>2019-04-23T13:25:42Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Evelin Halling &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: evelin.halling ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Tuesdays 12:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 10:00, ICT-A1 - Evelin Halling&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams:  &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 24, 10:00, room ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 31, 10:00, room ICT-A1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1: Model checking   [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: (05.03.2019)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;12.03.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 6]]: Program specifications (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7]]: Proving partial correctness of programs (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 10]]: Verifying nondeterministic and parallel programs  (02.04.2019)&lt;br /&gt;
* Practicing for Test 2: Deductive verification of non-deterministic and parallel programs (04.04.2019 at lab time)&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2: Deductive verification of sequential, non-deterministic and parallel programs (&amp;#039;&amp;#039;&amp;#039;09.04.2019,at 12.00&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:Software Synthesis - Overview of Temporal Synthesis - Lecture 11.pdf|Lecture 11]]: Software synthesis I (16.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Introduction to Acacia - Lecture 12.pdf|Lecture 12]]: Software synthesis II (23.04.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 13]]: Software synthesis III (30.04.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 14]]: Software synthesis IV (7.05.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 15]]: Software synthesis (recap)  and practicing for test  (14.05.2019)&lt;br /&gt;
* Test 3: Software synthesis (&amp;#039;&amp;#039;&amp;#039;16.05.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment I: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Assignment II: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12, page 172]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12:&lt;br /&gt;
** [http://web.iitd.ac.in/~sumeet/slide3.pdf LTL]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment on 17 May 2018&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Software_Synthesis_-_Introduction_to_Acacia_-_Lecture_12.pdf&amp;diff=8293</id>
		<title>Fail:Software Synthesis - Introduction to Acacia - Lecture 12.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Software_Synthesis_-_Introduction_to_Acacia_-_Lecture_12.pdf&amp;diff=8293"/>
		<updated>2019-04-23T13:21:54Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8292</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8292"/>
		<updated>2019-04-23T13:21:20Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Evelin Halling &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: evelin.halling ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Tuesdays 12:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 10:00, ICT-A1 - Evelin Halling&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams:  &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 24, 10:00, room ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 31, 10:00, room ICT-A1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1: Model checking   [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: (05.03.2019)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;12.03.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 6]]: Program specifications (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7]]: Proving partial correctness of programs (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 10]]: Verifying nondeterministic and parallel programs  (02.04.2019)&lt;br /&gt;
* Practicing for Test 2: Deductive verification of non-deterministic and parallel programs (04.04.2019 at lab time)&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2: Deductive verification of sequential, non-deterministic and parallel programs (&amp;#039;&amp;#039;&amp;#039;09.04.2019,at 12.00&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:Software Synthesis - Overview of Temporal Synthesis - Lecture 11.pdf|Lecture 11]]: Program synthesis I (16.04.2019)&lt;br /&gt;
* [[Media:Software Synthesis - Introduction to Acacia - Lecture 12.pdf|Lecture 12]]: Program synthesis II (23.04.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 13]]: Program synthesis III (30.04.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 14]]: Program synthesis IV (7.05.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 15]]: Program synthesis (recap)  and practicing for test  (14.05.2019)&lt;br /&gt;
* Test 3: Program synthesis (&amp;#039;&amp;#039;&amp;#039;16.05.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment I: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Assignment II: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12, page 172]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12:&lt;br /&gt;
** [http://web.iitd.ac.in/~sumeet/slide3.pdf LTL]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment on 17 May 2018&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:Software_Synthesis_-_Overview_of_Temporal_Synthesis_-_Lecture_11.pdf&amp;diff=8286</id>
		<title>Fail:Software Synthesis - Overview of Temporal Synthesis - Lecture 11.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:Software_Synthesis_-_Overview_of_Temporal_Synthesis_-_Lecture_11.pdf&amp;diff=8286"/>
		<updated>2019-04-16T10:21:17Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8285</id>
		<title>Software Synthesis and Verification</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=8285"/>
		<updated>2019-04-16T10:20:46Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8531 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Link&amp;#039;&amp;#039;&amp;#039;: http://courses.cs.ttu.ee/pages/ITI0130&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lab assistant&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Evelin Halling &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: evelin.halling ätt ttu.ee, &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous courses: [http://vana.cs.ttu.ee/tiki-index.php?page=ITI0060 2014]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Tuesdays 12:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 10:00, ICT-A1 - Evelin Halling&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;New!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exams:  &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Thursday May 24, 10:00, room ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
* Thursday May 31, 10:00, room ICT-A1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_18_Intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_18_transition_systems.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_18_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_18_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_18_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1: Model checking   [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: (05.03.2019)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;12.03.2019&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.1_18_Specifications.pdf|Lecture 6]]: Program specifications (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_6.2_18_verification.pdf|Lecture 7]]: Proving partial correctness of programs (19.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_7_18_proving (2).pdf|Lecture 8]]: Proof techniques (1): derived rules, backwards proof, annotations (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_8_18_total_correctness.pdf|Lecture 9]]: Proving total correctness of while-programs (26.03.2019)&lt;br /&gt;
* [[Media:ITI8531_Lecture_9_2017_parallel_programs.pdf|Lecture 10]]: Verifying nondeterministic and parallel programs  (02.04.2019)&lt;br /&gt;
* Practicing for Test 2: Deductive verification of non-deterministic and parallel programs (04.04.2019 at lab time)&lt;br /&gt;
** [[Media:ITI8531_Genzen_1st_order_calculus.pdf|Genzen 1st order calculus]]: Genzen 1st order sequent calculus (proof rules)&lt;br /&gt;
* Test 2: Deductive verification of sequential, non-deterministic and parallel programs (&amp;#039;&amp;#039;&amp;#039;09.04.2019,at 12.00&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
* [[Media:Software Synthesis - Overview of Temporal Synthesis - Lecture 11.pdf|Lecture 11]]: Program synthesis I (16.04.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 12]]: Program synthesis II (23.04.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 13]]: Program synthesis III (30.04.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 14]]: Program synthesis IV (7.05.2019)&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 15]]: Program synthesis (recap)  and practicing for test  (14.05.2019)&lt;br /&gt;
* Test 3: Program synthesis (&amp;#039;&amp;#039;&amp;#039;16.05.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &lt;br /&gt;
** Slides: [[Media:UPPAAL Tutorial.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:LightController.xml|Light Controller Model]]&lt;br /&gt;
** Query: [[Media:LightControllerQuery.q|Light Controller Query]]&lt;br /&gt;
** For More reading, refer below links:&lt;br /&gt;
*** [http://www.uppaal.org/ UPPAAL website]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/uppaal/small_tutorial.pdf Small tutorial on UPPAAL]&lt;br /&gt;
*** [http://www.it.uu.se/research/group/darts/papers/texts/new-tutorial.pdf Tutorial on UPPAAL]&lt;br /&gt;
&lt;br /&gt;
* Lab 2: Validation (simulation) and verification (automatic model-checking) in UPPAAL &lt;br /&gt;
** Slides: [[Media:New_Lab2_MODEL_CHECKING.pdf|Model Checking introduction]]&lt;br /&gt;
** Model: [[Media:Atm_system.xml|ATM System Model]]&lt;br /&gt;
** Query: [[Media:Atm_system_query.q|ATM System Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 3: Understanding of Clocks and State Space Explosion in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lab3_Lab_Lecture.pdf|Uppaal Modelling Language]]&lt;br /&gt;
** Model: [[Media:Jobber.xml|JobShop Model with three possible scenarios]]&lt;br /&gt;
** Query: [[Media:Jobber_Query1.q|JobShop Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 4: Assignment I: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Assignment II: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12, page 172]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4-5: Implementation of Mutual Exclusion Algorithms in UPPAAL &lt;br /&gt;
** Slides: [[Media:Lecture_5.pdf|The Mutual Exclusion Problem and Algorithms]]&lt;br /&gt;
** Model: [[Media:Attempt1_Model.xml|First Attempt Algorithm Model]]&lt;br /&gt;
** Query: [[Media:Attempt1_query.q|First Attempt Query]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Lab Assignment: ATM System, JobShop, Implementation of Mutual Exclusion Algo. &lt;br /&gt;
** Slides: [[Media:Lab_Assignments.pdf|Tasks and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7-8: Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Assignment: Elevator Control&lt;br /&gt;
** Slides: [[Media:ElevatorControl_V1_29062017.pdf|Example and explanation]]&lt;br /&gt;
** Slides: [[Media:ModellingRequirement.pptx|Modelling Requirements]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Final Assessment on 17 May 2018&lt;br /&gt;
** Lab defending of all given assignment.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Lab 4: Assignment 1: Coffee Machine&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab1_Coffee_machine_2015.pdf|Example and explanation]]&lt;br /&gt;
** Model: [[Media:ITI0130_Coffee.xml|Coffee machine]]&lt;br /&gt;
** Query: [[Media:ITI0130_Coffee.q|Coffee machine]]&lt;br /&gt;
* Lab 6: Assignment 3: Leader election protocol &lt;br /&gt;
** Slides: [[Media:ITI0130_Lab3_IEEE1394.pdf|Explanation]]&lt;br /&gt;
** [http://perso.ens-lyon.fr/pierre.lescanne/ENSEIGNEMENT/REECRITURE/ABRIAL/sldp.ieee1394.pdf The Leader Election Protocol (IEEE 1394)]&lt;br /&gt;
** [http://link.springer.com/article/10.1023%2FA%3A1008764923992 Verification of a Leader Election Protocol: Formal Methods Applied to IEEE 1394]&lt;br /&gt;
** Reference solution: [[Media:FASDS.pdf|Chapter 12]]&lt;br /&gt;
* Lab 7: Lab Exam&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 7: KeY Introduction&lt;br /&gt;
** Installation: [[Media:ITI0130_Lab7_2016_KeY.pdf|KeY Installation]]&lt;br /&gt;
** Bank example: [[Media:ITI0130_Lab7_2016_Bank.zip|Bank example]]&lt;br /&gt;
** Bank JML: [[Media:ITI0130_Lab7_2016_Bank_JML.zip|Bank JML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Lab 5: Design-by-Contract&lt;br /&gt;
** [https://github.com/nhatminhle/cofoja Contracts for Java (Cofoja)]&lt;br /&gt;
** [https://code.google.com/p/cofoja/w/list Cofoja wiki page]&lt;br /&gt;
** [[Media:ITI0130_Lab5_cofoja_setup.pdf|Installation instructions]]&lt;br /&gt;
** [[Media:ITI0130_Lab5_FM_cofoja.zip|Sample code]]&lt;br /&gt;
&lt;br /&gt;
* Lab 6: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 7: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_db2.zip|Secure Database]]&lt;br /&gt;
&lt;br /&gt;
* Lab 8: Design-by-Contract&lt;br /&gt;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
* Lab 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab8_Key_Instruction.pdf|Installation]]&lt;br /&gt;
&lt;br /&gt;
* Lab 10: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
* Lab 11: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab11_Key_practise.zip|JML]]&lt;br /&gt;
** [[Media:ITI0130_Lab11_summax.zip|SumAndMax Example]]&lt;br /&gt;
&lt;br /&gt;
* Lab 12: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab12_Key_assignment.zip|Key assignment]]&lt;br /&gt;
&lt;br /&gt;
* Lab 13: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab13_Bank_example_solution.zip|Solution to Bank example]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Test 1_2017for practicing.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&lt;br /&gt;
* [[Media:Exercises_2.pdf|Exercises 2]]: Partial correctness of WHILE-programs&lt;br /&gt;
** [[Media:while_program_example_2015.pdf|Example 1]]: Partial correctness of WHILE-loop&lt;br /&gt;
** [[Media:DEDUCTIVE_VERIFICATION_Example_2.pdf|Example 2]]: Partial correctness of FOR-loop&lt;br /&gt;
* Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Exercises__3.pdf|Exercises 3.1]]: Partial correctness of non-deterministic and parallel programs&lt;br /&gt;
** [[Media:Test3_exercises_solutions.pdf|Exercises 3.2]]: Partial correctness of non-deterministic and parallel programs &lt;br /&gt;
** [[Media:Harjutused_3.pdf|Exercises 3.3]]: Parallel programs with message passing&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
* [http://www.fmeurope.org/ Formal Methods Europe]&lt;br /&gt;
* [[Media: 1st_order_proof_rules.pdf|Genzen&amp;#039;s proof system for 1st order logic]]: &lt;br /&gt;
* [[Media: Proof_rules_of_Hoare_logic.pdf|HL proof rules for sequential and parallel programs]]:&lt;br /&gt;
* [[Media: Invariants.pdf|Some guidlines how to find invariants]]&lt;br /&gt;
* Mike Gordon&amp;#039;s lecture notes on Hoare logic [http://www.lsv.ens-cachan.fr/~demri/Gordon14.pdf]&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=ITI8610&amp;diff=7812</id>
		<title>ITI8610</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=ITI8610&amp;diff=7812"/>
		<updated>2018-11-29T10:43:11Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: /* Module II: : Assured Software Analytics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8610 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Co-lecturer&amp;#039;&amp;#039;&amp;#039;: Leonidas Tsiopoulos &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Co-lecturer&amp;#039;&amp;#039;&amp;#039;: Aleksandr Lenin &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Wednesdays 10:00, ICT-315 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 12.00 &amp;lt;br&amp;gt;&lt;br /&gt;
* Lab supervisors:&lt;br /&gt;
** Aleksandr Lenin (aleksandr.lenin ätt ttu.ee) - Module I&lt;br /&gt;
** Jüri Vain (juri.vain ätt ttu.ee),  Leonidas Tsiopoulos (letsio ätt ttu.ee) - Module II&lt;br /&gt;
&lt;br /&gt;
==News 2018==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Deadline for submitting lab assignments of Module II  -- TBA&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI_8610_lecture_1.pdf|Lecture 1]]: Introduction to software assurance&lt;br /&gt;
====Module I: Assurance processes, risk management &amp;amp; security assurance==== ====&lt;br /&gt;
Lecture 1: Security Risk Management&amp;lt;br /&amp;gt;&lt;br /&gt;
Lecture 2: Security Risk Management (contd.)&amp;lt;br /&amp;gt;&lt;br /&gt;
Lecture 3: Security Best Practices&amp;lt;br /&amp;gt;&lt;br /&gt;
Lecture 4: Input Validation&amp;lt;br /&amp;gt;&lt;br /&gt;
Lecture 5. Web Application Security. Cross-Site Scripting Attacks&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Module II: : Assured Software Analytics ====&lt;br /&gt;
* [[Media:Module_III_Lecture_1.pdf|Module II Lecture 1]]: Design by Contract&lt;br /&gt;
* [[Media:Module III 2nd lecture JML Specification Cases.pdf|Module II Lecture 2]]: Specification cases&lt;br /&gt;
* [[Media:e.pdf|Module II Lecture 3]]: Multi-view contracts of cyber-physical systems&lt;br /&gt;
* [[Media:Module III 4th lecture.pdf|Module II Lecture 4]]: JML contracts for OOP methods&lt;br /&gt;
* [[Media:OpenJML - Solvers - 15_11_2018.pdf|Module II Lecture 5]]: OpenJML and SMT Solvers&lt;br /&gt;
&lt;br /&gt;
==Practice Assignments==&lt;br /&gt;
====Module I: Security Assurance ====&lt;br /&gt;
Assignment 1: Risk Analysis using the FAIR (Factor Analysis of Information Security Risk) framework&amp;lt;br /&amp;gt;&lt;br /&gt;
Assignment 2: Vulnerability Identification in Code using Static Analysis Tools&amp;lt;br /&amp;gt;&lt;br /&gt;
Assignment 3: Architectural Risk Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
Assignment 4: Web Application Exploitation&lt;br /&gt;
&lt;br /&gt;
====Module II ====&lt;br /&gt;
* [[Media:HomeAssignmnet_of ModuleII.pdf|Lab instruction]]: Lab assignment plan&lt;br /&gt;
NB!&lt;br /&gt;
To report completed lab assignments go to web page https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
and register as user with uniID of TUT&lt;br /&gt;
&lt;br /&gt;
== Grading ==&lt;br /&gt;
&lt;br /&gt;
Each of the two modules is graded independently on the scale 0-100 points. A student must receive a positive grade in every module. Therefore, a student may obtain max 200 points for the entire course. 51%, or 101 points is the absolute minimum required to pass the course. The standard TalTech grading rules are applied to calculate the student&amp;#039;s final grade.&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
https://ained.ttu.ee -- õppekeskkonas olevad materjalid&amp;lt;br /&amp;gt;&lt;br /&gt;
Gary McGraw &amp;quot;Software Security. Building Security In&amp;quot;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:OpenJML_-_Solvers_-_15_11_2018.pdf&amp;diff=7811</id>
		<title>Fail:OpenJML - Solvers - 15 11 2018.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:OpenJML_-_Solvers_-_15_11_2018.pdf&amp;diff=7811"/>
		<updated>2018-11-29T10:40:35Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=ITI8610&amp;diff=7810</id>
		<title>ITI8610</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=ITI8610&amp;diff=7810"/>
		<updated>2018-11-29T10:39:22Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: /* Module II: : Assured Software Analytics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8610 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Co-lecturer&amp;#039;&amp;#039;&amp;#039;: Leonidas Tsiopoulos &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Co-lecturer&amp;#039;&amp;#039;&amp;#039;: Aleksandr Lenin &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Wednesdays 10:00, ICT-315 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 12.00 &amp;lt;br&amp;gt;&lt;br /&gt;
* Lab supervisors:&lt;br /&gt;
** Aleksandr Lenin (aleksandr.lenin ätt ttu.ee) - Module I&lt;br /&gt;
** Jüri Vain (juri.vain ätt ttu.ee),  Leonidas Tsiopoulos (letsio ätt ttu.ee) - Module II&lt;br /&gt;
&lt;br /&gt;
==News 2018==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Deadline for submitting lab assignments of Module II  -- TBA&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI_8610_lecture_1.pdf|Lecture 1]]: Introduction to software assurance&lt;br /&gt;
====Module I: Assurance processes, risk management &amp;amp; security assurance==== ====&lt;br /&gt;
Lecture 1: Security Risk Management&amp;lt;br /&amp;gt;&lt;br /&gt;
Lecture 2: Security Risk Management (contd.)&amp;lt;br /&amp;gt;&lt;br /&gt;
Lecture 3: Security Best Practices&amp;lt;br /&amp;gt;&lt;br /&gt;
Lecture 4: Input Validation&amp;lt;br /&amp;gt;&lt;br /&gt;
Lecture 5. Web Application Security. Cross-Site Scripting Attacks&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Module II: : Assured Software Analytics ====&lt;br /&gt;
* [[Media:Module_III_Lecture_1.pdf|Module II Lecture 1]]: Design by Contract&lt;br /&gt;
* [[Media:Module III 2nd lecture JML Specification Cases.pdf|Module II Lecture 2]]: Specification cases&lt;br /&gt;
* [[Media:e.pdf|Module II Lecture 3]]: Multi-view contracts of cyber-physical systems&lt;br /&gt;
* [[Media:Module III 4th lecture.pdf|Module II Lecture 4]]: JML contracts for OOP methods&lt;br /&gt;
* [[Media:OpenJML - Solvers - 15_11_2018.pdf|Module II Lecture 5]]: A Tutorial on OpenJML&lt;br /&gt;
&lt;br /&gt;
==Practice Assignments==&lt;br /&gt;
====Module I: Security Assurance ====&lt;br /&gt;
Assignment 1: Risk Analysis using the FAIR (Factor Analysis of Information Security Risk) framework&amp;lt;br /&amp;gt;&lt;br /&gt;
Assignment 2: Vulnerability Identification in Code using Static Analysis Tools&amp;lt;br /&amp;gt;&lt;br /&gt;
Assignment 3: Architectural Risk Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
Assignment 4: Web Application Exploitation&lt;br /&gt;
&lt;br /&gt;
====Module II ====&lt;br /&gt;
* [[Media:HomeAssignmnet_of ModuleII.pdf|Lab instruction]]: Lab assignment plan&lt;br /&gt;
NB!&lt;br /&gt;
To report completed lab assignments go to web page https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
and register as user with uniID of TUT&lt;br /&gt;
&lt;br /&gt;
== Grading ==&lt;br /&gt;
&lt;br /&gt;
Each of the two modules is graded independently on the scale 0-100 points. A student must receive a positive grade in every module. Therefore, a student may obtain max 200 points for the entire course. 51%, or 101 points is the absolute minimum required to pass the course. The standard TalTech grading rules are applied to calculate the student&amp;#039;s final grade.&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
https://ained.ttu.ee -- õppekeskkonas olevad materjalid&amp;lt;br /&amp;gt;&lt;br /&gt;
Gary McGraw &amp;quot;Software Security. Building Security In&amp;quot;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=ITI8610&amp;diff=7808</id>
		<title>ITI8610</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=ITI8610&amp;diff=7808"/>
		<updated>2018-11-29T06:38:30Z</updated>

		<summary type="html">&lt;p&gt;Leonidas: /* Grading */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI8610 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lecturer&amp;#039;&amp;#039;&amp;#039;: prof. Jüri Vain &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Contact&amp;#039;&amp;#039;&amp;#039;: juri.vain ätt ttu.ee, ICT-418 &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Co-lecturer&amp;#039;&amp;#039;&amp;#039;: Leonidas Tsiopoulos &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Co-lecturer&amp;#039;&amp;#039;&amp;#039;: Aleksandr Lenin &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time and place==&lt;br /&gt;
&lt;br /&gt;
Lectures: Wednesdays 10:00, ICT-315 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 12.00 &amp;lt;br&amp;gt;&lt;br /&gt;
* Lab supervisors:&lt;br /&gt;
** Aleksandr Lenin (aleksandr.lenin ätt ttu.ee) - Module I&lt;br /&gt;
** Jüri Vain (juri.vain ätt ttu.ee),  Leonidas Tsiopoulos (letsio ätt ttu.ee) - Module II&lt;br /&gt;
&lt;br /&gt;
==News 2018==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Deadline for submitting lab assignments of Module II  -- TBA&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI_8610_lecture_1.pdf|Lecture 1]]: Introduction to software assurance&lt;br /&gt;
====Module I: Assurance processes, risk management &amp;amp; security assurance==== ====&lt;br /&gt;
Lecture 1: Security Risk Management&amp;lt;br /&amp;gt;&lt;br /&gt;
Lecture 2: Security Risk Management (contd.)&amp;lt;br /&amp;gt;&lt;br /&gt;
Lecture 3: Security Best Practices&amp;lt;br /&amp;gt;&lt;br /&gt;
Lecture 4: Input Validation&amp;lt;br /&amp;gt;&lt;br /&gt;
Lecture 5. Web Application Security. Cross-Site Scripting Attacks&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Module II: : Assured Software Analytics ====&lt;br /&gt;
* [[Media:Module_III_Lecture_1.pdf|Module II Lecture 1]]: Design by Contract&lt;br /&gt;
* [[Media:Module III 2nd lecture JML Specification Cases.pdf|Module II Lecture 2]]: Specification cases&lt;br /&gt;
* [[Media:e.pdf|Module II Lecture 3]]: Multi-view contracts of cyber-physical systems&lt;br /&gt;
* [[Media:Module III 4th lecture.pdf|Module II Lecture 4]]: JML contracts for OOP methods&lt;br /&gt;
* [[Media:Module III 5th lecture.pdf|Module II Lecture 5]]: A Tutorial on OpenJML&lt;br /&gt;
&lt;br /&gt;
==Practice Assignments==&lt;br /&gt;
====Module I: Security Assurance ====&lt;br /&gt;
Assignment 1: Risk Analysis using the FAIR (Factor Analysis of Information Security Risk) framework&amp;lt;br /&amp;gt;&lt;br /&gt;
Assignment 2: Vulnerability Identification in Code using Static Analysis Tools&amp;lt;br /&amp;gt;&lt;br /&gt;
Assignment 3: Architectural Risk Analysis&amp;lt;br /&amp;gt;&lt;br /&gt;
Assignment 4: Web Application Exploitation&lt;br /&gt;
&lt;br /&gt;
====Module II ====&lt;br /&gt;
* [[Media:HomeAssignmnet_of ModuleII.pdf|Lab instruction]]: Lab assignment plan&lt;br /&gt;
NB!&lt;br /&gt;
To report completed lab assignments go to web page https://ained.ttu.ee&lt;br /&gt;
&lt;br /&gt;
and register as user with uniID of TUT&lt;br /&gt;
&lt;br /&gt;
== Grading ==&lt;br /&gt;
&lt;br /&gt;
Each of the two modules is graded independently on the scale 0-100 points. A student must receive a positive grade in every module. Therefore, a student may obtain max 200 points for the entire course. 51%, or 101 points is the absolute minimum required to pass the course. The standard TalTech grading rules are applied to calculate the student&amp;#039;s final grade.&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
&lt;br /&gt;
https://ained.ttu.ee -- õppekeskkonas olevad materjalid&amp;lt;br /&amp;gt;&lt;br /&gt;
Gary McGraw &amp;quot;Software Security. Building Security In&amp;quot;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leonidas</name></author>
	</entry>
</feed>