Harvard CS50X teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web programming. Languages include C, Python, and SQL plus HTML, CSS, and JavaScript.
If you are totally new to Computer Science, it’s a very good start. Lectures are interesting and clear, problem sets are challenging but definitely not frustrating.
If you’ve already learned some knowledge about Computer Science, this course provides a very good skeleton to help you find your weakness and establish your own skill set. You’d better take other high-level courses as supplements to acquire deeper knowledge.
The solutions to problem sets and labs are provided here. The detailed notes are as follows(you can also find them in this repository):
- Lecture 1: an introduction to C
- Lecture 2: Array
- Lecture 3: Algorithms
- Lecture 4: Memory
- Lecture 5: Data Structures
- Lecture 6: Python
- Lecture 7: SQL
- Lecture 8: HTML, CSS, Javascript
- Lecture 9: Flask
- Lecture 10: Emoji
Recommended supplementary materials:
- Coursera specialization by Duke University: Introductory C Programming
- UCB CS61A: Structure and Interpretation of Computer Programs
- UCB CS61C: Great Ideas in Computer Architecture
- CMU CS15213: CSAPP
Other good courses:
- MIT 6.S081: Operating System Engineering
- UCB CS169: software engineering