Hey Stephanos, I think what you are looking for is an answer that fits in a box but honestly, thats a lot to ask in this instance... What you sound like you need is a computer science curriculum. Are you looking to do this for fun or as a professional? If you are looking to work professionally in software I really recommend going to college and actually getting the degree. I personally believe it's paramount in this field.
If I had to suggest some things, here is where I would start.
Basic Multi-Base mathematics.. know how to do addition/subtraction/multiply/devision in binary. Learn how to convert numbers between bases
Read about logic circuits, understand them fundamentally from the logic gates up, from simple logic gates (and/or) all the way up at least to flip flops
Read about how processors work, what registers are, how memory works, how devices are communicated with, what it means to be a 32 bit or 64 bit cpu
Learn assembly... but not yet
Learn a low level language like c ... but not yet
Start with a language like c# or java, at first don't think about what object orientation is, it's a little too soon, in this language at this time focus on
Start learning to work with variables, then with various statements, next get into branch statements like if, else, switch.
Cover enums or enumerations and the role they play in readible code, while on readible code, study conventions like commenting well
Start working on iteration, study for loops, while statements and general design patterns when using these
Start learning to write functions, really focus and understand well how paramater passing works and the various ways in which parameters can be passed (in, out or in out).
Study good procedural practice, like single entry, single exit code blocks, revisit how to write clean code using functions to avoid repetition./
Spend some time understanding how to use recursive functions.
Write a lot of projects in this language of choice at this level, then personally next I would probably look at something like the c language.
In c, focus on how ptrs work, how memory allocation works and how to write code that is meticulous when it comes to memory management, this kind of level is hidden from you in a higher language like c# or java. Now when you need to understand garbage collection, you will have a clue what it's talking about.
Now look at data structures and algorithms, learn to write these for yourself, there are many books in this area but they usually focus on various sorting techniques from basic selection sorts to quick sorts. You will also want to learn how to write linked lists, trees and hash tables in their various forms. Do this in c so you understand the pointers and the memory management.
Now maybe a touch of assembly just to tie together a lot of concepts
Maybe start looking at object orientation
Start getting comfortable with working with multiple threads
Study relational databases, normalization and just get really comfortable with creating them, indexing them, querying them etc
Spend some time learning about test driven development, personally I think its a great paradigm
Somewhere way down the road, start learning how some platforms you are interested in programming work. There are many, some for web apps, some for writing desktop applications, mobile applications and probably everything in between.
Anyway, this isn't comprehensive, its a starting point that will lead to many tangents, I left out areas like how to write artificial intelligence or neural networks or anything specific like that but computer science really is a lifetime of learning.