Hi David,
Using Galaxy to teach undergraduates is a long term interest of mine. Which, unfortunately, does not mean I have yet put a lot of thought into it. However, lack of thought hasn't stopped me yet.
First, this topic was discussed in a breakout at last year's GCC:
That's more of a discussion than a set of best practices.
What do you want them to spend time learning? Do you want them to learn the (sometimes grinding) details of using the command line, and how to install software and their dependencies on a Linux box? Or do you want to focus mainly on the high level stuff like here is how and why BLAST works, and get some practice using it?
I think this question of focus is a central one, and it's one that well-informed people disagree on. Galaxy is a great platform for focussing on the high-level stuff and avoiding the frustration that can come with installing a C compiler, for example. On the other hand, if you really want them to learn the command line, then you might want to start elsewhere.
If you do use Galaxy for teaching, there are a couple of ways you could do it. First, I recommend setting up your own server(s) either locally or on the cloud. (The AWS in Education grant program is built just for this case.) If you wanted to teach them a mixture of high-level and low level, you could start them out as users on a shared server, and then later in the course have them setup their own Galaxy on a cloud instance.
Also, for Galaxy training we find that published histories, workflows, and Galaxy Pages, are a superb way to create exercises.
Hope this helps,
Dave C.