Discrete-time algorithms