What is Synthetic Data and How do we Generate it?