

Ask HN: How did you pick your focus in Computer Science? - tubbzor

I am currently a Junior at a University majoring in Computer Science. The upcoming spring semester will be my last of required CS classes and I'll be able to take from a wide range of 400 level classes of ranging topics that look interesting but I'm not even sure where to start. None really jump out over others to me and I'm not sure the overall benefits of taking 'Graphics' over 'Compilers' or if I'd be stupid to not take both.<p>So, for others that were in this situation or a similar situation in choosing a career or came to a fork in your education:<p>How did you pick your focus in Computer Science?<p>More about me if interested: 
I started getting interested in Computer Science my senior year of H.S. (~3 years ago) through a Micro-computer Projects elective and my freshman year of College I decided to go Computer Science and switch out if I didn't like it. Well... I ended up liking it a lot and have breezed through the CS classes thus far just out of pure interest of what I'm learning from various data structures to CPU design to Operating System design concepts. Distributed systems recently sparked my interest while learning about program concurrency. 
It is absolutely intriguing and humbling to me how CS can impact any field it's applied to. On that note I also have an internship doing Java development/management of a Desktop (with GIS capabilities) and Android App for the USDA building software which takes several field conditions (soil, climate, nutrients, etc.) and evaluates the field to optimize nitrogen application to conserve the land and maximize crop yield. We are currently in 4 individual states, and also in Mexico, Brazil, Ecuador, and Puerto Rico. I love this job because I feel like I'm actually doing something and building a product that matters and is reaching people, but I'll eventually pass this along to the next intern and hopefully can move onto an even more impacting project.<p>~
Thanks for any insight and guidance.
======
lmm
At the end of my first year I had to choose between Computer Science and
Mathematics. I chose Mathematics because it seemed harder/more interesting.
I've spent my entire working life as a programmer, but I still think I made
the correct choice, and my career is probably better off as a result.

So my advice is to pick the area that seems most interesting, rather than
worrying about any future applicability.

On the more practical side, don't bother with easy courses (they're a waste of
your limited university time, you can learn easy things by yourself later),
and pay attention to who's teaching them - a good prof makes a lot more
difference than the actual subject matter. Students in higher years will
almost certainly be happy to share their views - talk to them.

~~~
tubbzor
Thank you for your insight. I realized many of the profs I took in my intro
classes also usually teach a 400 level class and this will certainly help me
decide what to take.

------
snowfarthing
I cannot guarantee that my advice is the best, because I'm a mathematician,
and not a computer scientist, but my own experience might be helpful
nonetheless.

I had originally decided to become a mathematician because I read "Jurassic
Park" for an English class, and was intrigued enough by "chaos theory" that I
looked into it, and discovered what mathematical culture was like, and decided
that I liked it very much. When I started college, I declared myself a double
major: Mathematics/Computer Science--but reduced the Computer Science part to
a minor, when I decided that it wasn't mathematical enough to my liking.

Since then, I went on to get my PhD in math, and then decided that I'm not all
that interested in teaching, so I've been working with computers since then.
More recently, I've discovered Lisp and Haskell, but I have been finding it
difficult to find the time to get through the "classics" like "Let Over
Lambda", "Learn You a Haskell for Great Good", "The Art of the Meta-Object
Protocol", "Structure and Interpretation of Computer Programs", and "On Lisp".

Do I wish I could have gone through these things while I was a Computer
Science minor? Yes, I certainly wish so: these systems are almost pure
mathematics! Having said that, I'm not too disappointed that I didn't go
through the program. I spent a three-year hiatus between my first and second
year of college, and between that time, there was a shift from C++ to Java as
the core Curriculum Language; even before that shift, however, I don't think
my school was enlightened enough to pursue Lisp properly in its higher-level
courses. My only regret with my educational path, though, was that I didn't
get a chance to take the second semester of "Computer Architecture"--thus, I
took the class that taught me how to construct computer gates (and a couple of
other things--like "flip-flops", if I recall correctly), missed out on the
semester that discussed creating memory, arithmetic units, and so forth.

Oh, I would add, be wary of the grad school route: I do not regret going that
route to learn the math I did, and I met my wife in the process, but I really
wish I could have created a startup when I was younger! Having said that, I
_really_ wish I could make use of my mathematical knowledge somehow, right
now, to start something...but the catch-22 is this: had I not gone through to
get my Doctorate, I wouldn't have the mathematical background that I would
like to use to do interesting things...

