If you unpublish a module, it should implicitly hide all of the readings, experiences, and assessents associated with that module.
Unfortunately, the Ruby code for generating the schedule-info.js file does not understand this. As a result, experiences with start dates still end up in the calendar, even if they are associated with an unpublished module.