@nostyn Per quanto riguarda la conoscenza delle strutture dati e degli algoritmi, che è fondamentale, potresti iniziare con questo libro, in italiano:
Algoritmi e strutture di dati: Amazon.it: Alan A. Bertossi, Alberto Montresor: Libri
www.amazon.it
Su YouTube trovi anche le lezioni dell'intero corso di Algoritmi e Strutture Dati del prof. Montresor
http://cricca.disi.unitn.it/montresor/teaching/asd/materiale/video/
Lo step successivo potrebbe essere lo studio del paradigma Object Oriented, che è uno dei principali, se non il più influente, oggi, e quindi di un linguaggio come Java, C# o anche C++ (ma in realtà qualunque linguaggio moderno lo supporta), che è la naturale evoluzione del C, più complesso dei primi due da padroneggiare. Lo studio del paradigma OO parte dai concetti basilari di astrazione dati, oggetto e classe, uniti alla nozione di ereditarietà e polimorfismo, e prosegue (astraendo ancora) arrivando a dei principi di modellazione come quelli
SOLID, e ai design pattern, che sono dei modelli, degli schemi ricorrenti, codificati per la prima volta in
questo famoso libro, prendendo spunto dal mondo dell'architettura, che si possono usare per risolvere determinati problemi. È un argomento molto affascinante se ti piace la programmazione.
Per l'OO puoi cominciare a dare un'occhiata su
wikipedia.
Questo è un articolo accademico (in inglese) ancora oggi fonte di lezioni univarsitarie. Per cose più pratiche ti consiglio siti come
https://www.geeksforgeeks.org/, dove trovi tanti esempi utili, o il nostrano
https://www.html.it/, a volte semplicistico, ma in italiano e utile per una rapida panoramica sui vari argomenti.