TIETS14 Introduction to Formal Specification

Similar documents
CSCI 5828: Foundations of Software Engineering

Introduction to Functional Programming. Slides by Koen Claessen and Emil Axelsson

0.1 Welcome. 0.2 Insertion sort. Jessica Su (some portions copied from CLRS)

Topics on Web Services COMP6017

Lecture 1. Course Overview Types & Expressions

Al al-bayt University Prince Hussein Bin Abdullah College for Information Technology Computer Science Department

COMP 401 COURSE OVERVIEW

Concurrent processes. Processes and Threads. Processes and threads. Going back to Concurrency. Modelling Processes. Modeling processes

Boca Raton Community High School AP Computer Science A - Syllabus 2009/10

Welcome to CS 135 (Winter 2018)

MSO Lecture 1. Wouter Swierstra (adapted by HP) September 11, 2017

An Annotated Language

KOMAR UNIVERSITY OF SCIENCE AND TECHNOLOGY (KUST)

Logik für Informatiker Logic for computer scientists

Programming Languages and Techniques (CIS120)

CNG 140 C Programming. Syllabus. Course Info Fall Semester. Catalog Description

Philadelphia University Faculty of Information Technology Department of Computer Science --- Semester, 2007/2008. Course Syllabus

Introduction to Databases Fall-Winter 2010/11. Syllabus

Computer Science Curriculum for International Students

Course Modelling of Concurrent Systems Summer Semester 2016 University of Duisburg-Essen

School of Informatics, University of Edinburgh

Testing, Debugging, and Verification

Organisation. Assessment

Paradigms of computer programming

Introduction to Concurrency

ECE264 Fall 2013 Exam 1, September 24, 2013

CSc 2310 Principles of Programming (Java) Jyoti Islam

Programming Language Concepts, cs2104 Lecture 01 ( )

CSE 504: Compiler Design

The Specification Phase

Introduction to Software Development (ISD) David Weston and Igor Razgon

Course Modelling of Concurrent Systems Summer Semester 2016 University of Duisburg-Essen

Course and Contact Information. Course Description. Course Objectives

Welcome to CS 135 (Fall 2018) Themes of the course. Lectures. cs135/

Programming (Econometrics)

ITT Technical Institute. ET2560T Introduction to C Programming Onsite and Online Course SYLLABUS

Course Syllabus. Programming Language Paradigms. Spring - DIS Copenhagen. Semester & Location: Elective Course - 3 credits.

CSC 111 Introduction to Computer Science (Section C)

Type Systems. Today. 1. Organizational Matters. 1. Organizational Matters. Lecture 1 Oct. 20th, 2004 Sebastian Maneth. 1. Organizational Matters

Syllabus COSC-051-x - Computer Science I Fall Office Hours: Daily hours will be entered on Course calendar (or by appointment)

CSE4305: Compilers for Algorithmic Languages CSE5317: Design and Construction of Compilers

COMP251: Algorithms and Data Structures. Jérôme Waldispühl School of Computer Science McGill University

introduction to Programming in C Department of Computer Science and Engineering Lecture No. #40 Recursion Linear Recursion

INF 315E Introduction to Databases School of Information Fall 2015

CSE 336. Introduction to Programming. for Electronic Commerce. Why You Need CSE336

Introduction to Databases Fall-Winter 2009/10. Syllabus

Lecture 1: Introduction Course arrangements Recap of basic digital design concepts EDA tool demonstration

IT 341 Fall 2017 Syllabus. Department of Information Sciences and Technology Volgenau School of Engineering George Mason University

Course and Contact Information. Course Description. Course Objectives

Study Abroad Programme

Instructions PLEASE READ (notice bold and underlined phrases)

Introduction to Programming

Unit 1: Introduction

High Performance Computing MPI and C-Language Seminars 2009

5COS005W Coursework 2 (Semester 2)

