add join model for programs and courses, update annotate