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)
Approach
- 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
Sequence editing
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)