Badges Project Proposal

  • Jun 14, 2012
  • 1 Comment

1. The high level problem: How can we introduce new programming concepts to non-programmers in a fun and motivating way?

Learning through play and self-discovery has many advantages. The user can be creative and explore the concept on his own to gain understanding. However, this kind of learning requires a certain amount of self-motivation to continue to push oneself to the next level. Moreover, regardless of motivation, non-programmers by definition are unfamiliar with programming concepts and may not even think to explore certain ideas. How, then, can we introduce programming concepts in a way that will guide non-programmers and motivate them to learn more complicated code? Can such a system still preserve self-exploration and self-discovery in the learning process?

2. Why this problem is  important for Looking Glass users

    The Looking Glass software contains a substantial amount of infrastructure for non-programmers to learn basic programming concepts. For instance,Looking Glass has Action Ordering Boxes that act like loops and if statements. Theoretically, the users can learn programming concepts through play and trial and error. Furthermore, the Community site offers many examples of programming concepts in action. The users can use the reuse process to learn about concepts that they may not have known about or didn’t know how to do before.

However, learning through self-directed or random discovery presents several challenges: a user may never run into a particular concept, lose motivation to explore on her own, or never push her skills to the next level.

A system of merit-based badges, awarded based upon the skills a user exhibits in her worlds, will guide and motivate learning. The badges will give users suggestions for what concept to explore next or what example worlds they should look at. The user will also have the ability to set a badge as her goal. By aiming to earn a particular badge, the user’s play and world-building gains purpose. Furthermore, the badges will be structured by difficulty. The suggestion system will guide the user to pursue goals that are at her level, and therefore achievable. These small goals will be manageable and hopefully avoid excess frustration. The continual achievements could boost the user’s confidence as well as motivate her to try to earn more badges.

Moreover, the badges will have a large presence on the site. They will hopefully become status symbols, and therefore coveted. The badges are also visual representations of the user’s programming accomplishments. By rewarding worlds that use a lot of programming concepts, the badges give more complex worlds high prestige. As such, the badge systems will provide the users with incentive to learn new and more complicated topics. The worth of the badges will be enhanced by the mentorship program on the Community site. Ideally, a mentor is someone the user admires. If the mentor has a large collection of badges, chances are the user might want to earn some for herself as well. The badges can also help to promote actions on the Community website that we may desire from the user. For instance, we can reward the user with an activity badge if she enters a challenge, follows another user, or tags a world.

Badges also provide a system by which to sort worlds and users. Since the worlds will be tagged with the skills they have in them, the user will be able to find examples that pertain to the concept she is trying to learn. Badges will also be able to distinguish which worlds and users are more advanced. This will be helpful in the mentorship program since the user will be able to easily see which people she might want to follow. Furthermore, the badges give the user a visual path with steps that she can take to become like the person she is following.



3. What I would like to do (the specifics)

  • Create a hierarchical system of badges based on skills we would like the users to learn and activities we would like them to do.
  • Create a logical and sustainable database to hold this information
  • Design a logical and aesthetically pleasing visual representation of these badges.
  • Design and implement a way to visually and prominently display the badges that the users and the worlds earn so as to increase their desirability.
  • Design and implement a way to introduce the badge system and suggest badges to earn.
  • Design and implement an information or explanation page for the badges.
  • Design and implement a goal-setting system that would be integrated with the IDE and further leverage the motivation and direction that badges can offer.


Proposed Badges
    Here is my list of proposed badges. This list was compiled by exploring what options were available in Looking Glass and considering what kinds of concepts we would like to introduce to beginning programmers. However, this is still in its preliminary stages. The final list will probably be based on a) what tests we will be able to feasibly run and b) more research into teaching programming to non-programmers. Ideally, the difficulty levels of the final badges will also be based on research into teaching computer science and/or looking at user-generated worlds to see which concepts and easy to grasp and which are not.

Activity Badges

These badges are based on the actions the user performs on the Community site. They will not be able to be set as goals. They will be represented by a mushroom badge.
Activity badges may include:

  • Shared a World (1 world, 5 worlds, 10 worlds, etc).
  • Created a Challenge (1 challenge, 5 challenges, 10 challenges, etc.)
  • Entered a Challenge (1 entry, 5 entries, 10 entries, etc.)
  • Followed a User
  • Tagged a World (1 world, 5 worlds, 10 worlds, etc.)


Skill Badges

Action Order Boxes

These badges are based on the use and combination of action ordering boxes. They are represented by a big gear with multiple little gears surrounding it. Go to my previous blog post to learn more about them.


Action Ordering Boxes Badges may include:

    • Do in Order
    • Count
    • While
    • For each in
    • Do Together
    • Each in Togther
    • Local Variable (this badge will not be able to have any of the other action ordering boxes as an extension off of it).


Procedures


These badges are based off of creating your own procedure

These badges may include:

  • Creating and using your own procedure
    • e.g. Wolf.MakeScaryFace()
  • Creating your own procedure with a parameter
    • e.g. Wolf.MakeScaryFace(prey:??)
  • Creating and using your own procedure more than once
    • e.g. Having the wolf make the scary face three times over the course of the story
    • If the user shows the procedure once, it shows that she user understands the organizational aspects of a method (e.g. you can have a separate chunk of code that you refer back to). If she uses the procedure more than once, it shows that she understands that this chunk of code is a fixed or consolidated method that you can keep on calling back to.


Functions
These badges are based off of using the function boxes. They mostly come in two levels. The beginning level would be using one of the given function boxes. The more advanced level would be creating your own function that returned that type.

Function badges may include:

  • Part (anything joint-like)
    • getting something that can do something
    • e.g. Bunny.getElbow()
    • Levels: using given ones, creating your own
  • Description (anything number of color)
    • getting something that you do something with
    • e.g. Bunny.getColor()
    • Levels: using given ones, creating own function
  • String
    • e.g. Bunny.toString()
    • Levels:  using given ones, creating own function
  • Boolean
    • i.e. having and using a boolean in your world
    • e.g. Bunny.isFacingOther()
    • Levels: using given ones, creating your own function that returns one or having a local variable that is a Boolean
  • Array
    • having and using an Array in your world
    • e.g. making a method that returned an Array or having a local variable be an Array
  • Parameter from another user
    • e.g. Bunny. getDoubleFromUser()
      • distinct because the user understands that variables can be passed from one character to another
    • Levels: using the one given, making your own
  • Listener
    • add a listener to your world
    • e.g. world.addProximityExitListener

Click here to see the propose project design!

Comments

  • kyle

    kyle said:

    <p>This sounds great. You've put a lot of thought into this... in all of the right places. However, to me, it feels like all of the skill badges should be gears... some just won't have as many cogs.</p> <p>Also, as a group I think we need to think about some of these constructs and how to make the more suitable for kids, like the arrays (maybe collections) and Strings (sentences?)...</p> <p>&nbsp;</p>

    Posted on Jun 15, 2012

Log In or Sign Up to leave a comment.