views:

650

answers:

11

At my school, since Spring 2007, each Computer Science major may declare one of the following areas of emphasis:

  • Computer Systems
  • Software design
  • Computational Science and Visualization
  • Modeling and Simulation
  • Internet and Information Technology
  • Theoretical Computer Science
  • Artificial Intelligence (AI)

Note: An area of emphasis does not replace classes required to graduate, but just structures major electives into a more coherent theme. Declaring an area of emphasis should not increase the number of credit hours you need for your degree.

In order to declare an area of emphasis, a student needs at least 12 hours of area-related courses taken as electives:

  • Computer Systems:

    • Operating Systems
    • Computer Networks
    • Computer Security
    • Compilers
    • LSI System Design
    • Distributed systems
  • Software design:

    • Software Engineering
    • Database Management
    • Compilers
    • Programming Languages
    • Simulation and Modeling
  • Computational Science and Visualization:

    • Numerical methods and computing
    • Numerical Simulations in Science and Engineering
    • Computer graphics
    • Human computer interaction
  • Modeling and Simulation:

    • Algorithms
    • Algorithms for Computational Biology
  • Internet and Information Technology

    • Web Programming
    • Global Information Systems
    • Database Management
    • AI & the Web
  • Theoretical Computer Science

    • Introduction to Linear Algebra
    • Algorithms for Computational Biology
    • Introduction to Quantum Computation
    • Combinatorics
    • Graph Theory
  • Artificial Intelligence (AI)

    • Game programming
    • Robotics
    • Symbolic programming
    • Evolutionary computation
    • Human Computer Interaction

So, my question is this: Which area of emphasis do you think is the best and why?

+5  A: 

It all depends on what you want to do. I would strongly suggest that you do your "concentration" on what you yourself find the most interesting. Employers will not be looking at your concentration.

You'll do the best at what you are interested in, and you will probably not do as well if you choose classes/concentrations based on what you think others will want from you.

Personally, I like Computer Systems, being a computer engineer myself. I think it gives you a good fundamental picture of how computers work that you can leverage everywhere else in your career but then again I'm a third-generation Electrical Engineer, so it's a breeding thing with me.

Dave Markle
+1 - pick what interests you. Recruiters will be more interested to see you got good grades than that you necessarily attended buzzword-compliant papers.
ConcernedOfTunbridgeWells
Agreed. The buzzwords will all be different by the time you graduate anyway.
Dour High Arch
A: 

I think Internet and Information Technology is the best but that's because out of the classes you listed those are what I find more interesting. If you want to get a masters or phd in computer science then theoretical computer science would probably be the most helpful. I agree with the other answer, take what your interested in not what will make you the most mony. You should enjoy college not take classes you hate because you think it will make you extra mony when you graduate. Technology moves so quickly that a lot of the practical aspect what you learn will be useless in 5 to 10 years. You also don't know what you will be doing for a job in 10 years. Just because you get hired in as an entry level web programmer doesn't mean you couldn't wind up working on other types of software that share very little in common with web development.

Jared
+1  A: 

You should talk to professors in your department. They will be the best people to get advice from regarding this kind of thing. But at the end of the day, as someone else said, do what you enjoy the most.

+1  A: 

In college, I found artificial intelligence to be fascinating. Even back in the early 90s there was plenty to talk about. The stuff they're doing today is so much better!

AI is such an interesting change from the deterministic, algorithmic way of solving problems. Often in AI, solutions are unpredictable and "good enough." Neural networks and genetic programming are so cool.

Nowadays, AI techniques are applied to problem spaces such as search engines, mechanical engineering, electronic circuit design, medical diagnoses, navigation, and more. It's definitely a field that has a lot of growth and research potential, even if we're still decades away from anything approaching human intelligence.

Barry Brown
+5  A: 

