Calico Project

Calico Overview

Calico is a programming environment for exploring computation. It is composed of three components:

  • Scripting Languages (such as Python, Java, Scheme, and others)
  • Libraries for doing things (such as Graphics, Processing, and robotics)
  • IDEs (environments for writing code)

The goal is to make scripting easy, fun, and engaging. Calico is an easy install for Windows, Linux, and Mac, and comes with everything you need to program graphics, sound, robots, and more.

Calico's languages span the spectrum from a drag-and-drop language called Jigsaw (inspired by Scratch), to a sophisticated implementation of Scheme, and many languages in the middle. Almost all of the languages can share common libraries, and interoperate with each other. For example, you can share data structures and functions between languages.

Visit Calico project to find out more about it.

Below you will find a collection of Notebooks demonstrating each language. We will add to these over time.

To browse all Calico example notebooks, see:


Scripting Languages

Some of the languages that come with Calico:

  • Python - version of the standard, similar to Python 3
  • Java - interactive Java
  • Scheme - powerful language, written in Scheme
  • Ruby - version of the standard
  • Basic - old-school "10 PRINT 'Hello World'"
  • Logo - based on the original
  • Boo - similar to Python
  • BrainScrew - for fun!
  • Collaborate - cooperative editing (requires Calico IDE)
  • Console - a shell language
  • Jigsaw - drag-and-drop language inspired by Scratch (requires Calico IDE)
  • LC3 - the "litte computer" assembly language
  • Spreadsheet - a spreadsheet view, integrated with languages (requires the Calico IDE)


Some of the libraries that come with Calico:

  • Myro - for exploring robots, real and simulated
  • Graphics - object-oriented graphics library
  • Processing - for exporing art
  • MyROS - advanced robotics


Just a few quick examples, showing some functionality. Normally, of course, a student or researcher would probably only work in a single language.

In [1]:
%%%lang python
print("Hello, world!")
'Calico Language is now "Python"'
Hello, world!
In [2]:
%%%lang scheme
(print 'hello 'world)
'Calico Language is now "Scheme"'
In [3]:
(print (choose 'hello 'world))
'no more choices'
In [4]:
%%%lang BASIC
'Calico Language is now "Basic"'
In [4]:
10 x = 1
20 print "hello ";
30 print "world"
40 x = x + 1
50 if x < 10 then GOTO 20
In [5]:
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
In [6]:
%%%lang Java
System.out.println("Hello, World!");
'Calico Language is now "Java"'
Hello, World!
In [7]:
%%%lang boo
print("Hello, there!")
'Calico Language is now "Boo"'
Hello, there!
In [8]:
%%%lang console
echo "Hello world"
'Calico Language is now "Console"'
Hello world
In [9]:
%%%lang logo
'Calico Language is now "Logo"'
In [10]:
print [Hello World, from Logo!]
Hello World , from Logo!
In [ ]: