That said, with a couple of notable exceptions, the graduate classes are there for PhD students as first and second year background material so they have some starting points for their research. This naturally leads to a format where the semester can effectively be described as a long reading list of papers and lectures to spur discussion on the content of the paper. I was planning on pursuing a PhD when I started into my MS, so this format worked quite well for me at the time. In the years subsequent to that, the grounding from those classes has given me starting points for deep dives into problems I encountered at work[0].
It's interesting that you brought up machine learning. Charles Isbell's Intro ML class was a significant exception to the pattern I described above. In addition to high quality, pre-prepared lectures peppered with entertaining anecdotes, the had high quality projects that worked with pratcial tooling. It was also probably the highlight of my graduate career[1].
[0]: In particular, the material covered in my graduate systems classes has been invaluable for not reinventing the wheel for the thousandth time. The material from the couple compilers classes I took on a whim has been a huge boon when talking about software correctness. I work on the hypervisor underneath GCE. Correctness is near and dear to my heart, but performance is right there with it :)
[1]: For undergrad that dubious honor has to go to Olin Shivers, not only because of his eclectic teaching style, but also because his class completely altered the way I think about problems in computer science. In particular, my mindset shifted to one of models of computation and decomposition of problems into subproblems for which the simplest model could apply. I have an example I'd like to write up, but it's a bit long for a footnote.