Specific Site Building Setup Currently, I have a site set up like so:

Content Types:


Program
Course


Paragraph Type:


Semester


I have a lot of courses which are being taught in specific programs so I want to reference them and list them by semester on the program pages. One of my fields in Program is Courses of which I made it reference a paragraph type of Semester and this allows me to enter an unlimited amount of semesters. 

The semester paragraph type is made up of a title field (of which I'd put in which semester it's in [ex. Semester 1]) and an unlimited content reference field that references the course content type.

I'm not sure if this is the best way to go about doing this but it seemed to work like I needed it to until I realized I needed the option to somehow add the ability to make it list two courses as optional. (Ex. It would need to say something like: 'Choose one of:  Course 1 or Course 2'. And I would need the option of possibly doing this more than once per semester.) 

What would be the best site building method to allow me to do this?

This is basically what I'd like the final output to look like:
Assuming that you really want to groups with "Title" and those with "Choose one of:" to look the same, you can achieve that quite easily with nested paragraphs.

Something like a "Semester" paragraph type with a paragraph field called "Course groups", and a "Course group" paragraph type that has "Title" + Course lists. Then the title for the optional groups would simply be "Choose one of".

If you need different markup/output, you could handle that either with an "Optional/Select one" checkbox that you can check in a template or by defining two separate paragraph types and allowing both on the nested paragraph field, e.g. "Required course group", "Choose-one-of course group" paragraph types.

Or any other similar combination of nested paragraph types, whatever you need exactly.