Just like Dave I think the templating system's multirow datasource is very good when it comes to representing the data we want to process, render, etc. We then have several useful templating tags at our disposal, such as; <multiple>, <group> and <grid>. Beside the standard <multiple>, <group> lets us ,umm, group "bars", thus making it possible to distinguish the courses. The <grid> tag might be useful if we want to tell the bar that under no circumstances should it become more than N columns whide for instance. This could be a package instance parameter or, in the future, a personal setting (user preference). Even if we limit the number of columns in a (horizontal) bar there could still be problems with sideways scrolling if the element links are long, though ...
As Michael says, there could be a host of bar templates to choose from - horizontal as well as vertical - that could be <include>d. Either that or an automatically assigned @curriculum_bar@ variable in the subsite's default master that is either set to *the bar* or the empty string depending on whether the curriculum package is installed or not (as in the case with the "developer support" stuff). The site implementor should be able to place the bar wherever (s)he likes, like Don also said.
Malte, when you say popups I presume you are talking about the "target" attribute of the "a" html tag, opening a new window, right? This sounds like a pretty good alternative to using frames, IMHO, especially taking into account the profound dislike of frames I know this community (including myself) has expressed time and time again ...
Dave, I will look at the templating wizard. If you know of some example code, feel free to point me to it.
Thanks for the excellent feedback, guys, and keep it coming!