Supervised Learning in Spiking Neural Networks