Brussels / 2 & 3 February 2019


JavaScript as a teaching-tool

How JS can be used to teach tricky programming concepts.

There are certain sticking points in introductory computer science that are continually difficult to teach and to learn. Many efforts are moving towards custom program visualization environments, simplified languages, and visual programming languages.
The main problem with these approaches can be open accessiblity & transfering skills from learning environments to professional environments. We propose a method to teach introductory computing with all the benefits of novice programming languages/environments using only JS, open tools on the web, and some unusual methods.

Dijkstra (a prominent computer scientist) has put forth that the only true way to teach programming is by manipulating formal systems by hand, on paper, for a very long time. Only then, he claims, can students truly grasp the "radical novelty" of programming.
I agree with his sentiment, but not entirely with his methods. I do believe (from personal experience and reviewing the literature on programming education) that analogies and high-level understanding are ineffective for teaching beginners with no previous experience in analytic fields. Computer programming (beyond basic scripting) is indeed too different from most daily experiences to be treated as an extension of previous skills or understanding. However, I do believe that this novel way of thinking can be taught and learned while programming if the right exercises and expectations are set forth. We will demonstrate some of the exercises we have found to work very well towards this goal, including: studying primitives & explicit coercions as mappings between sets then writing 'proof cases' (instead of test cases) based on JS specifications that fully cover all behavioral cases, refactoring code into 'trace-blocks' that illustrate code's step-by -step implementation behind the scenes, and using diagrams to disentangle language implementation (notional machine) from the computational & strategic skeleton of simple solutions. You will walk away with a fresh perspective on programming & JavaScript, as well as with lessons and open resources you can use to take this directly to your classroom or coworkers.

20 min talk with live examples & available source code, all executable in the browser for following along. 10 min Q&A

            For beginner programmers: how to get started.
    For devs coming to js from another language: how to break into JS.
    For experienced JS devs: how to help someone get started, and how to see JS from a fresh perspective.
    For educators: how to teach these concepts, and where to learn this.


Evan Cole