optimization lecture notes