views:

878

answers:

18

So I'm going to an average university, majoring in CS. I haven't learned a damn thing and am in my third year.

I've come to be really bored with studying CS. Initially, I was kind of misinformed and thought majoring in CS would make me a good "product creator".

I make my money combining programming and business/marketing.

But I have always done programming for the love of the art. I find things like algorithms interesting and want to be able to use CS to solve real world problems.

I like the idea of bioinformatics and other hybrid studies. I'm not good enough, yet I hope, to really make a significant effort in those areas but I aspire to be.

What are some other fields, open problems, and otherwise cool stuff to apply CS knowledge to in the real world?

I'm really looking for something that will motivate me and re-excite me to continue studying CS.

Edit: Like someone mentioned below. I am very interesting in the idea of being able to use computer science to help answer fundamental questions of life and the universe. But I'm not sure what is possible or how to begin.

A: 

Look for CS classes offered that are not part of your official curriculum and see if you can get into them. I took a class on computer graphics, for example, and you may also have classes on AI or compilers or who knows what else.

You could also go out independently and learn a new programming language. Someone on Stack Overflow recommended these videos on Haskell, which I found pretty interesting. Prolog has somewhat of a similar feel to it, so maybe find a tutorial and learn that. Maybe one of those, or some other language, will re-excite you.

MatrixFrog
I had a class in prolog and it just made me feel stupid then smart then stupid then smart in and endless cycle.
rerun
Cool. I'll check out Haskell. I'm taking a Prolog class right now. But it's a very basic programming languages course, not like AI with Prolog or anything.
Eric Martinez
+1  A: 

Take business classes. If you want to learn how to solve real world problems, become an entrepreneur. Even if you graduate with a boring CS degree and get a boring programming job, business courses will help you understand how the company operates for you to be a better contributor. Learning algorithms can only get you so far. :)

C.D. Reimer
Oh for sure. Actually, currently I've been studying internet marketing and have made some decent cash as a student. Enough to pay all my bills and go out and stuff. I have started my own company, incorporated as an LLC, etc. I don't want to pursue CS as a career choice. But I do want to be able to use my CS knowledge for fun in something other than business. O
Eric Martinez
+17  A: 

Your idea of hybrid studies is a good one. Go take some classes in other fields you find interesting, and think about how you could apply computer science to them. It will give you valuable perspective on the field.

That's how I wound up in programming as a profession. I had a math/chemistry B.S., and was working on a doctorate in organic chemistry. One day I was sitting in a class on pharmaceutical design, and the prof was remarking that it was hard to do certain kinds of drug modeling because it involved solving large systems of linear equations. Having a background in linear algebra and numerical methods, I thought to myself, "What? That's silly!" So I co-founded a software startup to do exactly that, then left grad school and joined it full-time, and the rest is history. Twenty-five years later, I'm doing cutting-edge graphics work on embedded systems and can't believe people actually pay me to do something that's so fun.

Whether you stick with CS as a career or do something else, a lively sense of curiosity about other fields, and practice at intellectual hybridization, will serve you well. Many pure-CS people have a hard time understanding how their work fits into a broader context. Having a perspective that extends beyond a narrow CS-only viewpoint will help you avoid contributing to disasters like Google's recent Buzz debacle, where the Googlers clearly were so enamored with the technical and business benefits that they didn't stop to think that sending womens' personal information to their abusive ex-husbands might be a bad idea.

Bob Murphy
Thanks man. Thats awesome.
Eric Martinez
It's also really fun to be a polymath like that. If you can find an SO who's also a polymath, it's completely awesome. Your life will be like living inside XKCD.
Bob Murphy
Hmm... I'm not certain that life inside XKCD is a good thing. I don't want guys in black hats trying to sabotage my every move.
Steve
True, but the XKCD lifestyle's cloud has its silver linings. When my wife and I go out for Sunday brunch, our conversation can include - I kid you not - a mix of quaternions and octonions, the development of Indo-European languages, pre-Norman Conquest Anglo-Saxon legal structures, and the latest WWE professional wrestling storylines. Also, when the guy with the black hat shows up, we get to use the awesome combat skills we learned from Dr. McNinja, and his girlfriend is really hot.
Bob Murphy
Oh, you mean her? http://xkcd.com/433/ Yeah, she's hot.
Steve
Yep, that's her. My wife is very much like that. Her latest deal is: "Bob, I married you because you're a chemist. You've got the iron oxide and the igniter. Now just get off the stick, get some aluminum powder, and make me some damn thermite!"
Bob Murphy
Hahahaha. "Yes, hon."
Steve
A: 

The answer depends strongly on who you ask. What does "make an impact" mean to you? What do you think is important to society?

I feel that scientific research is important - answering the fundamental questions of life, the universe, and everything. If I were in your position, I might stick with computer science and possibly continue on to graduate school where I could do some kind of multidisciplinary research. Scientists in nearly any field need people who can create computer simulations on which to test theories.

