Overall, it's a pretty good system. The middle Java class was completely worthless and a big waste of time though; in hindsight, I should have skipped it. Also, while we learned a bunch of cool things in the SICP class, every single other class except for programming languages/compilers completely ignored it. Most retaught some of the same concepts, but poorly.
Also, apart from SICP, there aren't any undergraduate classes doing functional programming! What's up with that?
At least at my university, there's plenty of C and C++--even in places where it blatantly doesn't fit, like the other version of the compilers class. And far, far too much Python. And too little functional programming. Ah well, c'est la vie.
I would love a compilers course taught in ML (maybe OCaml?), and it's a possibility, but not before I graduate :(.