Computer Science-specialized or general direction
I am still unsure of my specific degree within computer science. There are a lot of directions to go. How do you decide what direction to choose in this field? Are you shown all possible directions in early years of college?
My own lower division classes didn't cover every single possible focus -- there wouldn't be enough time to learn foundational skills if they did! However, the foundational skills they did teach can help you identify what topics you'd enjoy. For example, my lower div courses included basic OOP, lower level / systems work, and probability and discrete math. Out of those, I knew I enjoyed the former two, and disliked the third -- since I was not a huge fan of probability and discrete math, I avoided going in a direction that was significantly more math heavy, like Machine Learning, and focused more on systems and databases in my upper division courses. I did take classes that I ended up disliking, but those experiences were still valuable since it exposed me to a wider variety of topics, and helped me hone my focus.
Other more structured ways to get some exposure to a variety of different focuses includes joining clubs and pursuing research opportunities, if those are available to you. There may be a variety of different clubs that focus on mobile development, robotics, graphics, etc that will allow you to gain some practice experience in these different directions. If your school offers them, research opportunities are a great way to expose yourself to more theoretical learnings in the different sub-fields. If your school doesn't offer them but you still want to expose yourself to academia, you could look up academic papers that are renowned in their specific sub-fields.
Jasmine recommends the following next steps:
Many college programs provide students with introductory classes in several areas. It's great to take any of the classes that look interesting to you so you can learn more about them. You will find that you like some more than others! Some colleges require you to choose a specialization, and others do not. As you learn more about the different areas, you'll see which ones appeal to you more, and you'll hear more from the more advanced students in your program about what employers are looking for. What you decide to specialize in can be a combination of what appeals to you and what you're thinking about for a job.
One more note... having a specialization may not be necessary for getting a computer science job! There are lots of computer science jobs that don't require one. I've had opportunities to learn a new specialization on the job because it was needed for that specific position. Employers love computer scientists who can learn new skills!
If you are more interested in the data side of things, see if your university offers a Data Science degree or focus within CS.
Regardless, I had chosen to do Software Engineering, as it covered enough to be proficient in a Software Development position. If you have passions in any other area of focus, nothing would be stopping you from taking one or two classes in it or experimenting with it with your own time. Employers will look at your degree and test your technical skills in an interview. There are very few scenarios where your specific track would actually matter. It is more to just keep you on a successful path.