Most upvoted comment
Most popular programming book on Reddit. rank no. 4
I am a kid, and want to expand my knowledge on CS(r/learnprogramming)
Here’s a very comprehensive list of what an in-depth CS curriculum will cover: matt.might.net/articles/what-cs-majors-should-know…
A lot of the material is probably going to be challenging for you to tackle right now, but it should give you a decent roadmap of what sorts of things you might want to work towards over the course of the next 5 to 6 years.
In particular, for you, I would suggest you first start by just writing a lot of programs. If you’re interested in games, for example, try going out and making a bunch of games. Start with basic 2d ones (pong? space invaders?) and work your way up. If you’re interested in mobile development, try making a mobile app, etc. The FAQ links to some project ideas if you need some inspiration.
Programming is the sort of thing that you need to be constantly practicing in order to get better, and working on progressively more challenging projects is the best way to become fluent with coding in general. In particular, learning computer science will be much easier if you’re a fluent coder/don’t need as much help with the actual mechanics of programming something new and solving problems.
Along the way, I would recommend studying data structures and algorithms, which is the stepping stone and foundation of computer science.
Here are some resources (some free, some not) on data structures and algorithms. I can’t say I’ve vetted them all very thoroughly, and some of them assume a decent amount of mathematical maturity and so might be a challenging read at present time. I’ve ordered them very roughly in terms of accessibility (except for the Big-O cheatsheet, which is more of a standalone supplemental resource).
Just googling things is also pretty effective. If there’s a specific CS topic you’d like to learn more about, googling that topic can often yield useful results. Like seriously, that’s how I got started with programming and computer science. I didn’t really take classes or read books so much as just work on a bunch of programs/spend a lot of time googling and reading when I encountered a new concept, and I learned a tremendous amount this way.
I would also encourage you to pay attention to your math, science, and English classes in school. Math and science are both very useful tools when you’re trying to solve interesting problems, and computer science, to a certain degree, is an applied math degree.
Take machine learning, for example — it’s a field of study which involves teaching a computer to teach itself, and is used to power things like Google’s search engine, self-driving cars, AIs, and so forth. If you’re interested in working in this field, you’d need a solid understanding of statistics, which in turn requires a solid understanding of math…
(I do want to also mention that the kind of math you do in computer science is unlikely to be directly related to the kind of math you’re going to do now through high school — in computer science, you learn things like writing proofs, logic, number theory, statistics, and so forth. Before college, most schools will focus on things like algebra, trig, geometry, and calculus. Those things are all very useful, don’t get me wrong, but they do feel “different”.)
English is also useful in general — being able to communicate effectively and persuade others is a very useful skill. Somewhat more pragmatically, people will, for better or for worse, often not take you as seriously or will discount what you have to say if you’re not an effective writer, which isn’t the greatest feeling in the world.
Also see FAQ – How to improve for more general advice on becoming better at programming and computer science.