As Ilya recommended, a great choice for programming in general is the legendary Structure and Interpretation of Computer Programs (aka SICP, aka “the wizard book”). Here is an interactive version: https://xuanji.appspot.com/isicp/.
(You can find solutions to the problems here, but of course use sparingly if at all: http://community.schemewiki.org/?sicp-solutions)
As Ilya recommended, a great choice for programming in general is the legendary Structure and Interpretation of Computer Programs (aka SICP, aka “the wizard book”). Here is an interactive version: https://xuanji.appspot.com/isicp/. (You can find solutions to the problems here, but of course use sparingly if at all: http://community.schemewiki.org/?sicp-solutions)
If you benefit from more instruction than a solo journey through SICP, I cannot recommend highly enough MIT’s Introduction to Computer Programming course, which remains one of the best educational experiences I have ever had: https://www.edx.org/course/mitx/mitx-6-00-1x-introduction-computer-5626