Hi, I have been trying to figure this out too since I am a senior in HS. Here is what you should do regardless of what specific type of CS you are interested in. First pick up a nice data structure and algorithms book, if you want follow this course as well. Now, figure out what interests you. Here is a good list of specific CS fields. To be honest, I not been able to discover an interest in a specific field, since it is extremely difficult to narrow down at this point. I decided to focus on getting a job at the big 4 as of now (obviously this is subject to change). I then narrowed down my interests in the field of software dev (web, mobile, game, embeeded). The rest of this comment focuses on how to prepare yourself for a software dev job. I choose to go with web and develop a basic understanding of android on the way. Through coding projects in which ever specific area you choose, you will increase your chances of getting an interview by the end of you freshman year of college. As I learned from posting on this subreddit, you should not focus on trying to learn everything. The fundamentals of what you learn can be transferrred. Therefore if you choose to focus on web development and choose to develop in python (with the Django framework) your understanding of web development fundamentals will help you learn web development in other languages ( and other frameworks) faster. Being able to quickly adapt to new languages/technologies/frameworks quickly is a great skill to have, since throughout your career you will be faced with many different languages/technologies/frameworks. I recommend using these projects to learn a mainstream language (Java, C++, C#) in depth since you will need this knowledge to provide solutions during the interview process. Also consider reading books like Code Complete, The Pragmatic Programmer, ect. (just google around you'll find good lists of books that explain best practices) to improve the quality of code. Read these while you learn other languages. Google also provides a list of good Coursera and Udacity courses to go through. Do not be overwhelmed by all of this, plan accordingly, you have plenty of time. I am trying to cram all of this stuff in right now. Just for shits and giggles try to learn a functional programming language like Haskell if you have free time, it will introduce you to new paradigms. Here is a good resource for learning Haskell. Sorry this falls appart into a groccery list by the end, as you can tell I paid no attention to grammar, because I was trying to pile on as much info as I could recall. Thanks for reading this.