You should have a look at the average course structure of a BS program. Normally it contains the following elements:
- Math. hopefully graph theory, lin. algebra, not so important for most things, but still often found in curricula analysis
- CS theory: first-order logic/predicate logic, Turing machines, grammars (the Chomsky stuff) LR, LL, LRAR, regular languages, mu-recursion, the language Z or objective-Z (however this item is optional)
- Different programming paradigms. Best learned with special languages: functional -> Scheme/Lisp/Haskell; OOP, but you already know that.
- OOP programming and design pattern
- Software engineering: UML a bit, use case forms etc., different types of project management: agile, RUP and V-model (only basic principles)
- Hardware: basic analog electric components, transistor etc.; FPGA etc. VHDL or something similar; basic CPU designs, 3-address code, gate architecture (pipeline is often too complicated)
- Some other basic field. Robotic, e-learning etc.
- Some extra stuff from a different field (hopefully not a science and not economics)
There are plenty of books on most of these topics. If you would live in Germany you just could enroll at the next University for free and checkout their courses. Or go there without enrolling. In most cases no one would check if you are a student