SlideShare a Scribd company logo
FormalZ : Playful Formal Method
E R A S M U S +
Project 2017-1-NL01-KA203-035259
Iván Martínez Ortiz
Universidad Complutense de Madrid
IMPRESS Project
https://impress-project.eu/
What do I need to do as a teacher?
1. Join as a teacher in FormalZ
2. Create a Room
3. Prepare some problems
4. Ask the students to join the room
5. Let them play (and oversee) the gameplay
Bonus: setup your own FormalZ installation
How to create a problem ?
● You need to think about the problem in terms of
○ Core elements
■ Problem Header
■ Pre-condition
■ Post-condition
■ Problem description => For the students
Programinput output
pre-condition post-condition
How to create a problem ?
● Additional elements
■ Difficulty
■ Amount of intermediate problems
● Gaming elements
■ Available lives
■ Available money
● Visibility options
○ Usually used for assignments.
○ Available and due Dates
How to create a problem ?
● Problem header
○ Valid header of a java static method.
■ Without the keyword static not access modifier like public
■ Example: int foo(int[] anArray)
○ Allowed types:
■ int, boolean, int[], boolean[]
● Define the pre and post conditions using a pseudo-code like syntax
● Examples:
○ Problem: Given two non-negative integers, max(x,y) returns the greatest of the two.
Use "retval" to refer to the return value.
○ Preconditions
■ Pre condition: (x >= 0) && (y >= 0)
■ Post condition: ((retval == x) || (retval == y)) && (retval >= x) && (retval >= y)
Complete BNF for formulas
● Formula ::= Expr relationalOp Expr
| ! Formula // negation
| Formula logicalOp Formula
| forall ( arrayIndentifier , indexIdentifier -> Formula )
| exists( arrayIndentifier , indexIdentifier -> Formula )
relationalOp is one of: == <= < > >=
logicalOp is one of: && ||
arrrayIdentifier is an identifier of an array-type, e.g. a, b
indexIdentfier is an identifier of int type, e.g. k, i, j
Expr ::= an integer value
| an identifier of int type
| Expr nummericOp Expr
| arrayIdentifier.length
| arrayIdentifier[ Expr ]
nummericOp is one of: + - *
We advise to restrict the use of * so that
one of the argument should be a
constant, else the resulting pre/post-
condition might be undecidable for the
back-end theorem prover.
Red are terminal
symbols.
How to invite students ?
● Activate the check “Invite link” during room creation
○ You can edit an already created Room activate the check.
○ Distribute the join link among students
● Manually add each of the students
○ Only their email is required.
○ FormalZ will send an invitation link
Let’s play !
● Once joined to a Room, students have access to all the
problems there
○ Note: that as a teacher you can hide and archive problems
● Now what ?
○ If you are with your students in the very same location you
can watch an oversee the activity.
● But, what if
○ I have a lot of students ?
○ we are not in the same location ?
Analytics
● After the students finishes the puzzle or quit, the leaderboard
and some statistics are updated.
● FormalZ it is integrated with RAGE Analytics, so it is possible
to get near real-time updates on the student progress
Bonus: How to install
● All results and documentation are available at
https://impress-project.eu/formalz/
● We have prepared a docker-based installation available at
https://github.com/e-ucm/formalz-installer
● There is also a vagrant template so, you can easily test it in a
VM in your laptop.
● If you want real-time analytics, you need to install RAGE
Analytics BEFORE installing Formalz
https://github.com/e-ucm/rage-analytics/tree/impress

More Related Content

PPT
TTLinh - A FITter
DOC
Hajar saeed lesson plan robot_9(1)
PPT
Intro to IMP-35 course
PPTX
Bto130 Tour
PPTX
Presentation6
PDF
A Domain Specific Language to retrieve objective indicators for foreign langu...
PDF
Extreme Apprenticeship - experiences and lessons learned
PDF
Resonance Introduction at SacPy
TTLinh - A FITter
Hajar saeed lesson plan robot_9(1)
Intro to IMP-35 course
Bto130 Tour
Presentation6
A Domain Specific Language to retrieve objective indicators for foreign langu...
Extreme Apprenticeship - experiences and lessons learned
Resonance Introduction at SacPy

Similar to FormalZ @ cseet2020 (20)

PDF
Approaches to teaching primary computing
PDF
Let's learn python
DOC
Robpt part
PDF
BIG2016- Lessons Learned from building real-life user-focused Big Data systems
PPTX
Codesters
PDF
Stanford splash spring 2016 basic programming
PDF
Informal talk at pict
PDF
How Indeed asks coding interview questions
PPT
Python week 2 2019 2020 for g10 by eng.osama ghandour
PDF
Ace the Tech Interviews - www.hiredintech.com
PDF
Object Oriented Programming
PDF
Blueprints: Introduction to Python programming
PPTX
Lec 01 introduction
PDF
22222222222222222
PDF
Machine Learning Workshop, TSEC 2020
PDF
CSSC ML Workshop
PPTX
Problem Solving Aspects.pptx
PPT
Welcometo imscomputers7
PDF
Ib dp hl mathematics cat 1 day 1
PPTX
Technical Interviewing
Approaches to teaching primary computing
Let's learn python
Robpt part
BIG2016- Lessons Learned from building real-life user-focused Big Data systems
Codesters
Stanford splash spring 2016 basic programming
Informal talk at pict
How Indeed asks coding interview questions
Python week 2 2019 2020 for g10 by eng.osama ghandour
Ace the Tech Interviews - www.hiredintech.com
Object Oriented Programming
Blueprints: Introduction to Python programming
Lec 01 introduction
22222222222222222
Machine Learning Workshop, TSEC 2020
CSSC ML Workshop
Problem Solving Aspects.pptx
Welcometo imscomputers7
Ib dp hl mathematics cat 1 day 1
Technical Interviewing
Ad