CALEDONIAN COLLEGE OF ENGINEERING, MODULE HANDBOOK. Department of Electrical & Computer Engineering SULTANATE OF OMAN. Module Code

7. Introduction to Denotational Semantics. Oscar Nierstrasz

Welcome to CS120 Fall 2012

Principles of Wireless Sensor Networks

Introduction to Computing Systems: From Bits and Gates to C and Beyond 2 nd Edition

5/31/2006. Last Time. Announcements. Today. Variable Scope. Variable Lifetime. Variable Scope - Cont. The File class. Assn 3 due this evening.

Com S 541. Programming Languages I

Sai Nath University. Assignment For MCA 2nd Sem.

Introduction, Functions

Module Contact: Dr Tony Bagnall, CMP Copyright of the University of East Anglia Version 1

Class Structure. Prerequisites

: Distributed Systems Principles and Paradigms Assignment 1 Multithreaded Dictionary Server

Introduction to Data Structures

Lectures & Excercises

Processes & Threads. Concepts: processes - units of sequential execution.

FSE 100x: Introduction to Engineering: Imagine. Design. Engineer! Spring C 2018

Chapter 2. Processes & Threads. Concurrency: processes & threads 1. Magee/Kramer

(Refer Slide Time: 1:27)

Programming 2. Outline (112) Lecture 0. Important Information. Lecture Protocol. Subject Overview. General Overview.

Verification Finite-state process modeling and reachability analysis

EECE.2160: ECE Application Programming Spring 2017

Program Control Flow

Program Control Flow

CS 242. Fundamentals. Reading: See last slide

DATA STRUCTURES AND ALGORITHMS

RACKET BASICS, ORDER OF EVALUATION, RECURSION 1

Principles of Wireless Sensor Networks

Real-Time Operating Systems M. Course Syllabus, Spring 2013

CMPSCI 187 / Spring 2015 Sorting Kata

CSCI 6312 Advanced Internet Programming

Intensive Introduction to Computer Science. Course Overview Programming in Scratch

Objectives for this class meeting. 1. Conduct review of core concepts concerning contracts and pre/post conditions

Math 152: Applicable Mathematics and Computing

Today. CISC101 Reminders & Notes. Searching in Python - Cont. Searching in Python. From last time

Chapter 3. Describing Syntax and Semantics

EECE.2160: ECE Application Programming Spring 2019

CIS 890: Safety Critical Systems

Programming (ERIM) Lecture 1: Introduction to programming paradigms and typing systems. Tommi Tervonen

Databases and Information Retrieval Integration TIETS42. Kostas Stefanidis Autumn 2016

Welcome to CS 115 (Winter 2018)

CSCI 201L Syllabus Principles of Software Development Spring 2018

Software Testing Prof. Meenakshi D Souza Department of Computer Science and Engineering International Institute of Information Technology, Bangalore

Searching for Information. A Simple Method for Searching. Simple Searching. Class #21: Searching/Sorting I

Databases IIB: DBMS-Implementation Exercise Sheet 13

ELEMENTARY NUMBER THEORY AND METHODS OF PROOF

Transcription:

TIETS14 Introduction to Formal Specification 5 ECTS Teacher: Timo Nummenmaa timo.nummenmaa@staff.uta.fi Executable Formal Specifications in Game Development: Design, Validation and Evolution

Teaching times: Lectures: 10 lectures Tuesdays weekly at 10-12, Pinni B0016 Thursdays weekly at 10-12, Pinni B0016 Weekly exercise session: 5 exercise sessions Thursdays weekly at 12-14, Pinni B0016 Exam Thu 26-Oct-2017 at 14-18, Pinni B1096

Marking The lectures are not compulsory, but for this course it is strictly recommended that you participate in them. The course has an exam, which gives 24 points as maximum. You need to score at least 10 from the exam to pass the course. Of the weekly exercises 30% is compulsory. The rest give you points: 40% give 1 point, 50% give 2 points,..., and 90% give you 6 points (maximum). The coursework gives 0..6 points. The marking scale has not been decided yet, but 30 points is guaranteed to give you a full mark (5).

