The trapezoidal rule works by splitting the function to be integrated up into a number of equal chunks and for each chunk, the curve is approximated by a straight line; in effect, the curve is approximated by a number of trapezoids. The area under the curve then can be approximated by summing the area of all the trapezoids. See wiki Trapezoidal entry for the theory.
The Adaptive Trapezoidal rule takes advantage of the fact that a curve, or part of a curve, that is fairly straight (a small second derivative) needs far fewer chunks than a rapidly changing part of the curve. This rule chunks up the curve in a variable way only using more chunks where they are absolutely required. The algorithm uses a required tolerance to determine how many chunks a given part of the curve requires.