'Creates and returns the course.
Args:
org (str): the organization that owns the course
course (str): the name of the course
run (str): the name of the run
user_id: id of the user creating the course
fields (dict): Fields to set on the course at initialization
kwargs: Any optional arguments understood by a subset of modulestores to customize instantiation
Returns: a CourseDescriptor'

@strip_key
def create_course(self, org, course, run, user_id, **kwargs):

    course_key = self.make_course_key(org, course, run)
    if ((course_key in self.mappings) and self.mappings[course_key].has_course(course_key)):
        raise DuplicateCourseError(course_key, course_key)
    store = self._verify_modulestore_support(None, 'create_course')
    course = store.create_course(org, course, run, user_id, **kwargs)
    self.mappings[course_key] = store
    return course
