<?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=Guin</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=Guin"/>
	<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/pages/Eri:Kaast%C3%B6%C3%B6/Guin"/>
	<updated>2026-05-21T20:01:15Z</updated>
	<subtitle>Kasutaja kaastöö</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=5575</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=5575"/>
		<updated>2017-04-30T03:39:08Z</updated>

		<summary type="html">&lt;p&gt;Guin: /* 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;Lab assistants&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
Evelin Halling, Jishu Quin &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: Thursdays 10:00, ICT-A2 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 12:00, ICT-402 - Evelin Halling, Jishu Quin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red; font-weight: bold&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Lab on March 16 will be cancelled due to the sickness of lab instructor.&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_16_intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_17.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_17_CTL.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_Lecture_4_17_modelchecking.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_17_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Practicing for Test 1 (see Exercises 1 below)&lt;br /&gt;
* Test 1: Model checking (&amp;#039;&amp;#039;&amp;#039;16.03.2017&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_synthesis1_2017.pdf|Lecture 8]]: Program synthesis I&lt;br /&gt;
* [[Media:ITI8531_synthesis2_2017.pdf|Lecture 9]]: Program synthesis II&lt;br /&gt;
* Test 2 (13.04.2017): Program synthesis&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 11]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 12.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 12.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 13]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 3 (05.05.2016): Deductive verification of sequential programs&lt;br /&gt;
* [[Media:ITI0130_lecture11_2015nondeterministic.pdf|Lecture 15]]: Non-deterministic programs&lt;br /&gt;
* [[Media:ITI0130_lecture_12_2015.pdf|Lecture 16]]: Parallel programs with shared variables&lt;br /&gt;
* [[Media:ITI0130_lecture_13_2015.pdf|Lecture 17]]: Parallel programs with message passing&lt;br /&gt;
* [[Media:ITI8531_lecture_14_2016.pdf|Lecture 18]]: Program synthesis&lt;br /&gt;
* Test 3 (26.05.2016): Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1 -2: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 3: Introduction to modelling in UPPAAL&lt;br /&gt;
** Assignment: 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 4: UPPAAL&lt;br /&gt;
** Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 5: UPPAAL&lt;br /&gt;
** Assignment: 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;
* Lab 6: UPPAAL&lt;br /&gt;
** Homework defenses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&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 NEW!!!&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>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI8531_lecture_14_2016.pdf&amp;diff=4566</id>
		<title>Fail:ITI8531 lecture 14 2016.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI8531_lecture_14_2016.pdf&amp;diff=4566"/>
		<updated>2016-05-20T05:21:20Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=4565</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=4565"/>
		<updated>2016-05-20T05:17:00Z</updated>

		<summary type="html">&lt;p&gt;Guin: /* Lecture plan */&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;
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: Thursdays 12:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 10:00, ICT-405 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2016==&lt;br /&gt;
* Written exam I: at 14.00 on May 27, Room ICT-411&lt;br /&gt;
* Written exam II: at 14.00 on June 3, Room ICT-411&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_16_intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_16.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_16.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_lecture_4_16.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2 (05.05.2016): Deductive verification of sequential programs&lt;br /&gt;
* [[Media:ITI0130_lecture11_2015nondeterministic.pdf|Lecture 11]]: Non-deterministic programs&lt;br /&gt;
* [[Media:ITI0130_lecture_12_2015.pdf|Lecture 12]]: Parallel programs with shared variables&lt;br /&gt;
* [[Media:ITI0130_lecture_13_2015.pdf|Lecture 13]]: Parallel programs with message passing&lt;br /&gt;
* [[Media:ITI8531_lecture_14_2016.pdf|Lecture 14]]: Program synthesis&lt;br /&gt;
* Test 3: Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1 -2: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 3: Introduction to modelling in UPPAAL&lt;br /&gt;
** Assignment: 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 4: UPPAAL&lt;br /&gt;
** Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 5: UPPAAL&lt;br /&gt;
** Assignment: 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;
* Lab 6: UPPAAL&lt;br /&gt;
** Homework defenses&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;
&amp;lt;!--&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:Exercises1.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;
* [[Media:Exercises__3.pdf|Exercises 3]]: Partial correctness of non-deterministic and parallel programs&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>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_lecture_14_2016.pdf&amp;diff=4564</id>
		<title>Fail:ITI0130 lecture 14 2016.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_lecture_14_2016.pdf&amp;diff=4564"/>
		<updated>2016-05-20T05:16:04Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=4563</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=4563"/>
		<updated>2016-05-20T05:13:52Z</updated>

		<summary type="html">&lt;p&gt;Guin: /* Lecture plan */&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;
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: Thursdays 12:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 10:00, ICT-405 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2016==&lt;br /&gt;
* Written exam I: at 14.00 on May 27, Room ICT-411&lt;br /&gt;
* Written exam II: at 14.00 on June 3, Room ICT-411&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_16_intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_16.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_16.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_lecture_4_16.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2 (05.05.2016): Deductive verification of sequential programs&lt;br /&gt;
* [[Media:ITI0130_lecture11_2015nondeterministic.pdf|Lecture 11]]: Non-deterministic programs&lt;br /&gt;
* [[Media:ITI0130_lecture_12_2015.pdf|Lecture 12]]: Parallel programs with shared variables&lt;br /&gt;
* [[Media:ITI0130_lecture_13_2015.pdf|Lecture 13]]: Parallel programs with message passing&lt;br /&gt;
* [[Media:ITI0130_lecture_14_2016.pdf|Lecture 14]]: Program synthesis&lt;br /&gt;
* Test 3: Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1 -2: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 3: Introduction to modelling in UPPAAL&lt;br /&gt;
** Assignment: 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 4: UPPAAL&lt;br /&gt;
** Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 5: UPPAAL&lt;br /&gt;
** Assignment: 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;
* Lab 6: UPPAAL&lt;br /&gt;
** Homework defenses&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;
&amp;lt;!--&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:Exercises1.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;
* [[Media:Exercises__3.pdf|Exercises 3]]: Partial correctness of non-deterministic and parallel programs&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>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab7_2016_Bank_JML.zip&amp;diff=4440</id>
		<title>Fail:ITI0130 Lab7 2016 Bank JML.zip</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab7_2016_Bank_JML.zip&amp;diff=4440"/>
		<updated>2016-04-14T07:58:07Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=4439</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=4439"/>
		<updated>2016-04-14T07:57:24Z</updated>

		<summary type="html">&lt;p&gt;Guin: /* 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;
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: Thursdays 12:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 10:00, ICT-405 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2016==&lt;br /&gt;
* Written exam I: at 14.00 on May 27, Room ICT-411&lt;br /&gt;
* Written exam II: at 14.00 on June 3, Room ICT-411&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_16_intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_16.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_16.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_lecture_4_16.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_Specifications.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI8531_Lecture_6_16_rules.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
* [[Media:ITI0130_lecture11_2015nondeterministic.pdf|Lecture 11]]: Non-deterministic programs&lt;br /&gt;
* [[Media:ITI0130_lecture_12_2015.pdf|Lecture 12]]: Parallel programs with shared variables&lt;br /&gt;
* [[Media:ITI0130_lecture_13_2015.pdf|Lecture 13]]: Parallel programs with message passing&lt;br /&gt;
* Test 3: Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1 -2: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 3: Introduction to modelling in UPPAAL&lt;br /&gt;
** Assignment: 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 4: UPPAAL&lt;br /&gt;
** Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 5: UPPAAL&lt;br /&gt;
** Assignment: 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;
* Lab 6: UPPAAL&lt;br /&gt;
** Homework defenses&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;
&amp;lt;!--&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:Exercises1.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;
* [[Media:Exercises__3.pdf|Exercises 3]]: Partial correctness of non-deterministic and parallel programs&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab7_2016_Bank.zip&amp;diff=4364</id>
		<title>Fail:ITI0130 Lab7 2016 Bank.zip</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab7_2016_Bank.zip&amp;diff=4364"/>
		<updated>2016-03-24T08:05:35Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab7_2016_KeY.pdf&amp;diff=4363</id>
		<title>Fail:ITI0130 Lab7 2016 KeY.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab7_2016_KeY.pdf&amp;diff=4363"/>
		<updated>2016-03-24T08:04:27Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=4362</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=4362"/>
		<updated>2016-03-24T08:03:49Z</updated>

		<summary type="html">&lt;p&gt;Guin: /* 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;
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: Thursdays 12:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Thursdays 10:00, ICT-405 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2016==&lt;br /&gt;
* Written exam I: at 14.00 on May 27, Room ICT-411&lt;br /&gt;
* Written exam II: at 14.00 on June 3, Room ICT-411&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI8531_Lecture_1_16_intro.pdf|Lecture 1]]: Introduction&lt;br /&gt;
* [[Media:ITI8531_Lecture_2_16.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI8531_Lecture_3_16.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI8531_lecture_4_16.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI8531_Lecture_5_16_TA_and_TCTL.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
** [[Media:ITI8531_Exercises_1_2016.pdf|Exercises]]: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
* [[Media:ITI0130_lecture11_2015nondeterministic.pdf|Lecture 11]]: Non-deterministic programs&lt;br /&gt;
* [[Media:ITI0130_lecture_12_2015.pdf|Lecture 12]]: Parallel programs with shared variables&lt;br /&gt;
* [[Media:ITI0130_lecture_13_2015.pdf|Lecture 13]]: Parallel programs with message passing&lt;br /&gt;
* Test 3: Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1 -2: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 3: Introduction to modelling in UPPAAL&lt;br /&gt;
** Assignment: 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 4: UPPAAL&lt;br /&gt;
** Assignment: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 5: UPPAAL&lt;br /&gt;
** Assignment: 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;
* Lab 6: UPPAAL&lt;br /&gt;
** Homework defenses&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;
&lt;br /&gt;
&amp;lt;!--&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:Exercises1.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;
* [[Media:Exercises__3.pdf|Exercises 3]]: Partial correctness of non-deterministic and parallel programs&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab13_Bank_example_solution.zip&amp;diff=2648</id>
		<title>Fail:ITI0130 Lab13 Bank example solution.zip</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab13_Bank_example_solution.zip&amp;diff=2648"/>
		<updated>2015-06-02T15:16:01Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2647</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=2647"/>
		<updated>2015-06-02T15:15:32Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
* Written exam I: at 14.00 on May 27, Room ICT-411&lt;br /&gt;
* Written exam II: at 14.00 on June 3, Room ICT-411&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
* [[Media:ITI0130_lecture11_2015nondeterministic.pdf|Lecture 11]]: Non-deterministic programs&lt;br /&gt;
* [[Media:ITI0130_lecture_12_2015.pdf|Lecture 12]]: Parallel programs with shared variables&lt;br /&gt;
* [[Media:ITI0130_lecture_13_2015.pdf|Lecture 13]]: Parallel programs with message passing&lt;br /&gt;
* Test 3: Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.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;
* [[Media:Exercises__3.pdf|Exercises 3]]: Partial correctness of non-deterministic and parallel programs&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2646</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=2646"/>
		<updated>2015-06-02T12:50:20Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
* Written exam I: at 14.00 on May 27, Room ICT-411&lt;br /&gt;
* Written exam II: at 14.00 on June 3, Room ICT-411&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
* [[Media:ITI0130_lecture11_2015nondeterministic.pdf|Lecture 11]]: Non-deterministic programs&lt;br /&gt;
* [[Media:ITI0130_lecture_12_2015.pdf|Lecture 12]]: Parallel programs with shared variables&lt;br /&gt;
* [[Media:ITI0130_lecture_13_2015.pdf|Lecture 13]]: Parallel programs with message passing&lt;br /&gt;
* Test 3: Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.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;
* [[Media:Exercises__3.pdf|Exercises 3]]: Partial correctness of non-deterministic and parallel programs&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab13_Key_solution.zip&amp;diff=2645</id>
		<title>Fail:ITI0130 Lab13 Key solution.zip</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab13_Key_solution.zip&amp;diff=2645"/>
		<updated>2015-06-02T12:41:51Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2644</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=2644"/>
		<updated>2015-06-02T12:40:56Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
* Written exam I: at 14.00 on May 27, Room ICT-411&lt;br /&gt;
* Written exam II: at 14.00 on June 3, Room ICT-411&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
* [[Media:ITI0130_lecture11_2015nondeterministic.pdf|Lecture 11]]: Non-deterministic programs&lt;br /&gt;
* [[Media:ITI0130_lecture_12_2015.pdf|Lecture 12]]: Parallel programs with shared variables&lt;br /&gt;
* [[Media:ITI0130_lecture_13_2015.pdf|Lecture 13]]: Parallel programs with message passing&lt;br /&gt;
* Test 3: Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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_Key_solution.zip|Solution to KeY assignment]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.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;
* [[Media:Exercises__3.pdf|Exercises 3]]: Partial correctness of non-deterministic and parallel programs&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab12_Key_assignment.zip&amp;diff=2596</id>
		<title>Fail:ITI0130 Lab12 Key assignment.zip</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab12_Key_assignment.zip&amp;diff=2596"/>
		<updated>2015-05-16T09:22:04Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2595</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=2595"/>
		<updated>2015-05-16T09:20:37Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
* Written exam I: at 14.00 on May 27, Room ICT-411&lt;br /&gt;
* Written exam II: at 14.00 on June 3, Room ICT-411&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
* [[Media:ITI0130_lecture11_2015nondeterministic.pdf|Lecture 11]]: Non-deterministic programs&lt;br /&gt;
* [[Media:ITI0130_lecture_12_2015.pdf|Lecture 12]]: Parallel programs with shared variables&lt;br /&gt;
* [[Media:ITI0130_lecture_13_2015.pdf|Lecture 13]]: Parallel programs with message passing&lt;br /&gt;
* Test 3: Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.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;
* [[Media:Exercises__3.pdf|Exercises 3]]: Partial correctness of non-deterministic and parallel programs&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab11_summax.zip&amp;diff=2576</id>
		<title>Fail:ITI0130 Lab11 summax.zip</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab11_summax.zip&amp;diff=2576"/>
		<updated>2015-05-13T13:25:45Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2575</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=2575"/>
		<updated>2015-05-13T13:25:04Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
* Written exam I: at 14.00 on May 27, Room ICT-411&lt;br /&gt;
* Written exam II: at 14.00 on June 3, Room ICT-411&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
* [[Media:ITI0130_lecture11_2015nondeterministic.pdf|Lecture 11]]: Non-deterministic programs&lt;br /&gt;
* [[Media:ITI0130_lecture_12_2015.pdf|Lecture 12]]: Parallel programs with shared variables&lt;br /&gt;
* [[Media:ITI0130_lecture_13_2015.pdf|Lecture 13]]: Parallel programs with message passing&lt;br /&gt;
* Test 3: Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.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;
&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab11_Key_practise.zip&amp;diff=2574</id>
		<title>Fail:ITI0130 Lab11 Key practise.zip</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab11_Key_practise.zip&amp;diff=2574"/>
		<updated>2015-05-13T13:00:43Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2573</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=2573"/>
		<updated>2015-05-13T13:00:15Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
* Written exam I: at 14.00 on May 27, Room ICT-411&lt;br /&gt;
* Written exam II: at 14.00 on June 3, Room ICT-411&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture plan==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
* [[Media:ITI0130_lecture11_2015nondeterministic.pdf|Lecture 11]]: Non-deterministic programs&lt;br /&gt;
* [[Media:ITI0130_lecture_12_2015.pdf|Lecture 12]]: Parallel programs with shared variables&lt;br /&gt;
* [[Media:ITI0130_lecture_13_2015.pdf|Lecture 13]]: Parallel programs with message passing&lt;br /&gt;
* Test 3: Deductive verification of non-deterministic and parallel programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.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;
&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab9_Key_practise.zip&amp;diff=2519</id>
		<title>Fail:ITI0130 Lab9 Key practise.zip</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab9_Key_practise.zip&amp;diff=2519"/>
		<updated>2015-04-29T13:04:33Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2518</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=2518"/>
		<updated>2015-04-29T12:59:34Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture notes==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
* [[Media:ITI0130_lecture11_2015nondeterministic.pdf|Lecture 11]]: Non-deterministic programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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 9: Key Tool&lt;br /&gt;
** [[Media:ITI0130_Lab9_Key_practise.zip|Key Examples]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.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;
&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab8_Key_Instruction.pdf&amp;diff=2478</id>
		<title>Fail:ITI0130 Lab8 Key Instruction.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab8_Key_Instruction.pdf&amp;diff=2478"/>
		<updated>2015-04-22T13:05:28Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2477</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=2477"/>
		<updated>2015-04-22T13:05:10Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture notes==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.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;
&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2476</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=2476"/>
		<updated>2015-04-22T13:04:42Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture notes==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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|Cofoja Assignment]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.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;
&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2405</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=2405"/>
		<updated>2015-04-15T12:39:10Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture notes==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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;
&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.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;
&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab7_assignment_Instruction.pdf&amp;diff=2395</id>
		<title>Fail:ITI0130 Lab7 assignment Instruction.pdf</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab7_assignment_Instruction.pdf&amp;diff=2395"/>
		<updated>2015-04-11T08:36:24Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2394</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=2394"/>
		<updated>2015-04-11T08:35:48Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture notes==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
*** [[Media:ITI0130_Lab7_assignment_Instruction.pdf|Instructions]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.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;
&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2393</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=2393"/>
		<updated>2015-04-11T08:22:46Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture notes==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.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;
&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2392</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=2392"/>
		<updated>2015-04-11T08:21:34Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture notes==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.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;
&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab7_assignment_cofoja.zip&amp;diff=2391</id>
		<title>Fail:ITI0130 Lab7 assignment cofoja.zip</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab7_assignment_cofoja.zip&amp;diff=2391"/>
		<updated>2015-04-11T08:06:19Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2390</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=2390"/>
		<updated>2015-04-11T08:04:28Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture notes==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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;
** [[Media:ITI0130_Lab7_assignment_cofoja.zip|Cofoja Assignment - The Instructions are provided in the comments in file src/LibraryTest.java]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.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;
&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2366</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=2366"/>
		<updated>2015-04-08T12:56:03Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture notes==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.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;
&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab7_db2.zip&amp;diff=2365</id>
		<title>Fail:ITI0130 Lab7 db2.zip</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab7_db2.zip&amp;diff=2365"/>
		<updated>2015-04-08T12:53:49Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2364</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=2364"/>
		<updated>2015-04-08T12:53:00Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture notes==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* [[Media:ITI0130_lecture10_2015.pdf|Lecture 10]]: Proving total correctness of while-programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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;
** [[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;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.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;
&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab5_db.zip&amp;diff=2302</id>
		<title>Fail:ITI0130 Lab5 db.zip</title>
		<link rel="alternate" type="text/html" href="http://courses.cs.taltech.ee/w/index.php?title=Fail:ITI0130_Lab5_db.zip&amp;diff=2302"/>
		<updated>2015-04-01T13:50:23Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
	<entry>
		<id>http://courses.cs.taltech.ee/w/index.php?title=Software_Synthesis_and_Verification&amp;diff=2301</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=2301"/>
		<updated>2015-04-01T13:50:00Z</updated>

		<summary type="html">&lt;p&gt;Guin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Course code&amp;#039;&amp;#039;&amp;#039;: ITI0130, ITI8530 &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;
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: Wednesdays 14:00, ICT-A1 &amp;lt;br&amp;gt;&lt;br /&gt;
Labs: Wednesdays 16:00, ICT-401 - Evelin Halling (evelin.halling ätt ttu.ee)&lt;br /&gt;
&lt;br /&gt;
==News 2015==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lecture notes==&lt;br /&gt;
* [[Media:ITI0130_lecture1_2015.pdf|Lecture 1]]: Introduction to formal methods&lt;br /&gt;
* [[Media:ITI0130_lecture2_2015.pdf|Lecture 2]]: Modelling state transition systems&lt;br /&gt;
* [[Media:ITI0130_lecture3_2_2015.pdf|Lecture 3]]: Temporal logic CTL*&lt;br /&gt;
* [[Media:ITI0130_lecture4_2_2015.pdf|Lecture 4]]: CTL model checking&lt;br /&gt;
* [[Media:ITI0130_lecture5_2015.pdf|Lecture 5]]: Timed automata and TCTL model checking&lt;br /&gt;
* Test 1: Model checking&lt;br /&gt;
* [[Media:ITI0130_lecture7_2015.pdf|Lecture 7]]: Program specifications&lt;br /&gt;
* [[Media:ITI0130_lecture8_2015.pdf|Lecture 8]]: Proving partial correctness of programs&lt;br /&gt;
* [[Media:ITI0130_lecture9_1_2015.pdf|Lecture 9.1]]: Proof techniques (1): derived rules, backwards proof, annotations&lt;br /&gt;
* [[Media:ITI0130_lecture9_2_2015.pdf|Lecture 9.2]]: Proof techniques (2): Array- and FOR-rule&lt;br /&gt;
* Lecture 10: Proving total correctness of programs &lt;br /&gt;
* Test 2: Deductive verification of sequential programs&lt;br /&gt;
&lt;br /&gt;
==Labs==&lt;br /&gt;
* Lab 1: Introduction to modelling in UPPAAL &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;
** Slides: [[Media:ITI0130_uppaal_eng_2013.pdf|UPPAAL introduction]]&lt;br /&gt;
** Model: [[Media:ITI0130_Light.xml|Lamp example]]&lt;br /&gt;
** Query: [[Media:ITI0130_Light.q|Lamp example]]&lt;br /&gt;
* Lab 2: Introduction to modelling in UPPAAL &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 3: Reader-Writer (unreliable) communication protocol&lt;br /&gt;
** Slides: [[Media:ITI0130_Lab2_2015.pdf|Example and explanation]]&lt;br /&gt;
* Lab 4: 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;
* 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;
** [[Media:ITI0130_Lab5_db.zip|Database]]&lt;br /&gt;
&lt;br /&gt;
== Exercises==&lt;br /&gt;
* [[Media:Exercises1.pdf|Exercises 1]]: Model checking (explicit and symbolic state)&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;/div&gt;</summary>
		<author><name>Guin</name></author>
	</entry>
</feed>