No no no, please do not buy a shock collar! Poor baby! He'll never trust you if you do that!
You've done the best thing you can by enrolling him in a class. He'll be a star student in no time.
Are you consistently rewarding him when he does come? It is very important that you do not call him in anger. Say his name once, say "come", and hold out a treat or toy. When he comes, praise him and give him a treat. Do this several times over a few days and he'll learn that it's a good thing to come when called. Do not plead with him to come, just say it firmly, and don't repeat yourself too many times. Also never call a dog to you and then punish them. They'll only learn to fear you.
Hope this helps...good luck with his schooling!