Here is the where my confusion starts.... When they are speaking of curves, they are using the terms "gradient" and "slope" for slope.
But when it comes to surfaces, it was stated that the gradient will give the normal vector to a surface...
In the first case it was related to something about the slope of the tangent, and in the second case it was related to something about normal vector. I am getting confused.
Is it possible for some one to clear on this topic..
How you interpret the gradient depends on how you represent the surface.
For example, for a surface written in the form $z=f(x,y)$, the gradient is more like the slope interpretation. More specifically, if you take the dot product of the gradient at a point $(x,y)$ and a small displacement vector $\Delta r $ then you will approximately get the change in $z$ when you move in that direction. Note that when interpreting the gradient this way, all of the vectors are in $\mathbb{R}^2$ and the gradient itself is normal to the level curves of $f(x,y)$.
For a surface written in the form $f(x,y,z)=0$ you get a 3 dimensional gradient which is normal to the surface. It really is the same thing scaled up a dimension, since $f(x,y,z)=0$ is a level surface of the function $f(x,y,z)$.