In my Software Engineering course, I have the students do OOA&D projects where some form of software for working with UML diagrams is useful.
In previous years, I've used ArgoUML. It's open source, and quite full-featured. It also does not support undo. Every year I investigate to see if any progress has been made on this issue, and every year it's "in progress". Students find this limitation extremely frustrating, and I don't blame them. Feh.
This year I stumbled across Violet UML, which I had somehow missed in my previous searches for open source UML tools. It does not aim to be a full-blown CASE tool --- e.g., no code generation, reverse engineering, etc. This is actually a virtue in my case: it's very simple to use, so the learning curve for students should be minimal. The UI is intuitive. And it has undo. It's a Java app packaged as an executable jar file, so no installation required. Win win win.