1. The boundary conditions are V(T,S)->0 as S->infinity
                               V(T,0)=e^{-r(T-t)}K
                               V(t,S)=max{K-S,0}                               
   See pricePutByExplicitMethod for implementation
2. See pricePutByHeatEquationExplicit for implementation
3. The point here is that you have a top boundary condition that the call
   option must equal 0 along the boundary. To test your code, compare it with
   the Monte Carlo pricing code from earlier in the course.
4. Use the formula Knock In + Knock Out = Call. Test using Monte Carlo again.  
5. See generateSurfacePlot
6. See priceAmericanPutByExplicitMethod