Sets the courses.

        arg:    courseIds (osid.id.Id): the course Ids
        raise:  INVALID_ARGUMENT - courseIds is invalid
        raise:  NullArgument - courseIds is null
        raise:  NoAccess - metadata.is_read_only() is true
        compliance: mandatory - This method must be implemented.

def set_courses(self, course_ids=None):
        """Sets the courses.

        arg:    courseIds (osid.id.Id): the course Ids
        raise:  INVALID_ARGUMENT - courseIds is invalid
        raise:  NullArgument - courseIds is null
        raise:  NoAccess - metadata.is_read_only() is true
        compliance: mandatory - This method must be implemented.

        """
        if course_ids is None:
            raise NullArgument()
        metadata = Metadata(**settings.METADATA['course_ids'])
        if metadata.is_read_only():
            raise NoAccess()
        if self._is_valid_input(course_ids, metadata, array=True):
            for course_id in course_ids:
                self._my_map['courseIds'].append(str(course_id))
        else:
            raise InvalidArgument