140 likes | 152 Views
KFrog is an imperative, interpreted language designed to teach kids and adolescents computational thinking through generating 2D graphics. It features simplicity, randomness, concurrency, and portability. The language allows for user-defined functions and has some predefined functions. This text includes a syntax example and an introduction to the interpreter architecture.
E N D
KFrog • Rami Habas - Project Manager • Kyoho Satsumi - System Architect • Hidemitsu Izawa - Tools Guru • Murat Dogru - System Integrator • Gaurav Pandey - Tester Graphics Language for Kids
Introduction • KFrog is an imperative, interpreted language for generating 2D graphics • Motivation • To solve a real-world problem as presented in "Human computing skills: rethinking the K-12 experience" • To segue kids and adolescents into a computational way of thinking • KFrog language features • Simplicity • Randomness • Concurrency • Portability
Source Program Output Example - Olympic Flag
Syntactically simple and intuitive • Syntactic basic blocks: expressions, statements, declarations, and function definitions Syntactic constructs • 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.
Syntactic constructs Key Words 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
creates a frog object sets up frog's color and its drawing calls the circle function /*Olympic Parallel*/ main () { pondsize 720,480 new frog { frogcolor bule goto 160,200 startdraw circle(80) stopdraw } ... } void circle (decimal radius) { leftcurve radius,360 } Syntactic constructs positions the frog receives radius of decimal type directs the frog to move to the left along a circular arc
Frontend Olympic.kfrog program Syntax Tree • Concurrency support • The Frontend defers the execution of all the actions for later • The Backend executes the actions concurrently using threads Frog action list Lexer Parser Lexer Parser Walker Interpreter Backend
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 Development environment and support tools used Windows XP, Vista, Linux Operating System Eclipse + ANT IDE ANTLR Frontend Subversion + Google Code Version Control + Issue Tracking Google Docs, Presentation Document / Presentation sharing
Validation Testing Algorithm 2. Design the Test File on the basis of Gold Standard representation and save as .gold file 1. Save the output of debug message from Console into a .debug file <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> ...... 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 }......
Validation Testing Algorithm 4) Compare both data structures and suggest the final outcome={PASS,FAIL} 3) Load the content of both the files into two data structures 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 }# Gold 1 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 • tangibles • ANTLR • Java Swing • Java Concurrent Programming • intangibles • Optimizing everyone's contribution under the given constraints • Team dynamics could be NP-hard • Highlights • Parallelism can be visualized by the use of multiple frogs • Future work • 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