Harvard CS50x: Introduction to Computer Science

The course taught me many of the fundamentals of programming and low-level operations of a programming language. There was a big module on C where I learnt low-level concepts like memory management, data structures like hash tables, what arrays and lists are, etc. This is important because I started programming with Python, which abstracts away all these fundamentals, but knowing these is important.