Initialize network weights

do

For each training sample ex

Desired Output = neural-net-output (network, ex)

actual = calculated output(ex)

compute error (difference between desired and actual output) at the output units

compute for all weights from the hidden to the output layer

compute for all weights from the input to the hidden layer

update network weights

until all samples are classified correctly or another stopping criterion is satisfied

return the network