I created a website, frogram, which aims to introduce programming to anyone who has no previous experience in coding.
The initial idea that me and Anthony had, was to teach the basics of Python; then give out some challenges for the participants to work on, e.g. printing
hello world 10 times, solve the quadratic equation etc.
However, we see two problems with this approach:
- The challenges are not rewarding. There is no incentive for the participants to work on them. Why would they want to print
hello world10 times? They solved the quadratic equation, so what?
- It is more like an "Introduction to Python the Programming Language" than an "Introduction to Programming" because the participants are likely to struggle more on language issues, e.g. incorrect indentations, incorrect syntax, rather than logic issues.
To make the challenge more rewarding, we have this idea of asking the participants to win the Frogger game by writing some code. The code will essentially control the frog. It is obvious that playing games is much more rewarding than printing
hello world 10 times.
We invented a frogger-specific language to minimise the time needed for fixing language issues. We want to make the language as minimal and restrictive as possible so that it could provide super helpful error message.
For example, since the available predicates are limited to only
isGoalUp|isRiverUp|is(Car|Log|Wall)(Up|Right|Down|Left), if the user types
isCardown with a lowercase
d, the error message generated would be super specific saying:
Expected "Down", "Left", "Right", or "Up" but "d" found. (Thanks to PEG.js for the amazing parser generator!)
At last, combining the frogger and the frograming language, we have our final Frogram! Go ahead now and check it out! Any feedback would be greatly appreciated. Remember to star it on github. And more importantly share the site to your friends who wish to learn some about programming. And more importantly !