Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Sunday, May 12, 2019

Teach Kids to Code with Code Battles

Credit: LucĂ©lia Ribeiro Flikr 

Background

As a tech nerd, finding good cell phone games can be challenging. But every once in awhile I find some real gems. One of my favorites is called lightbot. It uses a fun game to teach the general concepts of programming or coding. In general I'm a huge fan of video games. Some gaming behavior can actually "rot" your brain while other behavior has benefits. (I was going to post articles and references, but there's a ton of stuff out there. Do your own research).

I try to find games for myself and my children that provide both entertainment and growth. I think lightbot fits that goal. On another day I was hunting for "building" games where you build some type of machine and then use it to compete against other players. There are several good ones out there, and we play more than one. One we play intermittently is called RoboCraft. During my search I found a programming game (maybe it was Robocode?) where you build the behavior of a robot using code and compete against other players to see whose code is best.

I instantly thought this would be a great game style to teach kids how to program. But the code was too advanced for children. When I see a good product that needs to be adapted to another audience is almost always when I have my ideas.

The Idea

Create a competitive game that teaches the basic programming to children by using modular, graphical code blocks. My basic vision is two robots that compete using behavior that is programmed by the kids. The code blocks each contain specific behaviors like movement, sensing and actions. Some of the blocks would be routines or loops.

For the case of robots, you could have the robots perform some type of task, like moving a ball into a designated goal. The first robot to complete the task wins. So your movement actions could consist of turning and moving forwards. The sensing actions could be detecting a ball in an adjacent square, detecting if the robot is holding the ball, and detecting when the robot is in the goal. Actions would consist of picking up and dropping the ball. One example of a routine would say, "Am I holding a ball? If yes then find the goal, if no then find the ball. Then you would build routines for finding the ball and finding the goal. The person who builds the best routines would accomplish the goal the quickest.

Instead of robots you could have a tank battle. The movements, sensing and actions could be modified for that scenario.

The difficulty could also be modified for different age groups. For younger audiences the code blocks could be high-level and entered sequentially, exactly like lightbot. For intermediate audiences you could make the code interface more like Scratch where the blocks are more granular, and kids have to pick specific settings. And in the most advance version you can expose the actual code like JavaScript. Another way to add complexity is to add additional moving, sensing and action options. Movement could be up down left right and player movements are restricted to a grid. In an advanced model you can include rotate right, rotate left, move sideways and remove the grid for continuous movement. For simple tanks you could control movement and direction of the turret separately from movement and direction of the tracks. The scenarios and variety are limited by creativity and resources.

Progress

2019-05-12

Has it Been Done Before?

I originally had this idea years ago. I did not see anything back then. But there is tons of cool stuff happening rapidly in this space. I haven't found anything that is exactly like lightbot and suitable for entry level audiences or young children. There are some great options now for older children that are comfortable using Scratch.

Tynker has some great options on their "Hour of Code" page. I played some of the games, and they are great for computer-savvy young children up through old children. It uses a Scratch interface and is a perfect example of different action blocks. However, I didn't see any competitive games, and the price is a bit much. If they continue expanding their offerings I could potentially buy into their program. If you are a technical parent, then you can just go to Scratch since I think Tynker is based on Scratch.

Side Note / Pro Tip: Once you find something you like, you can Google for similar things. The two key phrases I use to accomplish this are, "alternative" and, "similar to". As an example, when I googled, "Tynker alternatives" I found "Grasshopper" which looks good for older kids, "Coding Planets" that looks similar to lightbot, "robo garden" which is free but kludgy, and finally "ScratchJr" which is a new-to-me app from the Scratch team. I like the code blocks in ScratchJr, but the objectives are not intuitive and will require guidance from a parent to get them going.

Another item I found by Class 42 is Robot Rattle. There is some voice instruction which I think is helpful for kids or when things are not intuitive. But good game design doesn't require it. Just look at Super Mario Bros Game Design for a perfect example of good design.

