An unfashionable exercise that works better than it has any right to. Give a learner a small old CoffeeScript file and have them rewrite it as modern JavaScript without running the compiler.
Nearly every piece of sugar has a modern counterpart, and that's the point, because the counterparts are close and not identical. @name is this.name. == always meant ===. a ? b looks like a ?? b and very nearly is (except that CoffeeScript's version also accepts a variable that was never declared, compiling to a typeof check, while ?? on an undeclared name throws a ReferenceError, which is precisely the kind of thing a learner only finds by getting it wrong once). Ranges, for own, implicit returns and the soak accessors all have the same flavour of almost.
The learner ends up reading the JavaScript spec for semantics instead of syntax, and I can't think of many beginner exercises that manage that.