@Password, “programmazione” NON E' un'unico concetto, ma e' un “cappello” su N-mila concetti distinti
C'e' la programmazione procedurale/ad oggetti/funzionale/logica/parallela/distribuita/a regole/…
Come “programmatore professionsta” ti capitera' di usarle TUTTE (vabbe, forse quella logica non tanto ;-) )
C'e' la TEORIA della programmazione, come si progetta un linguaggio di programmazione, e teorie correlate come automi a stati finiti (che BISOGNA SAPERE), grammatiche di Chomsky (che BISOGNA sapere), come si progetta un compilatore (che e' utile sapere) o un interprete, i concetti alla base dell'inferenza dei tipi (Algebra), come si gestisce la memoria (FONDAMENTALE)
Ti hanno fatto l'esempio degli algoritmi di ordinamento, ma esistono MIGLIAIA/DECINE o forse anche CENTINAIA di migliaia di algoritmi diversi, specifici per risolvere tipologie diverse di problemi.
Poi ci sono i “framework” che si utilizzano nei diversi ambiti di sviluppo in Java, PHP, Python, C#, Computer Grafica, Video Giochi, Machine Learning, …
Poi ci sono gli argomenti che non sono specifici di programmazione ma SERVONO alla programmazione: teoria relazionale dei dati, come funziona un DBMS, come si progetta un'Interfaccia Utente, …
Insomma, devi essere PIU' SPECIFICO affinche ti si possa dare delle indicazioni piu' “precise”