There is a super-cool RPG game done by "CodeCombat." It is marketed towards deucators, so I'm not sure on pricing. The demo I tried dumps you straight into Python or Javascript without much instruction. I'm guessing the educators package provides the necessary instruction, but the game could have easily been designed to include the instruction. While it's a fun option, it's not exactly what I was envisioning. I still suggest it for older kids or educators.

So I haven't found anything that fits my specs yet. There are several other potentially good options out there, but most of the ones I found are hidden behind registration walls. My purpose here is not to review everything out there, just to share what I think is needed and see if anything already exists. So far the answer is NO. Close, but not quite.

Sunday, April 7, 2019

Robotics Dev Kit for Kids


Background

If you read my other posts you'll know that I enjoy doing engineering projects with my kids. At home and at school they have played with some basic coding programs. My oldest son and daughter both expressed interest in programming as a hobby; my daughter is interested in astronomy, and my son is interested in robotics. They've played with scratch at school and dabbled in code academy. They have both lamented that the step between the kid programming games and real programming is too big and wish they had better stepping stones.

In a totally separate channel, I was riding on the train and thinking about introducing children to technology in ways that will KEEP them interested and engaged as they continue to grow.

From these two thoughts I wished that there was a robotics kit geared for kids that would provide a fun way to learn the basics of programming, but also incrementally unwrap the graphical programming methods to help them learn the underlying code structures.

The Idea

A robotics kit for kids with modular, easily connectable components and a coding interface that provides varying levels of difficulty.

Regarding the connectable components, I think Lego Power Functions is a perfect example of electronics that have pre-defined functions and can be built however you want right out of the box. They just work and don't take tons of soldering or programming to make something work. But Power Functions fall short when it comes to altering the behavior of the modular components. I think this is an essential part of programming robotics.

You might think that Lego Mindstorms is the answer. When I first had this idea, the answer was a definite NO. In my opinion the programming interface had a high learning-curve for younger kids. I think it is much better now, but the next strike against Mindstorms is the price point. I just think the $200-$400 price point for a single kit is too high of an entry point for most families who want to pursue this as a hobby, and whose kids may end up being not so interested.

As far as the programming interface, I really like the approach taken by the Scratch team. My kids have used it for silly projects and found it enjoyable. But they never learned how to dig into the code that underlies the little building blocks. So this robotics dev kit would provide that functionality to let them learn progressively more involved coding while learning how to control different properties of motors and sensors.

Progress

Has it Been Done Before?

Let me just say that we live in an amazing time in history. I love that people like me can have ideas,  share them publicly, and get the support from their peers to release a product to market, nearly risk free. And there are so many smart people who recognize a need and are willing to take various approaches to provide a solution.

There are some great options out there now that I would consider buying. If you combined the best features of the three below kits then you would obtain my ideal product!

1) Root Robotics

What is it?

  • A pre-built robot with controllable behaviors and a programming interface with increment difficulty.

Pros

  • Easy to use
  • Fun
  • Three levels of programming difficulty
  • Teaches real programming
  • Multiple programming languages
  • Good for educators
Cons
  • Limited ability to customize hardware
  • Best used on a large whiteboard


2) Mabot

What is it?

  • A plug-and-play, programmable robot.

Pros

  • Modular components can be hot-swapped
  • Plug and play
  • Simple programming interface
  • Compatible with Legos
  • Expandable
  • Good for young kids
Cons
  • Full functionality requires a tablet
  • Proprietary, limited programming interface


3) ROKit Smart

What is it?
  • A robotics kit based on the Arduino development board.
Pros
  • Standard electronics platform means nearly limitless expansion potential
  • Teaches full-fledged robotics programming on Arduino
  • Online lessons provide varying difficulty and project examples
  • Good for older youth
Cons
  • Programming interface requires installation and configuration
  • No graphical programming for younger audience
  • Not plug-and-play. Requires advanced ability to read and follow directions or an experienced teacher.