But that's just me, and based on what you posted I am perhaps the complete opposite of you. I'm often put off by people (employers, family, friends) who seem to think that my computer science degree has somehow trained me for a career in IT/business. I really enjoyed my studies, but I never had an interest in IT/business/entrepreneurship and I wouldn't even want a job of creating products that nobody needs.

Cybis
Actually, thats what I had in mind.I very much want to do something that support science and answering the fundamental questions of life. Having direction and ideas on how to do that with CS is the reason I posted.
Eric Martinez
A: 

AI is one of the most interesting and exciting fields in CS. Also i would advise you to take up a part time course in programming and marketing.That would help you with what you are currently doing.

You'd be rather better off with majoring in marketing or management sciences rather than CS. Anyway it is best to complete your graduation first if you're in your third year. And then go for an MBA in marketing or project management.

Maxood
A: 

I read in your comment to Matrix's reply that Prolog could be the answer but you don't want a simple Prolog programming course.. I suggest you then to go through that simple course and then try to let this algorithm work properly: CLUSTER/2 (michalski and stepp - 1983)
http://en.wikipedia.org/wiki/Conceptual_clustering

I'm sure you can manage to find the article in your uni, there the alg. is explained really well. I don't have it, now but I got almost everything work properly trying to code using that article.

Believe me, developing that kind of stuff it's really cool.. if you're able to let it work of course.. :)

enjoy

Murko
A: 

I suggest combining your CS major with your secondary interest as a minor. So if you want to head into bioinformatics, biology is the obvious choice.

Another option that you may have if your school allows it would be to create a customized degree program, which would be a combo of your CS + other interest classes. It may be essentially the same thing as the major/minor, but some schools are very flexible this way. It might allow you to focus your efforts in a relevant manner without the strict requirements of a declared major/minor.

Joe Internet
A: 

One application of computer science that I find inspiring is 3D graphics and visualization. Within those, there are plenty of areas which require thorough understanding of both math and programming. Many of my friends that have taken visualization courses emphasize how motivating it is to actually see the results of their work visually on the screen. I'm not sure if graphics is an interest to you at all, but it's definitely an area that has made computer science fun to a lot of people I know. And visualization has in turn a lot of applications within economics, entertainment, medicine, engineering and so forth.

Also, I agree with the previous poster who talked about taking business classes. A good developer with an interest in economics and organizational theory can get very far, either as an entrepreneur or IT consultant.

Anders Fjeldstad
+8  A: 

Coming from a similar perspective, I can tell what changed my life: a MSc in Evolutionary and Adaptive Systems which I did in Sussex University (UK). Take a look at their webpage here. If you're in a different country and don't want to relocate, see if there are simiar courses nearby. Topics include artificial life systems, computational neuroscience, neural networks, genetic algorithms.

After that I got involved in brain modelling and computational models of the brain -- and that is definitly an interesting set of problems, including:

  • there are 10^11 neurons in a brain, and a total number of 10^14 synaptic connections (roughly). How would you model that? Or a subset of them? What kind of data structure?
  • there are models that run in near-realtime for "small" subsets, with identical behaviour (see this page); how would you scale that to a cluster?
  • what about data coming in from the body sensors? What about time intervals for data sampling?
  • philosophy: what is consciousness? Can we determine whether a system is 'conscious' by observing firing patterns in human brains and trying to replicate them on a model? Is consciousness a dynamic set (a "core") of neurons that are intertwined by causality? What's the role of synaptic plasticity in that?

Computer science is cool, but often can be just an instrument for much cooler things :)

lorenzog
that sounds really interesting actually :)
Zeus
Man that is definitely bad ass. We have nothing like that around here.
Eric Martinez
@eric you don't need to relocate forever. even one year, heads-on, can be life changing. Then you're pretty much for yourself. But you *need* to get somebody to put you on the right track. And the 'studying abroad' thing is by itself worth trying. It's fun :)
lorenzog
+1  A: 

Since you enjoy algorithms and real world problems I'd say search the following fields Machine learning, computer vision and AI in general. There's bound to be something you find interesting.

ThanosPapathanasiou
A: 

No classes in the world can make you an experienced programmer - in any field. You take classes to learn basic programming techniques, and you get employed in a software company to get programming experience and get expertise in a specialized area of programming. It's only in a real world job, you actually gets to program real world applications.

awe
What I'm looking for is along the lines of theoretical computer science and research. "Real world applications" wasn't supposed to mean software engineering. A career as a programmer is not what I'm looking for.
Eric Martinez
+1  A: 

Like Barbie Computer Engineer, you can learn that you "are free to explore infinite possibilities, limited only by their (your) imagination"

http://www.chipchick.com/2010/02/computer-engineer-barbie.html

Llistes Sugra
A: 

It seems you are a bit understimulated. I personally started my degree after I've been in the programming field for a long time, and I also figured that there was not much I could learn that I did not already know.

To make a long story short, I studied games development as part of the CS programme. It turned out to be great! I learned a lot of stuff one normally does not come into contact with in the usual "business programming" workplace. For instance, you have AI and physics simulation, real-time 3D rendering. Everything in real-time!

