https://ocw.mit.edu/courses/find-by-topic/#cat=engineering&s...
Introduction to Computer Science followed by Data Structures and Algorithms should give you a healthy start.
--
Learning these fundamentals is useful, but not necessarily immediately practical. Building and doing is the best way to learn. This is a good start, and the fundamentals will certainly give you an edge against most people graduating from a bootcamp, but after this I'd recommend finding a good tutorial, whatever the language that teaches you step by step how to build XYZ... I learned ruby/rails by doing Michael Hartl's tutorial building a microblogging platform like twitter.