Concordo com o Gabriel sobre o curso de CS50. Ele vai te explicar coisas básicas de uma forma muito massa, e além disso os Desafios propostos ao final de cada aula não são triviais, ou seja, você terá que realmente queimar neuronios para resolve-los, diferentemente de um curso onde geralmente esses "desafios" são fáceis.
Ah, mas o curso utiliza C, Python, JS, eu não gosto dessas linguagens, etc.
O foco não é a linguagem. Você entender o que é uma estrutura de dados, como a memória é manipulada, algoritmos de ordenação e busca, são essenciais para qualquer programador, independente da linguagem.