code: def _cache_update_needed(self, course, taskid):
          
          if not id_checker(taskid):
              raise InvalidNameException("Task with invalid name: " + taskid)
  
          task_fs = self.get_task_fs(course.get_id(), taskid)
  
          if (course.get_id(), taskid) not in self._cache:
              return True
  
          try:
              last_update, __, __ = self._get_last_updates(course, taskid, task_fs, False)
          except:
              raise TaskNotFoundException()
  
          last_modif = self._cache[(course.get_id(), taskid)][1]
          for filename, mftime in last_update.items():
              if filename not in last_modif or last_modif[filename] < mftime:
                  return True
  
          return False
docs: :param course: a Course object
          :param taskid: a (valid) task id
          :raise InvalidNameException, TaskNotFoundException
          :return: True if an update of the cache is needed, False else