Let courses have multiple possible sets of listings and titles, one for each semester, scraping each one without overriding the others, similarly to how Princeton Courses keeps information for the same course over multiple semesters.
In the search, display the most recent title and listings set, while in the schedule, display the one for the relevant semester where the course is placed (with a fallback of displaying the most recent semester if the course wasn't yet offered that semester).