code: def search(self, params, validate=False):
          
          if self.val_info is None:
              self.val_info = self.search_params()
  
          if validate:
              errors = self.validate(self.val_info, params)
          if not validate or len(errors) == 0:
              return self._iter_response(ENDPOINTS['SEARCH'], params)
          else:
              return {'Errors': errors}
docs: Return a generator of section objects for the given search params.
  
          :param params: Dictionary of course search parameters.
          :param validate: Optional. Set to true to enable request validation.
  
          >>> cis100s = r.search({'course_id': 'cis', 'course_level_at_or_below': '200'})