Szabolcs is a bona fide Mathematica expert and I am reluctant to post after him.
Nevertheless, here is a way that may help you understand how you might want to use Dynamic to achieve the display-both.
Dynamic[{data, listPlot}]
Module[{t = 1}, x0 = Table[i, {i, 1, 100}];
y0 = Table[Sin[(20 + i)/20 t], {i, 0, 3}];
data = N[Table[{x0[[i]], y0[[i]]}, {i, 1, 3}]];
listPlot = ListPlot[data];
]
But, because x0,y0 aren't needed after the Module, they should probably be local to the Module. Try this and look at what happened to the Dynamic output above.
functionThatUsesModule[t_, length_] :=
Module[{x0, y0},
x0 = Table[i, {i, 1, length}];
y0 = Table[Sin[(20 + i)/20 t], {i, 0, length}];
data = N[Table[{x0[[i]], y0[[i]]}, {i, 1, length}]];
listPlot = ListPlot[data];
]
functionThatUsesModule[3, 5]
calling the function again:
functionThatUsesModule[6,12]