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:

Index

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)

Libraries

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

Examples

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!")
Out[1]:
'Calico Language is now "Python"'
Hello, world!
In [2]:
%%%lang scheme
(print 'hello 'world)
Out[2]:
'Calico Language is now "Scheme"'
hello
world
In [3]:
(print (choose 'hello 'world))
(choose)
(choose)
(choose)
hello
world
Out[3]:
'no more choices'
In [4]:
%%%lang BASIC
Out[4]:
'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
Out[4]:
'Ok'
In [5]:
run
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
Out[5]:
'Ok'
In [6]:
%%%lang Java
System.out.println("Hello, World!");
Out[6]:
'Calico Language is now "Java"'
Hello, World!
In [7]:
%%%lang boo
print("Hello, there!")
Out[7]:
'Calico Language is now "Boo"'
Hello, there!
In [8]:
%%%lang console
echo "Hello world"
Out[8]:
'Calico Language is now "Console"'
Hello world
Out[8]:
'Ok'
In [9]:
%%%lang logo
Out[9]:
'Calico Language is now "Logo"'
In [10]:
print [Hello World, from Logo!]
Hello World , from Logo!
In [ ]: