code: def login(session, username, password, class_name=None):
      
  
      logging.debug('Initiating login.')
      try:
          session.cookies.clear('.coursera.org')
          logging.debug('Cleared .coursera.org cookies.')
      except KeyError:
          logging.debug('There were no .coursera.org cookies to be cleared.')
  
      # Hit class url
      if class_name is not None:
          class_url = CLASS_URL.format(class_name=class_name)
          r = requests.get(class_url, allow_redirects=False)
          try:
              r.raise_for_status()
          except requests.exceptions.HTTPError as e:
              logging.error(e)
              raise ClassNotFound(class_name)
  
      headers = prepare_auth_headers(session, include_cauth=False)
  
      data = {
          'email': username,
          'password': password,
          'webrequest': 'true'
      }
  
      # Auth API V3
      r = session.post(AUTH_URL_V3, data=data,
                       headers=headers, allow_redirects=False)
      try:
          r.raise_for_status()
  
          # Some how the order of cookies parameters are important
          # for coursera!!!
          v = session.cookies.pop('CAUTH')
          session.cookies.set('CAUTH', v)
      except requests.exceptions.HTTPError as e:
          raise AuthenticationFailed('Cannot login on coursera.org: %s' % e)
  
      logging.info('Logged in on coursera.org.')
docs: Login on coursera.org with the given credentials.
  
      This adds the following cookies to the session:
          sessionid, maestro_login, maestro_login_flag