More from Tanja Vos (8)

PDF
Impress project: Goals and Achievements @ cseet2020
PDF
A-TEST2017
PDF
SBST 2015 - 3rd Tool Competition for Java Junit test Tools
PDF
Software Testing Innovation Alliance
PDF
Testar2014 presentation
PDF
Esem2014 presentation
PDF
Testar
PDF
TAROT summerschool slides 2013 - Italy
Impress project: Goals and Achievements @ cseet2020
A-TEST2017
SBST 2015 - 3rd Tool Competition for Java Junit test Tools
Software Testing Innovation Alliance
Testar2014 presentation
Esem2014 presentation
Testar
TAROT summerschool slides 2013 - Italy
Ad

Recently uploaded (20)

PPTX
Orientation - ARALprogram of Deped to the Parents.pptx
PDF
O7-L3 Supply Chain Operations - ICLT Program
PDF
Complications of Minimal Access Surgery at WLH
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PPTX
Pharma ospi slides which help in ospi learning
DOC
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
PDF
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
PDF
01-Introduction-to-Information-Management.pdf
PPTX
Cell Structure & Organelles in detailed.
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PPTX
GDM (1) (1).pptx small presentation for students
PPTX
Cell Types and Its function , kingdom of life
PDF
A systematic review of self-coping strategies used by university students to ...
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PDF
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
PPTX
master seminar digital applications in india
PDF
Module 4: Burden of Disease Tutorial Slides S2 2025
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
Orientation - ARALprogram of Deped to the Parents.pptx
O7-L3 Supply Chain Operations - ICLT Program
Complications of Minimal Access Surgery at WLH
Supply Chain Operations Speaking Notes -ICLT Program
Pharma ospi slides which help in ospi learning
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
01-Introduction-to-Information-Management.pdf
Cell Structure & Organelles in detailed.
STATICS OF THE RIGID BODIES Hibbelers.pdf
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
GDM (1) (1).pptx small presentation for students
Cell Types and Its function , kingdom of life
A systematic review of self-coping strategies used by university students to ...
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
master seminar digital applications in india
Module 4: Burden of Disease Tutorial Slides S2 2025
Abdominal Access Techniques with Prof. Dr. R K Mishra

FormalZ @ cseet2020

  • 1. FormalZ : Playful Formal Method E R A S M U S + Project 2017-1-NL01-KA203-035259 Iván Martínez Ortiz Universidad Complutense de Madrid IMPRESS Project https://impress-project.eu/
  • 2. What do I need to do as a teacher? 1. Join as a teacher in FormalZ 2. Create a Room 3. Prepare some problems 4. Ask the students to join the room 5. Let them play (and oversee) the gameplay Bonus: setup your own FormalZ installation
  • 3. How to create a problem ? ● You need to think about the problem in terms of ○ Core elements ■ Problem Header ■ Pre-condition ■ Post-condition ■ Problem description => For the students Programinput output pre-condition post-condition
  • 4. How to create a problem ? ● Additional elements ■ Difficulty ■ Amount of intermediate problems ● Gaming elements ■ Available lives ■ Available money ● Visibility options ○ Usually used for assignments. ○ Available and due Dates
  • 5. How to create a problem ? ● Problem header ○ Valid header of a java static method. ■ Without the keyword static not access modifier like public ■ Example: int foo(int[] anArray) ○ Allowed types: ■ int, boolean, int[], boolean[] ● Define the pre and post conditions using a pseudo-code like syntax ● Examples: ○ Problem: Given two non-negative integers, max(x,y) returns the greatest of the two. Use "retval" to refer to the return value. ○ Preconditions ■ Pre condition: (x >= 0) && (y >= 0) ■ Post condition: ((retval == x) || (retval == y)) && (retval >= x) && (retval >= y)
  • 6. Complete BNF for formulas ● Formula ::= Expr relationalOp Expr | ! Formula // negation | Formula logicalOp Formula | forall ( arrayIndentifier , indexIdentifier -> Formula ) | exists( arrayIndentifier , indexIdentifier -> Formula ) relationalOp is one of: == <= < > >= logicalOp is one of: && || arrrayIdentifier is an identifier of an array-type, e.g. a, b indexIdentfier is an identifier of int type, e.g. k, i, j Expr ::= an integer value | an identifier of int type | Expr nummericOp Expr | arrayIdentifier.length | arrayIdentifier[ Expr ] nummericOp is one of: + - * We advise to restrict the use of * so that one of the argument should be a constant, else the resulting pre/post- condition might be undecidable for the back-end theorem prover. Red are terminal symbols.
  • 7. How to invite students ? ● Activate the check “Invite link” during room creation ○ You can edit an already created Room activate the check. ○ Distribute the join link among students ● Manually add each of the students ○ Only their email is required. ○ FormalZ will send an invitation link
  • 8. Let’s play ! ● Once joined to a Room, students have access to all the problems there ○ Note: that as a teacher you can hide and archive problems ● Now what ? ○ If you are with your students in the very same location you can watch an oversee the activity. ● But, what if ○ I have a lot of students ? ○ we are not in the same location ?
  • 9. Analytics ● After the students finishes the puzzle or quit, the leaderboard and some statistics are updated. ● FormalZ it is integrated with RAGE Analytics, so it is possible to get near real-time updates on the student progress
  • 10. Bonus: How to install ● All results and documentation are available at https://impress-project.eu/formalz/ ● We have prepared a docker-based installation available at https://github.com/e-ucm/formalz-installer ● There is also a vagrant template so, you can easily test it in a VM in your laptop. ● If you want real-time analytics, you need to install RAGE Analytics BEFORE installing Formalz https://github.com/e-ucm/rage-analytics/tree/impress