If you want to learn assembly language, computer architecture and C++ all at the same time: Assembly Language and Computer Architecture Using C++ and Java , Course Technology, 2004 [1]
If you want to learn how to write compilers, context free grammars, regular expressions and implement grep: Compiler Construction Using Java, JavaCC, and Yacc, IEEE/Wiley, 2012 [2]
If you want to learn functional programming, lambda calculus and LISP: An Introduction to Functional Programming Through Lambda Calculus by Greg Michaelson [3]
My programming skills had grown dramatically with this books. I would wholeheartedly recommend the books mentioned above for those who are interested to learn.
[0] - http://cs.newpaltz.edu/~dosreist/
[1] - https://www.amazon.com/Assembly-Language-Computer-Architectu...
[2] - https://www.amazon.com/Compiler-Construction-Using-Java-Java...
[3] - https://www.cs.rochester.edu/~brown/173/readings/LCBook.pdf - https://www.amazon.com/Introduction-Functional-Programming-C...
[0] - http://www.amazon.com/Introduction-Functional-Programming-Ca...
https://www.edx.org/course/introduction-functional-programmi...! is a MOOC in Haskell