On programming Start learning C and continue with C++:
2 good Books that I found are:
Teach yourself C in 21 days http://kldp.org/files/c+in+21+days.pdf
Teach yourself C++ in 21 days http://newdata.box.sk/bx/c/
The good thing about these books are, they have a program analysis, quiz and exercises at the end of each chapter. That will help you improve your skills. Learning C and C++ will make you understand other programming languages much easier, even ASM.
After finishing Teach yourself C in 21 days"(or before classes and objects in Teach yourself C++ in 21 days) you could read about Data Structures and Algorithms(Lists, Queues, Stacks, Heaps, Graphs, Trees, Sorting, Searching, Path Finding, etc).
On Networking you should learn networking from the basics, and after that the OSI model(all 7 layers):
- Introduction to networking(bits, bytes, base conversion, IP, Netmask)
- Fundamental of Computer Networking(LAN, WAN, MAN, VPN, intranet, extranet, bandwith, limits, OSI, P2P, TCP-IP)
- Layers of TCP-IP and OSI(Arhitecture, IP addressing, IP obtaining, transport layer and application layer, etc).
- routing(routing protcols, IP routing, subnetwork mechanism, router configuration, router functionality, IOS Cisco, etc)
-Hardware:Cabling, cable types, cable testing.
Find any book on networking and it will explain what I posted above, and a cisco networking book.
On how the computers work you will need to learn about Electronics:
-Electronic Devices and Analog Electronics
-Computer Architecture(Von newton Architecture, and Harvard architecture)
-Microprocessors(here comes the ASM Language)
It takes 4 years to learn it all in college(didn't post all the material), so don't expect to learn it all at once. You can start with Programming when you have free time you could read about networking, some about electronics, if you want.