I’ve been working on Cora, a new way to learn how to program. It consists of a new programming language, optimized for learning, and a hand-crafted interactive learning environment together with lessons and challenges.

A programming language, optimized for learning

First, Cora is a new programming language with a twist: it looks exactly like JavaScript. In fact its syntax is a subset of JavaScript’s, with all the non-essential parts removed. JavaScript is one of the the most useful languages to learn, and Cora teaches you JavaScript. Despite its superficial appearances, however, Cora is not JavaScript. It truly is a new programming language, engineered from the ground up to have ridiculously good error messages and no confusing gotchas. The error messages are designed to be so helpful that you can learn to program simply by making mistakes!

The language has some smart features you might have seen before: it is fully typesafe without you needing to declare any types, and the compiler can tell you if you made a typo and suggest corrections. It goes way further than that, though. The compiler can detect hundreds of classes of mistakes made by beginner programmers, and provide helpful feedback instead of cryptic error messages. Here are a few examples:

The compiler doesn’t just tell you what went wrong, it teaches you.

Technically, Cora is an embedded language with a VM implemented in JavaScript. This makes it easy to do step-by-step debugging, to ensure safety and robustness of user-created programs, and to get deep insight into programs for providing errors and suggestions.

An interactive learning environment

The language lives within a web-based interactive learning environment, where students learn to program by drawing, animating, and making games. Lessons and exercises guide you through the basics, with an emphasis on learning by exploring. With the friendly compiler checking your mistakes and teaching you along the way, it feels more like a one-on-one tutorial than an online course. This environment features a new, from-scratch, code editor, optimized for learning, which enables truly interactive lessons where it feels like an instructor is typing at your keyboard, and moving your mouse.

You can help

With Cora, I want to prove how amazing an online learning environment can be. It is a work-in-progress. I have a basic functioning version, but there is still a mountain to climb before it truly meets its potential. Lessons and exercises need to be fleshed out. The compiler needs to support more and better checks and error messages. My plan is to do an initial release in early spring.

I’m asking for your emotional support. If you think this is a worthwhile project: something you would use or recommend to a friend, please join the interest list below. You will be the first to get access, and I will only email you with important updates. (I hate spam too!) Your support will help keep me motivated and grounded as I work to make Cora a reality.

Thank you!