How to Learn Computer Science

I get asked with relative frequency how a person can go about getting into software engineering as a profession. The answer always depends on a person’s personal ambitions and inclinations, but I tend to guide people toward grappling the fundamentals if software is something they want to do long term. The higher up front investment in effort is well worth the satisfaction and flexibility it provides over the years. Some person more thoughtful and organized than myself put together a website that gives a list of freely available course materials for self-guided study of the most important classical concepts in computer science and engineering.

On the more practical, engineering side rather than the sciency side of computing, a toolchain that you will almost certainly need to know for its ubiquity and brilliant utility is git. You will do yourself a great favor familiarizing yourself with it sooner instead of later: