I'll start by stating that i never learned programming properly, it was all self taught. My degree doesn't really involve programming, the course i studied at uni was Electronic and Electrical Engineering, so programming wasn't that important.
For the past 6 months i've been programming extensively in C, C++ and i've just started learning C# a week ago. I can use the ARM nuclei chip, the PIC16F877A chip too. I can use these chips to connect them up to a number of components such as an LCD screen, switches, LDR, LEDs and thermistor. I can use these components to make them do mostly anything you can think of creating all the source code independently. It might sound impressive to some of you but i'm not happy with this.
I just don't have the basic knowledge that i personally feel that the computer science grads perhaps have. For example, I can tell you that the semicolon at the end of the line in C closes of that line but i don't know how it does that.
If i can make a really bad analogy "I know how to operate a computer but i don't know how the computer works"
So can someone recommend any books, youtube videos or any other source material that can help me out in this predicament i'm in. I'm so confused, that i don't know what i don't know