Integration is hard! Integration is generally much harder than
differentiation. This little demo allows you to enter a function and
then ask for the derivative or integral. You can also
generate random functions of varying complexity.
Differentiation is typically quite easy, taking a fraction of a second.
Integration typically takes much longer, if the process completes at all!
The point? If integration seems hard - that's because it really is!
This demo shows that to be the case from a purely algorithmic perspective.

The formulae on the page are typeset with
MathJax,
some client side parsing is performed by
math.js, and
basic DOM manipulation is performed by
jQuery.
The workhouse on the server side is
sympy
which is used to differentiate, integrate,
and even generate the functions.
Sympy, it should be said, is not a particularly powerful computer algebra system
when compared to a commercial system like Mathematica
or even an open source system like Maxima.
Those systems are typically much faster and can integrate many more functions.
The main advantage of sympy in the context here is that it is very easy to use as a
library. Furthermore, it amply illustrates the main point that integration is much
harder than differentiation.
If you have Mathematica, or even Wolfram CDF Player, you can try
that too.