CS50's Introduction to 2D Game Development
cs50.harvard.edu