1 of 29

Teaching Programming

George Mauer | http://togakangaroo.github.io

@togakangaroo | gmauer@gmail.com

http://tinyurl.com/sql2015-teaching

2 of 29

3 of 29

Why is teaching programming hard?

4 of 29

Teach what? Possible Goals

  • Maximum Engagement / Game Dev
  • Get “experience with computers”
  • Learn Basics (Computing)
  • Learn Basics (Theory)
  • Help an organization
  • Get a Job

5 of 29

Teach what? Possible Goals

  • Maximum Engagement / Game Dev
  • Get “experience with computers”
  • Learn Basics (Computing)
  • Learn Basics (Theory)
  • Help an organization
  • Get a Job
  • Unity3d, phaser.io, TouchDevelop
  • Scratch, Blockly, TouchDevelop
  • C++, SQL, Linux

  • Logo? Prolog? Lisp?
  • Wordpress
  • Javascript, HTML, CSS, Github

6 of 29

Who is going to teach this stuff anyways

7 of 29

Some issues are an...issue

8 of 29

Other issues are not (big ones)

9 of 29

You (Probably) Assume Too much

10 of 29

How can teaching programming be better?

11 of 29

Decide on a Goal

  • Enable play
  • Motivate play
  • Guide to the pit of success

12 of 29

Scout a path that makes sense

13 of 29

Scout a path that makes sense

typing skills

variables

if and while

functions

markup

CSS basics

objects

arrays

map and filter

more functions

libraries

apis

practice practice practice

14 of 29

Don’t lecture like an asshole

15 of 29

Consider your modes of learning

  • I do
  • You do
  • We do
  • Lecture
  • How experts do it
  • Drills and Exercises
  • Write Code & Create

16 of 29

Structure Projects carefully

17 of 29

Have a Style Guide

  • DO put "use strict" at the top of every script.
  • DO place all scripts in a (function() { ... }).call().
  • DO use double quotes as a string delimiter.
  • DO Assign functions to variables myFunc = function() { ... }.
  • AVOID multiple statements on the same line.
  • AVOID using this wherever possible. this is confusing to teach and can usually be avoided.
  • AVOID using plural and singular variable names in the same context. Rather than players.filter(function(player) {, consider allPlayers and player.
  • ...

-- Operation Spark Style Guide

18 of 29

Question Common Teaching

19 of 29

Consistency - h tags

20 of 29

Consistency - h tags

21 of 29

Minimal Learnability - Selectors

22 of 29

Minimal Learnability - Selectors

23 of 29

Minimal Learnability - OOJS

  • These aren’t necessary concepts for a beginner
  • They’re not
  • They’re not
  • Really
  • You just don’t know Javascript well enough

24 of 29

Some things aren’t actually hard

Just nobody but you teaches it well

25 of 29

How can you teach?

26 of 29

Teach Yourself

27 of 29

Teach your child

28 of 29

Teach Students

29 of 29

I assume you want resources

George Mauer | http://togakangaroo.github.io

@togakangaroo | gmauer@gmail.com

http://tinyurl.com/sql2015-teaching