Title
#thinking-together
p

Paul Butler

04/27/2020, 11:50 PM
I've been thinking lately about a genre (for lack of a better word) of coding pedagogy that involves presenting the learner with a series of tasks of escalating difficulty with very little new content to read/study in between. Some examples I consider to fall under this are: • Project Euler (number theory / recreational math) • rosland.info (bioinformatics) • exercism.io (language-specific tracks) Are there examples of this style of learning in other programming domains? (e.g. 3d graphics, core CS, etc.) Other thoughts on this style of learning?
shalabh

shalabh

04/28/2020, 12:35 AM
Have you looked at executeprogram.com from Gary Bernhardt? It's not quite a series of tasks, but the increments are pretty small. Does it fit this category?
p

Paul Butler

04/28/2020, 12:50 AM
I had not -- but it does look like a good example!
s

S.M Mukarram Nainar

04/28/2020, 1:03 AM
This is not really programming, but there is a book called Probability through Problems by capinski that follows this approach—it's more or less self contained and the bulk of the theory is worked out in the problems
i

Ivan Reese

04/28/2020, 1:35 AM
Video game tutorials (the good ones, at least) often do this. For example, the game SpaceChem, which sort of doubles as a programming environment, teaches the game mechanics (which are, basically, the concepts of its programming system) in a very gradual, incremental way.
c

Charlie Roberts

04/28/2020, 3:16 AM
Flexbox Froggy is fantastic in this regard… one new CSS concept per level. I always assign playing it when teaching webdev classes. https://flexboxfroggy.com/
3:20 AM
I have a student working on a similar style project for a p5 library she wrote for generating geometric patterns with polar coordinates: https://liz-peng.github.io/p5.Polar/
3:22 AM
actually, she’s currently collecting (very basic) feedback if anyone is willing to participate: https://forms.gle/YECi8w8xDk4xaSEK9
Edward de Jong / Beads Project

Edward de Jong / Beads Project

04/28/2020, 6:22 AM
The gentle ramp is often called the Nintendo Ramp or the "Miyamoto Ramp", which is one of the great secrets of the Nintendo programming philosophy. Nintendo as you all know is the most consistently high quality, successful game company on the planet, and inside those games each level is carefully graduated as to have no serious bumps, so that one progressively gets harder tasks but the slope of the increase is almost imperceptible. A highly effective method. In the area of paper books, the mathematics series called "Keys to Algebra" from Key Curriculum Press Berkeley (owned by Springer) is a fantastic series. There are other subjects covered in Math as well from that series.
Mariano Guerra

Mariano Guerra

04/28/2020, 7:43 AM
the book "the little schemer" comes to mind
r

Robin

04/28/2020, 8:07 AM
Another possible example, although I haven't looked much into it, the "natural number game" for learning the Lean proof assistant: https://wwwf.imperial.ac.uk/~buzzard/xena/natural_number_game/
jarm

jarm

04/28/2020, 9:59 AM
Barbara Ericson's work on dynamic and adaptive parson's problems is relevant here https://scholar.google.com/citations?hl=en&user=U09MSV8AAAAJ&view_op=list_works&sortby=pubdate
yoshiki

yoshiki

04/28/2020, 10:18 AM
Haven’t done it since I lack the prerequisite math background, but I believe https://quantum.country/ does this. Worth reading this companion piece too: https://numinous.productions/ttft/
10:20 AM
To echo @Ivan Reese, the video game Braid does this really well too.
Rob Cobb

Rob Cobb

04/28/2020, 1:55 PM
I collected some of these here https://csed.substack.com/p/the-best-online-interactive-learning, including executeprogram and flexbox froggy (❤️ ) Others worth a look: • Cant Unsee - Game for building design intuition by choosing the better of two side-by-side designs. • CSS Diner - Learn CSS Selectors interactively, by using them to select food from plates. • Method of Action - Five different interactive design games. My favorites are Type Method, and Boolean Method, but maybe the Bezier game is more important if you’re actually a designer. I am not a designer, so I can’t tell! • Vim Adventures - Build muscle memory and intuition for how to get around in the Vim text editor by moving a character around in a game. • SQLBolt - Learn a significant portion of what might be the most important coding language in a few hours. • RegexOne - From the same creator as SQLBolt, a terrific guided explanation of Regular Expressions, with lots of opportunities for practice. • Git Immersion - Guided tutorial through the fundamentals of Git, on your own machine.
Jared Windover

Jared Windover

04/28/2020, 2:13 PM
The video game Baba Is You does this well also.
Don Abrams

Don Abrams

04/28/2020, 8:01 PM
This is a favorite of mine: http://clojurescriptkoans.com/
8:03 PM
The quintessential is logo though, with a bunch of research behind it
p

Paul Butler

04/30/2020, 12:43 AM
Thanks all for these examples -- some really cool work in this area that I wasn't aware of!
12:49 AM
@Rob Cobb this is a really useful post, do you mind if I share a link to it? (I'm not sure what the etiquette is with substack deep links because I understand it to be unindexed content 🙂)
Rob Cobb

Rob Cobb

04/30/2020, 2:05 PM
Please do share it! My substack is free - it's just a nice way to manage an email list, and add payment in later if and when it feels right.
m

Mark Dewing

05/01/2020, 3:31 AM
I'm curious if there's a standard approach to making programming tutorials and some tools to help make them? It would help to have a guide so each project doesn't have to build it from scratch. For a format for presenting code in a gradually-building style, I have a small project to explore this. https://github.com/markdewing/programming_tutorial_maker