1 / 14

KFrog

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.

hirano
Download Presentation

KFrog

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. KFrog • Rami Habas           - Project Manager • Kyoho Satsumi       - System Architect • Hidemitsu Izawa     - Tools Guru • Murat Dogru           - System Integrator • Gaurav Pandey      - Tester Graphics Language for Kids

  2. 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

  3. Source Program     Output Example - Olympic Flag

  4. 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.

  5. 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

  6.  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

  7. Interpreter Architecture

  8. 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

  9. Backend • Java Swing Animation • Concurrent Frog Animation = Multithreaded program • Each frog = Thread • State • color • speed • location (x,y) ...etc • Action • forward • turnleft ...etc

  10. 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

  11. 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 }......

  12. 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

  13. 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

  14. Why KFrog? http://www.youtube.com/watch?v=nZef5s5PlsEhttp://www.youtube.com/watch?v=jN2lk1LjLR4

More Related