I don’t know how exact the curve should be but if the shapt isn’t that important you could use the bend or the in and out options to draw.
The first thing is to set up a TikZ environment and draw the axes. Use \draw to draw a line, ad the tip with -> and the label with a node.
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
% Axes
\draw [->] (-1,0) -- (11,0) node [right] {$x$};
\draw [->] (0,-1) -- (0,6) node [above] {$y$};
% Origin
\node at (0,0) [below left] {$0$};
\end{tikzpicture}
\end{document}

The next thing could be the start, end and extreme points using coordinates
% Points
\coordinate (start) at (1,-0.8);
\coordinate (c1) at (4,3);
\coordinate (c2) at (6,2);
\coordinate (c3) at (8,4);
\coordinate (end) at (10.5,-0.8);
% show the points
\foreach \n in {start,c1,c2,c3,end} \fill [blue] (\n) circle (1pt) node [below] {\n};

Then join the single points with \draw and the to construction, where you can give the in and out angles to reach a point.
% join the coordinates
\draw [thick] (start) to[out=70,in=180] (c1) to[out=0,in=180]
(c2) to[out=0,in=180] (c3) to[out=0,in=150] (end);

Now add the dashed lines and the tangents using a \foreach loop through c1, c2 and c3. The letoperation allows to use components of a coordinate, but need the calc library (add \usetikzlibrary{calc} to the preamble).
% add tangets and dashed lines
\foreach \c in {c1,c2,c3} {
\draw [dashed] let \p1=(\c) in (\c) -- (\x1,0);
\draw ($(\c)-(0.75,0)$) -- ($(\c)+(0.75,0)$);
}

An as the last thing add the labels using nodes again.
\foreach \c in {1,2,3} {
\draw [dashed] let \p1=(c\c) in (c\c) -- (\x1,0) node [below] {$c_\c$};
\draw ($(c\c)-(0.75,0)$) -- ($(c\c)+(0.75,0)$) node [midway,above=4mm] {$f'(c_\c)=0$};
}
To get a and b use the intersections library and name the x axis and the curve with name path. Then use the intersection to add the nodes as shown in the following full example.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,intersections}
\begin{document}
\begin{tikzpicture}
% Axes
\draw [->, name path=x] (-1,0) -- (11,0) node [right] {$x$};
\draw [->] (0,-1) -- (0,6) node [above] {$y$};
% Origin
\node at (0,0) [below left] {$0$};
% Points
\coordinate (start) at (1,-0.8);
\coordinate (c1) at (3,3);
\coordinate (c2) at (5.5,1.5);
\coordinate (c3) at (8,4);
\coordinate (end) at (10.5,-0.8);
% show the points
% \foreach \n in {start,c1,c2,c3,end} \fill [blue] (\n)
% circle (1pt) node [below] {\n};
% join the coordinates
\draw [thick,name path=curve] (start) to[out=70,in=180] (c1) to[out=0,in=180]
(c2) to[out=0,in=180] (c3) to[out=0,in=150] (end);
% add tangets and dashed lines
\foreach \c in {1,2,3} {
\draw [dashed] let \p1=(c\c) in (c\c) -- (\x1,0) node [below] {$c_\c$};
\draw ($(c\c)-(0.75,0)$) -- ($(c\c)+(0.75,0)$) node [midway,above=4mm] {$f'(c_\c)=0$};
}
% add a and b
\path [name intersections={of={x and curve}, by={a,b}}] (a) node [below left] {$a$}
(b) node [above right] {$b$};
\end{tikzpicture}
\end{document}

The shape of the curve may be improved by using the controls construction instead of to, e.g.
\draw [thick,name path=curve] (start)
.. controls +(70:1) and +(180:0.75) .. (c1)
.. controls +(0:0.75) and +(180:1) .. (c2)
.. controls +(0:1) and +(180:1) .. (c3)
.. controls +(0:1) and +(150:1) .. (end);

Have a look at the TikZ manual for mor information ;-) …
It is also possible to use the plot operation as Harish Kumar shows but in this cas you can’t be sure that f'(c_n) = 0 and it needs mor manual calculations etc. to get the right points …
\draw [thick, name path=curve] plot[smooth, tension=.7]
coordinates{(start) (c1) (c2) (c3) (end)};
