common case. Normally, most songs in most courses are static. Previously, in those cases, the filtered song list would never be generated; now it's generated for every course. Optimize the filtering (erase() on a vector is slow).