So it looks like the answer is.... It Depends!
In CiviEvent Component Settings you can set the site to use an event cart functionality, so instead of a register button events have an add to cart option.
It looks like this applies as a blanket to all events on the site so I don't know if that's the right way forward here.
Or I could build webforms for courses, the event booking tools on webforms allow you to be incredibly fine grained and pull in event id's into the url's. So if i have 6 events as part of 1 course I can configure a webform per course.
I think this can get complicated quite quickly. Wil need to estabilish paramteres with client before attempting a test form.
Will the user be allowed to book other participants onto the same events?
If so, how many additional participants are you expecting the user to book on. (Looks like the webform maxes out at 9 participants per form)
Also looks like form settings expect contact 1 to be the payee and the main partcipant throughout. So payee has to be a participant.
And then will need to configure the payment screen.
Con's here it looks like the initial set up will take aaaaaaages. But once done we can clone for future courses, or use one central form and find a way of rewriting the url link to include specific event id's.