This is dangerous, generally. I don't think you have a problem in this function as it stands, but using mutable values as default arguments in python often leads to memory leaks. Better practice, generally, is to use `None`, and then at the top of the function, say

    if course_list is None:
        course_list = []