Calico is a framework with three main types of users in mind: the educator, the learner, and the scripter.
There is now a paper that includes some information on Calico:
Calico: A Multi-Programming-Language, Multi-Context Framework Designed for Computer Science Education. (2012). Douglas Blank, Jennifer S. Kay, James B. Marshall, Keith O'Hara, and Mark Russo. SIGCSE 2012 (Raleigh, NC).
Calico for the Educator
Calico is a framework for educators to instruct, gain insight, and to explore better methods of teaching.
Calico is ready to use for instruction, and includes useful functions for teaching in the laboratory setting:
- Start with a drag and drop language, like Jigsaw, and smoothly migrate to a more sophisticated text-based language, like Python, and continue to a type-based language, like Boo or C#, and end with a sophisticated language, like Scheme, all in one environment
- Context modules (like Graphics and Robotics) are the same across languages
- Integrated Chat - students and teachers can communicate whenever they are working
- Script Blast - users can Blast code to each other, both to just run, or to pop up in their editors
- Checkpoints - using Script Blast, instructors can send students interactive questions to get feedback on understanding. A simplified version of Classroom presenter is possible
- Follow along instruction - using Script Blast, instructors can send their lecture "slides" so students can follow along (or rewind) on their own screens
- Window design - windows designed for easy presentation on projected screens
- Script submission - code can be submitted easily to instructor
- Logging - instructors can analyse logged data to explore time-on-task and other concepts
- Development - teachers can create their own languages (at various levels of abstraction) to test their pedagogical effectiveness
Instructors can use the user checkpoint question feedback, chat questions, and log analysis to adapt, even on the fly.
Instructors can extend the Calico framework by developing their own languages, visualizations, or interfaces. For example, an instructor develop a new text-based language, or a language like Scratch; or they could develop an interface to objects, like BlueJ.
Calico for the Learner
Calico is designed for students:
- choice of languages, from the simple, to the sophisticated
- embraces social communication
- chat with others, in their own conferences, or with everyone
- chat with the instructor one-on-one
- share code, by allowing others to run it, or see it
- color syntax high-lighting for all languages
- easy support for submitting assignments
- integrated web page for exploring HTML and making a public space
- code blast to help getting answers and asking questions
It is planned that Calico will support extended assistance for getting help with particular errors.
Calico for the Scripter
Calico is a nice environment for writing code, in general. It is planned to make Calico be an environment for exploring (and researching) ideas in computer science. For example, one can write in multiple languages, sharing data between them.