The problem is that you used OR, specifically the human verbal colloquial understanding, not the logical definition. What you actually meant was AND.
Here's a table demonstrating what happens to A and ...
You need a loop for this to handle the condition:
/** list for course and childless department pages */
$course_and_childless_department_pages = array();
/** get department pages */
Try to use the following:
$paged = (get_query_var('page')) ? get_query_var('page') : 1;
Instead of using:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
I had the same issue and it ...