What are the recommended ways to render caustics? I am aware bidirectional path tracing and photon mapping can do this. Could someone give a brief overview of photon mapping and a good resource of where to learn about implementation?
First of all, you can get caustics just by Path Tracing. Caustics isn't a difficult phenomenon in computer graphics. Almost any global illumination algorithm can render it. It's just a matter of the converging speed.
While (naive) Path Tracing can render caustics, it takes a long time to clean the rendered image due to how the algorithm works. Photon Mapping makes the converging speed faster by doing some tricks on how light paths are interpolated. Bi-Directional Path Tracing on the other hand tries to make some difficult-to-sample light paths easier.
Besides the two algorithms, Metropolis Light Transport can render caustics efficiently by finding the most significant light path in the scene and exploring other possibilities around it.
Here are some good lectures on:
There is the original paper of BDPT. It's not too difficult if you can implement explicit light sampling and multiple importance sampling by your self.
Also, I recommend the book Physically Based Rendering: From Theory to Implementation. It talks about all the algorithms above and more. It is basically a must have if you want to dive deep into computer graphics.