You're asking the wrong question. The following algorithm applies to all students regardless of major:

  1. Look at the student guide, talk to your fellow students, ask around, and find out who the best professors are.

  2. Pick the area of emphasis that will make it easiest for you to take the most courses with the best professors..

  3. Take courses with professors who are teaching in their areas of research.

Another way to say it is that you emphasize the area with the best teaching, because that's where you'll take the most courses, and then cherry-pick the best courses from the other areas.

If other things are equal, stick to fundamentals. Your program seems to have OK offerings in Computer Systems, Software Design, and Theory.

Norman Ramsey
+7  A: 

Don't waste your time in college training for a job, use your time in college to learn.

I would rank these in this order:

•Theoretical Computer Science. Unless you plan on being an academic you won't get another chance at learning this in such an advantageous environment.

•Human computer interaction. You are unlikely to get a good perspective on this topic once you are in the workforce.

After that I'd go with what is interesting. At least three of Compiler writing, Programming languages, Operating systems, Computer Networks, Computer Security. And any CS major that lets you graduate without taking Algorithms is not something I'd consider a CS major.

The main issue is what you will have less chance of learning later in your career. Anything you learn in College will give you a perspective when you later take a job, but it is not 'training' for a job. When you get to a workplace there will be a ton of stuff you need to learn that has no place being taught in a university, and will change by the time you get there, so don't bother with it right now.

Steve Steiner
Personally, I would rank compilers / programming languages as slightly higher than theoretical computer science. As Steve says, this is a golden opportunity to learn things that (a) you won't have time to learn later and (b) other people never bothered to learn....
Bob Cross
+1  A: 

It depends on where you want to go and what kind of effort you're willing to put.

Maths and theory are definitively the hardest classes.

I would never chose internet as it is a derivative of all the others and very easy stuff.

Loki
+1  A: 

As an employer it doesn't really matter to me what you learned at university. What is more important is what you did with it, i.e. projects etc.

Ali A
I wish more employers looked at like you do.
corymathews
+1  A: 

The best option is what you like to do. You might not be experienced enough yet to know what you like, but just try out a bunch of things (talk to professors, do research if possible, take a variety of classes, etc.) to figure that out.

Having said that, I'm a grad student in CS and I focus on systems research -- operating systems, compilers, etc. It's fun, but to be honest, it's not the most exciting field; no one really cares what radical stuff is done in systems, because Unix is so firmly entrenched that almost every "new" operating system has to be Unix-like anyway. But I digress.

mipadi
+1  A: 

I think any of Software Design, Internet and Information Technology or Theoretical Computer Science would be my choice for best.

Software Design would prepare one for being a developer either in a software company or a the IT department of a company building in-house applications. Computer Systems is close in terms of having some courses in common but I think some would view as being too general and lacking in challenges that the others would provide.

Internet and Information Technology would prepare one for going into more IT roles such as a project manager or analyst in addition to being a developer. This is the most business-y area which may appeal to those wanting to get into management of systems or people I'd think.

Theoretical Computer Science is likely the most Math-intensive and would serve as a good basis for going into graduate school as this area has many parts to it that are still being explored. I would view this as the most "fun" for someone like me. I did have Math courses in Combinatorics, Graph Theory and Linear Algebra which demystifies some of this to me.

That's not to say that any of the others are bad, it is just that I don't see them as something that would interest me.

Computer Systems seems to be the most generic of the areas and would be something I would take if I wanted to be more of a general IT position in the end, e.g. an administrator or security position.

JB King
A: 

You may choose to do whatever you wish to do in this world, as long as you do it for the right reasons.

Keep it practical; always keep in mind that you will need to use this knowledge. Wisdom is the ability to use knowledge. Use your knowledge efficiently and effectively, as you should do for any resource.

Your mind is but a tool; your mind is not you; your mind is but a part of you; fill it with the right stuff and fill it well.

If you wish to maximize effect, aim for the most reach; the living Web is the key to the door.

But so is pleasure.

Nicholas Leonard