ML assignment 1 - gradient descent