Where do I start in learning how to demodulate a BPSK31 signal in software? I'm a software developer and a Amateur Radio operator. Everything I know about audio (which isn't saying much) is self taught.

I've learned how to generate audio samples and build wav files, send those samples to hardware output, etc. I even figured out how to generate BPSK31.

Where I'm stuck now is demodulation. I've read around enough to realize that this is a much harder side of the problem than modulation, and I understand intuitively why this is. 

My question is: Where do I even start to learn how to do this? I'm not even sure what the right terms to search for in Google are. So many of the results are hardware solutions or new theoretical approaches to the problem that I've gotten lost in the noise. What should I be looking for to figure this out?
This system uses phase shifts to encode characters (it is a differential encoding scheme). You need to design a system that can detect the phase changes, and that is able to synchronize, that is, find the start of a character. Your receiver must also be able to recover from ocassional errors in the phase change detection. Your question is where to start to learn how to do this; my answer is, read the book linked at the end of this page: http://sethares.engr.wisc.edu/telebreak.html. This book doesn't cover this specific modulation but you can learn everything you need from it.