1. You are on the right sort of track ...
But instead of using asp - what you want to do is use asp.net to create a module that does what you need.
Pretty much all of DNN is actually driven by info in a database.
Have a look at the DNN 4.x module developers guide for a starters guide.
http://www.dotnetnuke.com/About/Documentation/ProjectDocuments/tabid/478/Default.aspx
2. Get hold of a good book on ASP.NET - there are some key conceptual differences between ASP and ASP.NET that you need to understand - and understanding those will greatly help in seeing how the DNN system works.
The entire workflow you discuss can actually be conducted inside a single module - and effectively a single page of HTML markup and associated code.
Quickest would be a module that reads the contents of the query string and display different info from database depending on settings such that:
www.mysite.com/default.aspx?tabid=23 takes you to your Course site.
Your custom module on the page associated with tabid 23 - retieves the list of categories and any other info from database - and displays it to the user.
ALSO if you are logged in as and administrator - the same module could switch on editing so that you can add new categories / courses or update and even delete. - all in the same page
When the course list is displayed - you would then have the module create links to each cateory something like.
www.mysite.com/default.aspx?tabid=23&cat=22
Again this is the same module - it just does some slighly differnt things depending on the query string.
When a category is set - the module displays a list of the Courses within the category. - and again if you are logged in as an admin - you could have the module allow database updating - though sometimes this is better done thru some other simple standalone dataentry modules.
once again the module adds a link for each Course
www.mysite.com/default.aspx?tabid=23&cat=22&course=15
And this time - THE SAME module would now display the DETAILS of the subject - AND AGAIN possibly allow editing of the content by an ADMIN.
AND now - when i say 1 module - i mean one .ascx html like markup and layout page and one .ascx.vb source code page.
THIS IS really part of the true developer powers of asp.net
In ASP or PHP or most other scripting environments - you would have wound up with 10 to 15 seperate script pages made up of some ugly hard hacked layout code and little or no site integration.
3. yes you can link to hidden page - you simply make the page as hidden in its page settings - you can then access directly using its tabid
4. IFrames and co are all doable - and yes it is possible for modules to communicate with each other - this is trigger events to occur.
Though you may find that IFRAMES are not what you really need here.
Westa