Computational Aspects of Protein Folding