I started programming in basic in 3rd grade. I graduated high school in 1996, spent three years in tech support and started programming professionally in 1999. According to my salary I never missed anything by skipping college, but I always felt like I missed out. Two years ago, while working as a telecommuter, I decided to pursue a degree and started taking classes at community college. The math and physics courses opened my mind to ideas that I never really put much thought into. College opened my eyes to ideas that I never would have studied on my own. I quit my job and enrolled at University of Illinois this spring.
While I have not yet pursued research, I know that there are many opportunities for undergraduates to research in computer science. Professors typically want junior or senior undergrads because they have enough coursework in the fundamentals to be useful. Right now there is a huge push from the school to get experienced freshman and sophomores into research. They have a funded mentorship program that pays graduate students to work with one or two undergrads on their research. The problem is that they can't get enough underclassmen to apply to the program.
Many of the people that post on Hacker News that post a low opinion of the college education were educated in college themselves. Only a very small minority of posters have seen both sides of the coin. I have become a completely different person in the last two years since I started college. This experience has been far more costly for me, at 35, than it is for a typical college-age student. If I add my tuition, fees, and expenses to the opportunity cost, due to lost salary, I am paying $140k a year to go to college. I have no regrets; this has been the best experience of my life.
You've probably heard the old saying that youth is wasted on the young. I think college is also wasted on the young. Those that denigrate college were not yet self-aware enough to realize the benefit they gained from that experience.
The fact that you have "seen both side" is exceptionally helpful.
Also, if there is a hackerspace near you, find it and join it. Get involved in all the crazy stuff that's probably going on there. I can't speak for any other hackerspace, but at SplatSpace, the range of projects people are working on is mind-boggling. You have a guy doing a system based on Inductive Logic Programming in Prolog, to generate candidate molecules for new drugs, and then reason out the metabolic interactions and try to proactively find compounds that will be useful. You have several people building and operating 3D printers. There's a guy building a coilgun (OK, that's me). You have a guy working with a researcher at UNC doing "forced evolution" research. Another guy is doing something with an interactive fiction platform. Somebody else just built a Raspberry Pi based tabletop form-factor game cabinet. Somebody recently built a Mantis PCB mill. One guy is working to fully automate his home brewing setup. Seriously, the knowledge, the vibe, everything available at a hackerspace can be awe inspiring.
Or is this asking too much of a pre-graduate program?
Don't ask it of the program, ask it of yourself. Of course, talk to your professors and see if they can help. I imagine many (most?) will be VERY happy to help a motivated student who wants to go beyond the standard curriculum and do interesting stuff.
There are undergraduate research opportunities available, where you basically take research as a class. At GT it's called UROP (Undergraduate Research Opportunities Program). I know a few people who did it for CS, and they offer it in their other programs of study as well.
As far as language goes, I think I had 2-3 classes at most in a particular language. Some didn't have a language requirement, it was whatever. In no particular order, I used: C, C++, Cg, Java, Smalltalk, Ruby, Bash, Perl, PHP, HTML/CSS/JS, Matlab, Python, Processing, and SQL (if you count that). I also didn't know how to program before I went to college.
As far as paying for colleges go, you may want to check into reciprocal in-state tuition agreements between states. I think most of the time it's for bordering states if your state doesn't have a good program of study. Otherwise, I'd highly recommend work-study, co-op, or internship programs since you'll earn money and get experience as well.
I have looked at GT and heard from friends that it was hard (in a busy work negative way), but well priced. It's on my list of potentials.
I never really felt that my classes at GT were at busy work. Definitely difficult, until you look back later and ask yourself why you ever struggled with that, it was so easy compared to what you're doing now.
1. Some people learn theory first, and from this discover more advanced theory that helps them eventually apply knowledge.
2. Some people learn applications first, and learn theory as necessary.
In the software industry, it's very easy to fall into the trap of #2. I mean... it's way more fun to build something that people can use, than read a textbook and hear a professor talk.
However, you should keep in mind that if you choose this path, you are starting at the same starting line as everyone else. Learning the theory behind applications gives u the advantage of having a starting line that is ahead of most people.
Consider this scenario: You are an incandescent lightbulb assembler. When you first started, you did not make them very well. Some of them didn't light up, some of them were dimmer than others. However, as time went on, you made better and better lightbulbs. Soon, you become the world's best incandescent lightbulb assembler. But, someone invented LEDs. You don't know what's wrong with your bulbs, since there is nothing inherently ~wrong~ about incandescent bulbs. But you know nothing about why it works, only how to assemble it.
>"Are there still places out there that offer a diverse undergraduate Computer Science program that goes beyond teaching Java and C++ and focuses on the application of these technologies to create things?"
You won't find much of this taught in the classroom. Seek out schools with strong co-op or intern programs. Many community colleges even have co-op programs. Co-ops are basically forced internships and the college does a lot to get you hired. But it's really not much different than spending your summers interning.
MIT, Stanford, Caltech, Berkeley, CMU, Harvard, Princeton, UCLA, UCSD, Cal Poly, and hundreds more.
Or are these really the best for LEARNING (VS JOB POTENTIAL)
The majority of successful professional software developers (if you look at say Google or at YC founders) hold degrees.
What's your GPA? If it's top of the class, then you don't have a problem. Otherwise, you'll need to look in state again.
And if cost or GPA isn't an object then michaelkscott comments are the most valid.
Grades a good 3.8 SAT/ACT don't remember (I think I had a 31)