UC Berkeley has a three course sequence for anyone wanting to be a CS major. The course are:<p>1. CS61A: The Structure and Interpretation of Computer Programs (https://inst.eecs.berkeley.edu/~cs61a/archives.html)<p>2. CS61B: Data Structures (https://inst.eecs.berkeley.edu/~cs61b/archives.html)<p>3. CS61C: Machine Structures (https://inst.eecs.berkeley.edu/~cs61c/archives.html)<p>You can view the lectures and do the assignments on your own at your own pace. These 3 courses will give you a solid understanding of programming based on which you can learn more subjects on your own.