I actually love compiler writing and hav written a few, hehe. (and also hav like 50 unfinished ones)
My latest project was writing a compiler as an alternative to m4, but honestly m4 fails both your "well described" and "not completely terrible" checks, hehe.
I've written a compiler in julia that also compiled to julia and it was among my most pleasant and educational compiler writing experiences, but I got annoyed by the startup times of the interpreter and since moved on to writing compilers in rust into either C or LLVM (or just interpreters). My julia compiler was also for a language based on OZ, which is a language made for studying programming languages, so maybe you could take a look at that too.
My most ridiculous compiler I've written I think was a fully Bash based compiler for a python-like shell compiler language that compiles to both Bash and Posix Shell, meowf, which u can find here: https://github.com/coderofsalvation/powscript (it needs huge updates and I want to make it written in itself but I need to finish a program I am working on first, nyeh)
I even had like two little youtube videos of me starting to write a Rust compiler for a NES language, but I got incredibly sidetracked and stopped early, hehe, but I might pick it up again. Writing for a limited cpu with a simple assembly language might be a interesting learning experience too, meowf.
As for courses, I don't know since I am more of a "get ur paws into it" kinda cat, meowf.. buf, if u hav any questions feel free to hit me up! my discorf is in my bio, nyeh