You can use bezier curves.
They are easy to compute (I used them to draw objects via JavaScript without drivers).
with( F=frame, T=0.0, t=+1.0/second, XYZ=000, xyz=movement/second )you usually do:
F00: T, X, Y, Z = 0 0 0 0
F30: T, X, Y, Z = T+t, X+x, Y+y, Z+z
But bezier curves have 2 movements...