Marking continued The amount of exercises you have done is checked twice. Once after 3 exercise sessions, once after 5. This means that if you have not completed 30% of the tasks given until that point for the first 3 sessions, it is not possible to complete the course. If you have not completed 30% of all of the exercises in the end, it is also not possible to complete the course.

Lectures The first part of the lectures mostly follows the book by Magee and Kramer. The book has a website, which contains the slides and a downloadable tool, which will also be used in the course. The university library used to have some books, so you may try to find out about that. The second part is about the DisCo system.

Weekly exercises The exercises shall be returned through WETO (the dev version!) The idea of the weekly exercises is that the students solve the exercises at home, submit the solutions through weto and come to the class with the solutions. A student or several students may be asked to present their solutions. Presenting at 3 weekly exercise sessions will give you one extra point. No penalty for wrong solutions The only way to receive feedback on exercise solutions is to come to the exercise sessions, thus it is highly recommended.

Coursework There will be a coursework Details will be available later Deadline will be around the time of the exam The coursework is designed to help you prepare for the exam

Exam There will be an exam Thu 26-Oct-2017 at 14-18, Pinni B1096 There will be one repeat exam The date will be given later

Websites Course information http://www.uta.fi/sis/tie/ifs/index.html Weto https://wetodev.sis.uta.fi/

Concurrency: State Models & Java Programs The book is originally for teaching concurrency This is done through formal specifications and Java implementations It introduces formal specifications in a good way for learning them Thus we will use this book to learn about formal specifications and models We will not focus on the Java parts It is possible to learn about concurrency while learning about formal specifications

Some terms and definitions

Formal Methods Either a branch of pure mathematics which may or may not have any application for real world purposes Or a branch of software engineering concerned with techniques and tools to create better software systems

Formal Methods Follow definition: a formal method is a set of tools and notations (with a formal semantics) used to specify unambiguously the requirements of a computer system that supports the proof of properties of that specification and proofs of correctness of an eventual implementation with respect to that specification (M.G. Hinchey and J.P. Bowen. Applications of formal methods.)

Formal Specifications A formal specification is a specification that is based on mathematics and can be used to model system behaviour. The formal specification should precisely state what the final piece of software is supposed to do

Dynamic vs Static Model dynamic aspects of software systems (this course) system behaviour (control flow) control distribution (concurrency) Model static aspects of software systems (languages such as Z) system states & data structures operations & preconditions

Executable Formal Specifications Formal specifications can be Written in a predetermined specification language That can be executed in a way which anticipates how the system specified will behave These specifications are called executable specifications These specifications can often be studied by simulations

Example: FSP If x is an action and P a process then (x-> P) describes a process that initially engages in the action x and then behaves exactly as described by P. ONESHOT = (once -> STOP). once 0 1 ONESHOT state machine (terminating process) Magee/Kramer 2 nd Edition

FSP - action prefix & recursion Repetitive behaviour uses recursion: on SWITCH = OFF, OFF = (on -> ON), ON = (off-> OFF). Substituting to get a more succinct definition: SWITCH = OFF, OFF = (on ->(off->off)). And again: SWITCH = (on->off->switch). Magee/Kramer 2 nd Edition 0 1 off

DisCo Distributed Co-operation, a formal specification method for reactive systems http://disco.cs.tut.fi/ Created at the Tampere University of Technology Open Source Object oriented Action based Modified to support game development better Extended support for probabilities

Disco specification Disco specification Layers Classes Integers, booleans, records, sets, sequences, states... Extended or new types Relations between classes Actions that alter the state of the system Creation Guard Objects and their states Relation states

DisCo Example layer swapping is class Container is end; val: integer; action swap(c1, c2: Container) is when true do end; c1.val := c2.val c2.val := c1.val; end;

DisCo Two parts Compiler Source compilation Animator Graphical UI Simulations