code: def get_task(self, course, taskid):
          
          if not id_checker(taskid):
              raise InvalidNameException("Task with invalid name: " + taskid)
          if self._cache_update_needed(course, taskid):
              self._update_cache(course, taskid)
  
          return self._cache[(course.get_id(), taskid)][0]
docs: :param course: a Course object
          :param taskid: the task id of the task
          :raise InvalidNameException, TaskNotFoundException, TaskUnreadableException
          :return: an object representing the task, of the type given in the constructor