The field is huge, interesting and very demanding. I general you need a strong mathematical background (linear alg). Also a plus if you have a natural inclination towards implementation and optimization, since the whole thing needs to run at real-time speeds. You can delve into things like fluid simulation, particle systems, path finding, AI systems, animation, lightning and shadows, networking etc... Enough to keep you occupied for as long as you like.

Martin Wickman
Can you make a good living from games programming? I don't see many openings, and those dont seem to pay well and require long hours. Maybe it's the price of doing something you love though...
Jonathan
You're right. Games programming is very much about dedication and not so much pay I'm afraid. But it was fun as hell to learn. I'm not in the field for just those reasons you state. But the things I learned made me a much better programmer in my day-to-day work.
Martin Wickman
A: 

I think spend some time looking at your real values, the times in your life when they were/weren't met, and what it took for you to feel this. Maybe also go to career counselling, to make sure you don't jump into another course and find out you still feel the same.

Jonathan
A: 

If you find biology interesting, then bioinformatics/computational biology may be something for you. Biology is currently experiencing a tremendous explosion of sequence data to the point where researchers are completely overwhelmed by the sheer amount of data. Obviously, that's a point where computers help. There is a lot of research into how to analyse these huge data sets, so there's certainly space for you.

There are two things to note, however: in order to be able to do something innovative that helps to answer biological questions, it is very helpful to understand some biology first. And biology (or even any particular sub-field) is huge. So sufficient motivation to learn a lot in this area is a prerequisite.

Secondly, the majority of bioinformatics work is done in academic research (universities, genomics centres, ..), which implies that if you're in it for the money, it's probably not for you.

PhiS
+1  A: 

If you want to work on real-world problems. Do research. Ask around and see which of your professors will take on undergrad students for their projects.

There are so many unsolved problems within academia (which may or may not be applicable to "real-world" situations). Therefore, academic research will give you an opportunity to think outside the box, and tackle problems that no one has solved (or does not have a good solution for solving).

Depending on your background and interests as well as the research focus of your department, you can go into any one of these following fields:

  1. A.I/statistical machine learning (you need a good foundation in probability, statistics, and linear algebra though)
  2. Computer vision (same requirement as a.i./statistical machine learning)
  3. Robotics
  4. Computer graphics (strong understanding of linear algebra)
  5. Computer Networks
  6. Embedded Systems
  7. Operating Systems (need strong grasp of C/C++ and be a good hacker)
  8. Computer Security
  9. Programming Languages
  10. Bioinformatics
  11. Database
  12. Algorithms/Complexity and on on.

dig around your professor's websites and read papers that they've published recently. Find one or two professor whose research interests you, and contact them about potentially joining their lab and working on one of their research projects.

+1  A: 

I'm in bioinformatics and love it. If you are interested in math (algorithms) then there are so many math based calculations in it. Any major program you write needs to be as fast as possible (algorithms research). Also many of the applications depend on math. For example, in the first bioinformatics class they told us about Computational Phylogenies (phylogenic trees that show the relations among different species), sequence alignments and mulitple sequence alignments. Depending how you approach this many use hidden markov models (HMM) or other forms of calculation. The newest research techniques need new approaches (or new mathematical models) to approach the problem as well as utilizing different ways to make the program run faster (algorithms).

I also took an intro Artificial Intelligence course and that should also be good. Again all the programs run faster with better algorithms.

My school also offers a Computational Neuroscience program. As well as degrees in computing science and X where X can be anything.

What I recommend is looking through your school's course calendar and picking out classes that you find the most interesting. Ignore what field the course falls under, look through the whole book. Then after you are done go through the list and see what category (or categories) most of the classes fall under. Then you should research combining those classes with the computing science degree. Computers are ubiquitous, they are everywhere and whatever field you are interested in then there will be people who want computer software for that. Take biology for example. Many bioinformaticians basically take a program from a geneticist and tailor it to fit the geneticist's need, or they take an idea and make it a reality to make other people's lives easier. It would be the same in any other field.

Good luck :D

Kyra
A: 

I was in the sort of the same boat as you last year, and so I decided to take a "special topics" course at my university called Collective Learning Automata. We learned game theory, and then spent most of the course writing a program that "learned" how to play a game, starting off terrible then getting progressively better using State Transition Matrices. We had to do a project on it, and since I was one of the few that got it working properly, I decided to try different learning strategies on my CLA. After the programming, it was really interesting to see my program "come to life" and watch it get better at the little game I taught it how to play (I made one of those IQ-tester triangle peg jumping games that you see at Friendly's or wherever it is).

One of the most interesting parts is that we read Mary Shelley's Frankenstein during the class and had deep conversations/debates about the morality of a machine in the future that can make "decisions" like this.

Then, to follow up on that, our professor brought in the creator of ALISA (who also wrote the book we used) and we learned all about that. I'm pretty sure it went open-source so you can play with it and develop for yourself. Probably the most interesting class I've ever taken, and it really sparked my interest in AI, but not from a robotics perspective.

rownage