CS50 Introduction to Computer Science by Professor David J Malan, Harvard University