Introduction to the intellectual enterprises of computer science and the art of programming. This course teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development. Languages include C, PHP, and JavaScript plus SQL, CSS, and HTML. Problem sets inspired by real-world domains of biology, cryptography, finance, forensics, and gaming. Designed for concentrators and non-concentrators alike, with or without prior programming experience.
http://cdn.cs50.net/2016/spring/lectures/0/w/syllabus/cscie50/cscie50.html
I worked through the first 4 problem sets in order to learn C and computer science fundamentals. I opted out of completing the last few problem sets because the focus was on web development, but I did watch all lectures for the course.