You could select all bundles where no course exists that does not meet the criteria:
select *
from bundles b
where not exists
(
select *
from courses c
where c.id = b.course
and course_date < getdate() -- Note inverse condition
and ...
)
A good article on this is Divided We Stand: The SQL of Relational Division.