If I'm understanding your question correctly you want not display fields that lack data when printing. To do that you'll want to, in layout mode, select the fields that you want to "hide." Select "Sliding and Visibility" in the Position Inspector. Click the "Sliding up based on:" check box and the "All objects above" radio button. Depending on how your layout is set up, you may want to slide left, or you may want to select the "Only objects directly above" radio button.
You can test out your changes by entering Preview mode. Note that this trick works only for printing and in Preview mode.
I hope that helps.
An entirely different approach would be to restructure the data, making Subjects Taken a related table to the Students records.
You could create Subjects Taken records via a portal on the Student record, and do your reporting out of the Subjects Taken table, so you would only have reportable records to print of subjects actually taken.
Another possible solution is to use the sub summary style report that will show only the courses actually taken..