def provideObjectsToLearn(self, objectNames=None):
    """
    Returns the objects in a canonical format to be sent to an experiment.

    The returned format is a a dictionary where the keys are object names, and
    values are lists of sensations, each sensation being a mapping from
    cortical column index to a pair of SDR's (one location and one feature).

    returnDict = {
      "objectId1": [
        {
          0: (set([1, 5, 10]), set([6, 12, 52]),  # location, feature for CC0
          1: (set([6, 2, 15]), set([64, 1, 5]),  # location, feature for CC1
        },
        {
          0: (set([5, 46, 50]), set([8, 10, 11]),  # location, feature for CC0
          1: (set([1, 6, 45]), set([12, 17, 23]),  # location, feature for CC1
        },
      ],
      "objectId2": [
        :
      ]
      :
    }


    Parameters:
    ----------------------------
    @param   objectNames (list)
             List of object names to provide to the experiment

    """
    if objectNames is None:
      objectNames = self.objects.keys()

    objects = {}
    for name in objectNames:
      objects[name] = [self._getSDRPairs([pair] * self.numColumns) \
                       for pair in self.objects[name]]

    self._checkObjectsToLearn(objects)
    return objects