Have you considered trying to use tags? Tags can be added to a course on it's setting page. Seems like a "program" tag could be added to each course of a "program". When someone clicks a program tag, they would then see a page listing all the courses with that same tag set. Also, many of the activities are getting tag capability in Moodle 3.3. Not sure if it would be practical, but might be worth testing. Also, there is already a tag block so it would be easy to test/try out and see if it would work.