Title: KFrog
1KFrog
- Graphics Language for Kids
- Rami Habas - Project Manager
- Kyoho Satsumi - System Architect
- Hidemitsu Izawa - Tools Guru
- Murat Dogru - System Integrator
- Gaurav Pandey - Tester
2Introduction
- 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
3Example - Olympic Flag
4Syntactic constructs
- Syntactically simple and intuitive
- Syntactic basic blocks expressions, statements,
declarations, and function definitions
- 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.
5Syntactic 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
6Syntactic constructs
/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
receives radius of decimal type
directs the frog to move to the left along a
circular arc
7Interpreter Architecture
8Frontend
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
9Backend
- Java Swing Animation
- Concurrent Frog Animation Multithreaded program
- Each frog Thread
- State
- color
- speed
- location (x,y) ...etc
- Action
- forward
- turnleft ...etc
10Development environment and support tools used
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
11Validation
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 -
ltpond xsize"720" ysize"480" color"WHITE"gt
ltfrog id"1" speed"5" color"blue"gt
lt/centergt lt/goto xvalue"160"
yvalue"200"gt lt/startdrawgt
lt/curve type"leftcurve" radius"80"
degree"360"gt lt/stopdrawgt lt/froggt
......
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 ......
12Validation
Testing Algorithm
4) Compare both data structures and suggest the
final outcomePASS,FAIL
- 3) Load the content of both the files into two
data structures -
Debug 1 new Frog1 frogcolor blue1 speed 51
center1 goto 160,2001 startdraw1 leftcurve
80,3601 stopdraw1 Gold 1 new frog1
frogcolor blue1 speed 51 center1 goto
160,2001 startdraw1 leftcurve 80,3601
stopdraw1
Gold File T13OlympicParallel.gold Debug File
T13OlympicParallel.debug gtgt Result PASS
13Conclusions
- 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
14Why KFrog?
http//www.youtube.com/watch?vnZef5s5PlsEhttp//
www.youtube.com/watch?vjN2lk1LjLR4