def METHOD_NAME(self):
    """
    the derivative is a polynomial as well
    """
    # 2 things are happening here
    # (*) we use the count() iterator; this never terminates
    #   except that it is embedded in a zip() that will
    #   terminate when iterating over our own coefficients expires
    # (*) here again observe the use of a splat operator
    derived_coefs = (n * c for (n, c) in zip(
                     count(1),
                     self.coefs[1:]
                    ))
    return Polynomial(*derived_coefs)