Hi. I'm tinkering with an idea for creating a dynamic selection system for college courses purely for a personal project. My god-daughter will be attending our local community college in the fall (still undecided in her major) and the complicated array of mandated-courses / elective-courses / section-schedules / and graduation requirements is just plain crazy, especially when trying to select courses in combination with her work schedule availability.

I want to build a simple system that would allow her to input a specific degree choice and her work schedule, have the system then identify all the must/should/optional courses she could take, and create a tree of optional schedules for her.

I am not worried about the interface (I feel I can cobble together something there) but I could use some suggestions (design patterns maybe?) for how to build a dynamic tree that is based on the colleges catalog (with all its course<>degree interdependencies).

Example1: If she takes course A on Fridays at noon then all conflicting courses in the schedule will be greyed-out (become non-selectable) as will any courses that conflict with her work schedule.

Example2: When she decides on a major then all required/related courses will be highlighted, factoring in any courses already taken. Optional courses that support that major will be available and courses that are irrelevant will be greyed-out.

This is much like an employee scheduling system except that there is only one "employee" and there are a lot more factors than just hours and skills.

Any suggestions would be welcome, including any suggestions of any programming languages/frameworks/etc more suited to such a project.

Thanks in advance.