kfrog graphics language for kids rami habas - project manager kyoho satsumi - system architect...
TRANSCRIPT
KFrog
Graphics Language for Kids
Rami Habas - Project Manager Kyoho Satsumi - System Architect Hidemitsu Izawa - Tools Guru Murat Dogru - System Integrator Gaurav Pandey - Tester
Introduction
• KFrog is an imperative, interpreted language for generating 2D graphics
• Motivationo To solve a real-world problem as presented in "Human
computing skills: rethinking the K-12 experience" o To segue kids and adolescents into a computational way of
thinking• KFrog language features
o Simplicityo Randomnesso Concurrencyo Portability
Syntactic constructs
• Syntactic basic blocks: expressions, statements, declarations, and function definitions
• Syntactically simple and intuitive
• Line terminator serves the purpose of a statement terminator.
• Supports user-defined functions, and has some predefined functions.
• Allows only local variables , i.e. each function has its own scope.
void break repeat speed leftcurve decimal continue clearscreen startdraw rightcurve real return reset stopdraw center logical if pondsize forward goto true else pondcolor turnright random false while frogcolor turnleft
Syntactic constructs
Key Words
/*Olympic Parallel*/main () { pondsize 720,480 new frog { frogcolor bule goto 160,200 startdraw circle(80) stopdraw }
...
}
void circle (decimal radius) { leftcurve radius,360}
positions the frog
calls the circle function
receives radius of decimal type
directs the frog to move to the left along a circular arc
Syntactic constructs
sets up frog's color and its drawing
creates a frog object
FrontendOlympic.kfrog program Syntax Tree
LexerParser
WalkerInterpreter
LexerParser
Frogaction
list
Backend
Concurrency support • The Frontend defers the
execution of all the actions for later
• The Backend executes the actions concurrently using threads
Backend
• Java Swing Animation • Concurrent Frog Animation = Multithreaded program• Each frog = Thread
State• color• speed• location (x,y) ...etc
Action• forward• turnleft ...etc
Software Purpose
Java SDK ver6 Development Environment + Target Lang
Windows XP, Vista, Linux Operating System
Eclipse + ANT IDE
ANTLR Frontend
Subversion + Google Code Version Control + Issue Tracking
Google Docs, Presentation Document / Presentation sharing
Development environment and support tools used
Validation
1. Save the output of debug message from Console into a .debug file
2. Design the Test File on the basis of Gold Standard representation and save as .gold file
Testing Algorithm
pondsize 720,480 pondcolor white 1 new Frog { 1 frogcolor blue 1 speed 5 1 center 1 goto 160,200 1 leftcurve 80,360 1 stopdraw
1 }......
<pond xsize="720" ysize="480" color="WHITE"> <frog id="1" speed="5" color="blue"> </center> </goto xvalue="160" yvalue="200"> </startdraw> </curve type="leftcurve" radius="80" degree="360"> </stopdraw> </frog> ......
ValidationTesting Algorithm
3) Load the content of both the files into two data structures
4) Compare both data structures and suggest the final outcome={PASS,FAIL}
Debug 1 new Frog#{#1 frogcolor blue#1 speed 5#1 center#1 goto 160,200#1 startdraw#1 leftcurve 80,360#1 stopdraw#1 }# Gold1 new frog#{#1 frogcolor blue#1 speed 5#1 center#1 goto 160,200#1 startdraw#1 leftcurve 80,360#1 stopdraw#1 }#
Gold File: T13OlympicParallel.gold & Debug File: T13OlympicParallel.debug >> Result: PASS
Conclusions• Lessons learned
o tangibles ANTLR Java Swing Java Concurrent Programming
o intangibles Optimizing everyone's contribution under the given
constraints Team dynamics could be NP-hard
• Highlightso Parallelism can be visualized by the use of multiple frogs
• Future worko Add a language keyword that allows the user to choose
between parallel and sequential execution
Why KFrog?
http://www.youtube.com/watch?v=nZef5s5PlsEhttp://www.youtube.com/watch?v=jN2lk1LjLR4