C2LC Inclusive Coding Environment Design Vision

Design Values

  • Coding is about:
    • giving learners the power to create things with technology
    • helping learners develop communication, learning, and life skills
  • Collaboration with others should always be encouraged, but not required
  • Engagement with physical activities (i.e. not on the screen, e.g. robots, sensors, etc.) should be encouraged, but not required
  • Use of a screen should not always be necessary
  • The coding environment should:
    • provide different ways (or modalities) to use the system and to express a program (to support the needs of different learners)
    • support different kinds of activities, and should not prescribe which activities or curriculum or pedagogical approaches are used
    • be built in modular bits, so that teachers, parents, and students can choose which parts of the environment are used and can add their own parts, for example:
      • a simpler version can be used (e.g. only the sequence builder and the robot connection panel)
      • example code, starting points, instructional scaffolds (e.g. a video tutorial, a prompt) can be added
      • stories, goals, challenges, custom artwork and avatars can be added
    • be age-respecting, allowing learners of different ages or levels to use it (and make it their own versions of the artwork/characters/stories in it)
    • where possible, customizing the environment should be possible via both:
      • a user interface (e.g. GUI customization/layout tool or mode)
      • programmatically (i.e. by creating a program)
    • support sharing and modification of each others' programs
    • immediately approachable and usable (despite all the customization potential)


  • We design features by co-designing activities that are supported by those features—and then trying them out with learners
  • When we have an idea, if it's feasible, we build an experiment to try it out with learners
  • Students, teachers, parents and mentors have as much influence over features and priorities as we do (if they want)

Basic Environmental Concepts

  • Storytelling Metaphor
    • Story- the complete state of a world, including how the coding tool itself is configured and all the scenes, characters, and behaviours within it (composing it?)
    • Scenes - the worlds or canvases on which activity happens (this may be on screen or, possibly physical in the form of printed maps etc.)
    • Characters - avatars on screen, or robots in the physical world  (but perhaps more generally a way to conceptualize agency within the system)
    • Behaviours (like a character sketch or the dialog in a play)
      • Sequences
      • Patterns (i.e. functions)
      • (Conditions?)
      • (Goals?) - a way of defining non-imperative or non-sequential behaviour
    • Stories should always be a little bit incomplete—something left to your imagination, always a next chapter
  • It should be possible for someone to create a "partial story," which someone else can then extend (i.e. add new scenes, characters, behaviours) or modify it (change existing scenes, characters, behaviour) - nothing in the system should be "magic"

Big Picture Roadmap

  • evolve incrementally from where we're currently at to where we want to go
  • each release, if possible, should include documentation and a video tutorial of how to use it, along with one or more inclusive activities to try with it

Version 0.5

  • Two features only

    1. Sequence editing

    2. Control of robots

Sequence editing

  • Sequence editing works, at minimum, with:

    • Mouse/trackpad

    • Touch

    • Keyboard only

  • If possible, sequence editing also works with eye gaze

  • Single sequence, no repetition or functions or custom tiles

  • Bonus feature: ability to record a sequence with your voice and play/pause it

  • Only title-based sequences (no visible textual representation—yet)

Control of robots

  • Environment automatically searches for supported robots, suggests connecting to them

  • If no robots are found, searches every x seconds/minutes

  • "Find Robot" button and dialog allows user to initiate connection process and to choose one or more robots

  • Robot and environment provide clear indication that they’ve been paired

Version 0.75

  • Finger painting sequence editor 

  • Live evaluation of a sequence (a mode)

Version 1.0

  • Stage View - prominent part of the screen that has a character (avatar for the robot or standalone) and a world the character is exploring

    • On-screen Character representation  doesn't feel like a turtle - playful and engaging
  • Ability to use the environment without a robot connected 

Version 1.5

  • World builder

    • Ability to choose a character representation (choose from a palette or import your own images or finger paint your own?)

    • Ability to place scenery and move/remove it

    • Scenery can be images, text, videos

  • Ability to save and share a world
  • By this point, a teacher or facilitator should be able to set up a simple story using the tool (e.g. to establish goal points, etc.)

Version 2.0

  • Live world

    • Ability to add/edit sequences to any character/object on the stage

    • Conditions in the programming language - branching sequences

    • Ability to add conditional behaviour to characters - play sounds, perform movements, etc. 

  • By this point, it should be possible for a teacher AND a student to tell their own little story with the environment 

Version 2.25

  • Ability to create audio descriptions (recorded speech or text to speech) for:
    • Actions in a sequence
    • Proximity or other conditions
  • Built atop the features in 2.0, but made simpler so that worlds can be multirepresentational "out of the box"

Version 2.5

  • Scenery printing - ability to print out scenery for use with a robot

Version 3.0

  • Goal-directed coding (i.e. work backwards from a goal by introducing conditions or constraints, as opposed to explicit step-by-step sequences)