Vous apprendrez le mieux sur un cours universitaire, ou au moins un bon cours. Vous n'avez pas à passer 2 ans à faire cela - si vous pouvez vous permettre 400 £ - 500 $, je recommanderais this one.
Il vous enseigne l'état, et les 4 autres concepts que vous pouvez lire de manière mal exprimée sur wikipedia. Je ne suis pas convaincu que vous l'apprendrez correctement à partir de ressources gratuites en ligne, je suppose que vous obtiendrez des informations incomplètes.
Vous pouvez être extrêmement intelligent, mais les informations là-bas ne va pas être que haut calibre pour une raison - les esprits les plus brillants dans le logiciel paie pour leurs cours universitaires, des conférences, des devoirs et des examens, pas lu juste sur Internet.
Pour l'analyse, essayez le cours M256, qui porte sur le développement logiciel orienté objet, UML et la conception du système. Cela semble ennuyeux mais contient beaucoup d'informations de fond que vous n'utiliserez probablement jamais mais que vous voudrez savoir de toute façon.