All you need to do is separate the edge loops on the side you want smooth. Think of it as the opposite of proximity loops, where proximity loops make edges sharper, spreading out the edge loops will make it softer.

Simply select the vertices on the side you want smother, and press <kbd>G</kbd><kbd>G</kbd> to edge slide them in to place.  
If you get any shading artifacts, switch to side view and make sure all the edges and vertices are aligned. Scale to 0 on (an example) the Z axis to re-aline. For example, if you lowered one of the vertices, that will create a dip in the subdivided mesh and break the smooth look.

The vertices I moved are selected in this image.  
![mesh in edit mode with vertices selected][1]

Edited mesh in object mode  
![edited mesh in object mode][2]  
![edited mesh in object mode][3]




  [1]: https://i.sstatic.net/vCBe3.png
  [2]: https://i.sstatic.net/xAQbt.png
  [3]: https://i.sstatic.net/p2liom.png