hey mastodon, throw all your programming pedagogy links at me. I teach a lot of beginner programmers and I want to get better at it!

@aparrish How experimental are you willing to go?

I have some theoretical justifications for teaching beginners to solve simple problems in a variety of esolangs. 😉

@enkiv2 I am willing to be extremely experimental tbh

@aparrish
My thesis is basically: most of *deep* programming knowledge is getting the flexibility to paradigm shift, & the easiest way to get that is exposure to lots of paradigms. Most of the difficulty in learning real languages is memorizing inessential syntax details.

Esolangs are all paradigm and no syntax, so they can be learned more quickly because they make no consessions to reality.

Solving the same problem in brainfuck, befunge, pure prolog, and forth will level you up.

@aparrish
But, a simpler way to do this would be to choose a couple problems and show very different ways of implementing them. (Say, showing where a loop makes more vs less sense than recursion)
@aparrish @enkiv2 isn't DrRacket designed around this? Switch off specific features of the language and do it again

@LogicalDash @aparrish
I'm not familiar with that at all, & will have to look into it.

It's the logic behind language survey courses and the "seven languages in seven weeks" books. I think those examples compromise too much, choosing marginally useful languages even when utility for real problems is counterproductive.

@aparrish @enkiv2 DrRacket is just "all the LISP" so maybe not what you wanted
@enkiv2 that makes sense. I'd love to see a whole curriculum designed around this and similar ideas (or at least some academic literature to help prove to my department that we should adopt something like it 🤔)

@aparrish Another nice experimental technique: teach them about stacks and associative arrays, then have them try to implement a toy forth-like stack language. Then, ask them to write something in it.

Parsing in a toy forthlike is easy (just split by whitespace), & keeping track of parameters and functions is also easy (two stacks). So, it's within the realm of possibility for beginners to implement.

@aparrish
This is basically the SICP method, except with forth instead of scheme: understand the concept of a program by understanding how an interpreter works, by writing one.
@aparrish
Depending on exactly how beginner your beginners are, it might be out of scope, but I wouldn't overestimate it -- it's important for programmers to learn not to mystify compilers and interpreters early, and toy-forth is a lower bar than most.
@enkiv2 the problem is that I teach in an arts program where the intro to programming curriculum is very interactivity-centric. it's a challenge to work an exercise like this in among, e.g., "make an ellipse follow the mouse!" but a worthy challenge, I think

@aparrish Maybe implementing something more like turtle would be more thematic. There's more complexity in some ways & less in others.

(On the forth side, I'm sure there's a subset of postscript that isn't super ugly. Also if you teach a little postscript people can go home and write code directly into their printer, which is a nice trick.)