+3  A: 

Go to graduate school. You will be able to take more courses that interest you and get involved with research projects.

Brian Ensink
+5  A: 

Build your own mini compiler. Compilers are really interesting to code: you need knowledge from various areas of computer science like theoretical computer science (parsers, grammars), design patterns, low level programming (for the codegenerator), algorithms, software engineering.

BTW, here you'll find an interesting discussion on compiler design text books:

http://stackoverflow.com/questions/725372/which-programming-languages-text/725582


Zifre's got a good point. When it comes to professional / business work it is important to know the business domain very well. Knowledge about the business you're in will give you the opportunity to implement the interesting business parts of a system. They are often much more interesting and involved than gui widgets.

lewap
+6  A: 

A few ideas:

  • Get involved and contribute to an Open Source OS (i.e. Linux)
  • Graphics, 3D, animation, gaming
  • Data processing and analysis (image recognition, voice recognition, data warehousing)
Dave Swersky
A: 

I guess that depends, if your just looking for a challenge try writing a simple little game with some AI or some kind of art generation AI. Define strict rules and build around them. You'll be surprised how quickly rules will make that development difficult. This has the added benefit that you might learn somethings about emergent behavior which IMHO is an awesome topic to explore. Of course these don't have much real world use but sounds like your looking for a challenge.

TrueDuality
A: 

Add a year or so to your college career, dual-major in Electrical/Electronics engineering, and find work (internship first) doing embedded systems. Of course, there's no guarantee that you'll like that either ...

kdgregory
A: 

A little background about myself: I'm in my last year of my computer engineering program I've worked in an IT department and a software company before, both building database-driven web applications and I don't like how it's always the same old routine

Since you are getting a computer engineering degree and don't like the same old routine you definately want to stay away from the database/gui/web stuff.

I'd say you should work on an embedded system project for your senior project. Buy yourself a little PIC Controller Kit and implement an Ethernet or USB Controller device. Then maybe turn it into a switch and then a router. By the time you finish projects like that you will have tons of job offers.

Another suggestion would be to use some of that extra math that the engineering (over comp-sci) degree got you and maybe learning some DSP programming. You get to work on some pretty intricate and cool algorithms if you break into this area. Like the PIC Controller you can find some relatively inexpensive DSP Processor kits to play around with that you can build some cool applications.

I would also suggest working for a big company as there are generally more opportunities to switch to more varied kinds of projects.

Also, I hate to burst your bubble, but no matter what area of development you get involved with as you gain more experience it does become the same old routine. You have to make the effort (usually on your own time, at least initially) to add the new skills to your repertoire to keep it interesting too you. Then if you are lucky, you can find a use for those new skills on the job.

Dunk