The James Robertson Memorial Programming Competition is a national academic initiative to promote the Smalltalk programming language in Canada. The event is open to all Canadian high school students. Teams of four students representing their schools will compete for scholarship prizes.

First Prize — $6,000 (4 x $1,500)

Second Prize — $4,000 (4 x $1,000)

Third Prize — $3,000 (4 x $750)

The contest is intended to be a model for similar competitions in other countries. Its goal is to encourage the widespread use of Smalltalk.

Who was James Robertson?

The late James Robertson was a tireless advocate of Smalltalk. He gave many presentations, wrote many blogs, and produced many videos about Smalltalk. His infectious enthusiasm for the language inspired everyone around him. This competition honours the man and his body of work.

Why Smalltalk?

Good question. Smalltalk is an object-oriented, dynamically typed, reflective programming language. It is widely regarded as the best object-oriented language in the world. It is also one of the simplest and most concise programming languages ever created, even simpler than Python. Smalltalk was created by the brilliant visionary team of Alan Kay, Dan Ingalls, and Adele Goldberg at Xerox PARC for teaching programming to children. At the same time, Smalltalk is a wonderfully powerful language used in industry, government, and academia.

Read all about Smalltalk here.

Competition rules

Format: The competition is based on a game of strategy. You will be working on a grid of numbers. You have a “robot” which occupies one square (shown in black) and you can move it in one of 4 directions into adjacent squares (the robot will “wrap around” the board if it’s at the edge).

Each time you enter a square, the value of that square is added to your score and the value of the square is reset to zero. The score is simply the total of captured cells in the game within a certain time period (e.g., 60 seconds).

Moves are scheduled every 100 ms. During this time period, you can calculate the best move.

The program has access to the values of all the squares on the board, the location of the robot, the value of the robot, and the amount of time available to run.

For graphical representation, zero-value squares are white, red squares have the highest values, and light red squares have lower values.

In every round, contestants must submit their Smalltalk classes to us. We will run the simulations on our systems for scoring purposes.

There are 5 rounds, one per week. Round 1 is as described above. Round 2 will introduce a twist to challenge you. Round 3 will introduce another wrinkle, as will Round 4. Round 5, the final round, is the only one that counts for the prize.

You can download and install Smalltalk from here. You have at least 3 months to familiarize yourselves (the whole team) with the programming tools. But don’t worry, Smalltalk is really, really easy.

Registration begins on: Friday, September 6, 2019

Registration closes on: Friday, November 1, 2019

Register here: teams.jrmpc.ca

Competition starts on: Friday, January 31, 2020

Competition ends on: Friday, March 6, 2020

The first 250 registered teams will receive swag (T-shirts). So register early!

How to learn Smalltalk programming

The competition will be using the Smalltalk dialect called VisualWorks from Cincom. To give you a leg up on learning VisualWorks, here are some resources…

Basic introduction to Smalltalk: Prof Stef

(In the Prof Stef tutorial, pay particular attention to this instruction: Select the text below and click on the ‘DoIt’ button.

This often escapes readers.)

Cincom’s tutorials and videos.

Here are some more VisualWorks introductory videos from none other than James Robertson: James Robertson on the basics of Cincom Smalltalk.

Free books on VisualWorks programming:

You can also ask questions at the VisualWorks forum and at StackOverflow.

I suggest you try writing a real program with VisualWorks. This is truly the only way to learn.

Good luck!