We came up with a solution using asp.net treeview control. The most difficult part of this job is the database design. Here is our design:


The main relationships are:
- One course can be many nodes
- One node can have many options
- One option can have many nodes
In order to populate the hierarchical data structure for the treeview, we need to
- Step1: Start with the top level nodes, then find their options
- Step2: Find nodes under these options
- Step3: Find options of the nodes in step2
- Step4: Keep searching recursively till no nodes are found