Here's an algorithm I found that performs Singular Value Decomposition. I preferred this algorithm because it can be parallelized, and I don't have to calculate the huge $AA^T$ matrix when the number of rows are very large:
Let A be the matrix for which SVD has to be performed.
$A = U{\Sigma}V^T$
1) First perform $QR$ decomposition of $A$.
$A=QR$
We calculate this by performing the 2nd and the 3rd step.
2) To calculate the $R$ matrix, calculate $A^TA$ and find the Cholesky decomposition of $A^TA$.
$R = Cholesky(A^TA)$
3) Calculate the $Q$ matrix:
$Q = AR^{-1}$
4) Also, perform SVD on the $R$ matrix (a small matrix when compared to A).
$U_R{\Sigma}V^T = R$
The $\Sigma$ and $V$ matrix for $R$ will be the same as for the SVD for $A$. Now calculate the $U$ matrix:
$U = QU_R$
Now, I know the concept of SVD through eigenvectors and eigenvalues of $AA^T$ and $A^TA$, but what is going on here? Is there an intuitive explanation?