emphasis on group work,
It's very questionable that this is a positiv change. While it is
important (and difficult) to acquire teamwork skills,
in practise, most groups gravitate towards one might call "Pareto Groups" where 20% of the participants do 80% of the work. Usually the strong programmers in the group do all the programming, thus getting all the learning experience.While I definitely experienced an unfortunate amount of "Pareto Groups" throughout my schooling, none of them were in the CS department at HMC.
It's not academic - but it definitely improves coding ability.
I'll take exception to the first example: group work. I loathed and hated group work in college. It was simply and solely a way for people who couldn't hack the course material to manage a pass anyway. This might, of course, be good experience for life, but it's terrible for education.
Research projects could be really, really good if they demand concrete results; they could be really terrible if they are just a way to reward effort without results.
Splitting classes by experience might be a decent idea, although I've heard folks speak positively of one-room schoolhouses as well.