Hi Chris,
Multiple flavors of the same report can lead to maintenance headaches, so trying to create a single report that has the necessary flexibility built in is a good thing.
A cascading prompt makes sense, as Paul mentions, if you are just trying to make it convenient for the users by not having to wade through a longer list of courses than necessary. If there is a more stringent security reason, then how do you identify which users can see what? Figure that out and then apply security so that only the courses a user is permitted to see are returned. Ideally this is in the Framework model if it applies broadly, but it could be done in a report.
Reports views are also an option, but I think when you set the prompt values in the properties for the view you must supply all required prompt values so keep that in mind if you have multiple prompts. E.g., if you have a course type prompt (Eng, Fin, etc.) and also a course prompt (Course1, Course2, etc.) I don't think you can set the view to supply only the course type if both prompts are required.