I have a new problem.
Problem: My experience in programming has been limited to JavaScript, HTML and CSS. This is not inherently a bad thing, but it appears that for many positions I should have comfort/familiarity with other high-level programming languages such as C++, Java, Python, Go or C. Additionally, my cursory research into many high-level Computer Science concepts seem to trend toward the usage of C++, Java, Python or C.
But I really love JavaScript, so I've decided to take the middle ground on this one. I will begin learning Python, but continue much of my studies and work with JavaScript. After all, Computer Science concepts should apply to languages in some way. The methods, syntax, features and implementations will just differ.
A really awesome recruiter from Google provided me with some materials to give a little direction to my preparation for interviewing with them. After some thought, I realize that they are fundamentally great starting points for getting comfortable (or refreshed) with Computer Science.
At a high level, they are:
Coding: I should be able to actually code. I should have a good working knowledge of a language, how to wield it and how it conceptually/practically functions.
Algorithms: This is a word I have not seen in a very long time.
Sorting: I don't think I've ever even had to implement sorting.
Data Structures: I should be highly knowledgeable about data structures and be able to pair them with appropriate algorithms for problem solving.
Mathematics: Understand discrete mathematics. This is particularly relevant with Google.
Graphs: Understand graphs and know their use cases, computational complexity and implementation.
Recursion: Understand recursion and be ready to use it.
My first glance into all of this was really overwhelming. I haven't touched complex mathematics, let alone discrete mathematics in at least 6 years.
Fortunately, I'm not really one to back away from a tough road. I figure I can divide and conquer the subjects, intensely study and make sure to develop an intimate understanding of each topic. The subject material, after all, is valuable no matter the application, whether in day to day programming or an interview.