Calico: a multi-programming-language, multi-context framework designed for computer science education