[0] .kkrieger (https://www.youtube.com/watch?v=2NBG-sKFaB0) is my favorite of this genre of constraints, but it's mainly impressive for being possible at all (and you can read up on some of the developer notes for how much effort was put into satisfying this constraint). It didn't actually advance the design of FPSes or anything, and FPS design ideas could be better learned by making and iterating on an FPS without the tiny size constraint. If students want to impose extra constraints on themselves, like developing for the Playdate and making use of its crank for game control, go for it, but it's a bit different when they're imposed from the outside for no real reason other than "hey, it's some constraints, and constraints breed creativity".
So is teaching them assembly, even though most people no longer directly code in ASM. But a constrained language that's close-to-the-metal gives them an interesting view of how computing really works, etc
So I'd say it's actually much better for a class teaching coding and creativity
If students sign up and pay for a class you teach called "Data Structures & Algorithms", and you just read from Hamming's book every lecture and don't actually attempt to teach any data structures and algorithms, expect to not have a teaching job for long.
It was a two-sentence writing assignment. Before you could describe your project, you had to state the idea in one sentence (the soul) and the concrete form in one sentence (the body). Kids who could prototype a working medical device in two weeks couldn't articulate what they'd built. The constraint forced the thinking the tool couldn't.
Jach's argument—"you could impose the same constraints on Unity"—misses the point. You could. Nobody does. The tool shapes the behavior. An engine that can do anything invites you to do everything. Or, for young people, nothing. A 1-bit screen with a crank asks you one question: what's the game? That's not an arbitrary constraint. That's a design decision about where the student's cognitive effort goes.
The expensive tool teaches the tool. The constrained tool teaches the thinking. They're both necessary but they serve different stages, and most programs only do the first one.