For CS Majors, How Important Is the "Where?"
An anonymous reader writes "I'm a high school senior who is trying to pick a college to attend. I've been accepted by two comparably selective schools. One is a highly regarded tech school, and the other is a highly regarded liberal arts institution. I prefer the liberal arts college, but the computer science program is small, graduating about a dozen students a year. The course load is heavily theory based; programming languages are taught in later years.
How much would the tech school vs. non tech school matter? Are CS majors from non-tech school considered inferior? What would an HR department think? What would you think if you were hiring?"
yes, here. internet. its the greatest college. get experience here, put stuff here. show them to people here. youll find your job. experience outdoes almost any college name.
Read radical news here
You're better off going to the arts college. you'll have more fun, also the course (from your admittedly short description) sounds good. No harm in getting the theory under your belt. Programming is kinda like music, once you understand the theory of how music works, its easier to pick up a musical instrument... Ultimately if you get a good degree it really doesn't matter, especially when you have a few years experience under your belt. Finally the small size of the faculty sounds good as you'll get more personal attention... Good Luck
The women will be hotter at a liberal arts college.
I'd choose the college with the most beautiful women.
However, in my country, right now, there's no chance of not finding a nice job with any kind of CS higher education.
Also, take into account the importance of your choice of college will fade after some years. At 45, your rank (?) won't really depend on your college but on your skill and abilities.
I think you need to ask yourself if you want to go to a school where they force you into requirements like taking one anthropology course or two upper division reading courses. You're other choice (the tech school) is having all your courses picked for you but never accidentally stumbling onto something you love or have never experienced.
Me, I opted for the liberal arts college and will never regret it. Sure, my coworkers who went to a tech school get to brag about how intensive their CS coursework was but I've learned what they know (if not more) a couple years into my job.
Do what you want to do, what you think will be fun and exciting. The place ain't gonna matter, what you put into it will and will be evident to anybody that talks to you.
My work here is dung.
I think a Lib. Arts degree has great merit, but the submitter has a much better chance of getting a good education at a highly-rated technical school. You learn a lot just by being around other people who know more than you do.
....
In the L.A. school, you'll have to educate yourself. The tech school will let you bounce ideas off of other students as well as the more numerous professors.
This from a Liberal Arts major
Put identity in the browser.
Yes, at first, where you went may matter to some people. And some programs are going to be able to offer opportunities you might not get anywhere else.
But a healthy presence in open source projects to gain experience, as well as being active in your local tech community can go a long way. Having the degree is fine - having it with experience is even better.
Random Musings
The difference between a tech school and a liberal arts school is vast. Tech school will teach you a lot of hands on skills that will be useful immediately in the job market. However, those skills will be flavor-of-the-month, possibly even tied to specific brands, and your possible career paths will be very narrow.
The liberal arts school will teach you a bunch of apparently useless abstractions and hands on programming will be considered an annoying little detail. You'll also learn a lot about long dead societies, peoples and languages. And other, less tangible things.
20 years out, the tech graduate will be working in a cubicle at a dead end job. The liberal arts student will be doing whatever he wants.
I'd probably go for the liberal arts college. You'll meet some interesting people, have a good life for a while and probably get a better education if the groups are small anyway. You can always go to MIT for your masters. I'd also not discount the value of theory. I've always prefered hiring the math student with some programming knowledge over the CS student who took all the Java classes.
Fleur de Sel
My passion for programming started long before I attended a well-regarded liberal arts college where I minored in CS. After graduating I found myself in an environment (a start-up) where I was able to prove myself as a software engineer, a much more rewarding experience in the long-run. Within five months I was working alongside peers with CS majors from engineering schools, sometimes taking the lead on design. After a year, we were using frameworks that had not been taught in school --mine or theirs.
I'd say that 90% of my useful software engineering skills came from my on the job learning. It's a question of what you want to do with your degree. My CS studies were a casual continuation of a personal passion, which in the end has turned into a career. I've also worked in finance (not as an engineer, but as an analyst), and find myself now in more a product management position with the ultimate goal of starting my own company. My liberal arts education has definitely helped me leverage technical skills in the business world. Some of my engineering focused friends have to work harder to not be pigeon-holed (i.e. go back for MBA's or Masters).
First of all, I suspect you'll get a fair number of comments arguing against attending a liberal arts college. You're asking a Slashdot audience, so approach such comments with caution.
I've interviewed and hired some employees, and I have also interviewed dozens of students applying to one of America's most elite universities for admission (or much more often rejection). (I also had a similar decision to make at age 17.) Above all else I look for candidates who can learn quickly and who can communicate well. That second attribute is arguably less common among graduates from technical institutions, but communication starts with your resume (or a campus recruiting event, or whatever), not with the mere identity of your college, so I keep an open mind and would invite you to an interview if the signs are otherwise positive. I also look for inquisitiveness: are you a person who is inherently curious about the world? I look for other attributes, too, but those three are priorities.
But even before you get to an interview or apply for a job, do you know what you want to do when you grow up? A lot of prospective college students are not sure, and many or most change their minds. Some colleges provide more options than others if you do change your mind. I would recommend using college as a vehicle to explore your curiosities. That journey of exploration builds confidence, and confident, thoughtful people often interview better. If you are already sure about your path, great, go chase your dream. If you are not, then go explore what fascinates you to build your dream.
Good luck.
Good programmers are largely self-taught.
It may be useful to hang around with other people at a university so that you can compare yourself with them and decide where you fit.
I went to the best tech school that accepted me (Rensselaer). I have this piece of wisdom to pass on: choose a school that's near a beach--Miami, California, whatever. The climate should be temperate all year round.
I went into the Air Force after I graduated, and since then, only one employer was impressed by the fact that I graduated from Rensselaer.
I would, however, suggest that you try to get a technical/engineering school that meets the above requirement of beach-i-ness.
To some it may seem like this post is meant to be funny. It's not. If I could do it all over again, I would choose the best technicial university that's near a beach in a temperate zone.
Check out Chad's News
Since you will be coming right out of school, you may not have much practical experience when it comes time to see a full-time job. This is to be expected, but there are a couple of things you can do to make yourself stand out:
1) Seek a good internship/coop that allows you to develop practical experience. Many of these are one or two-semester gigs (or one or two summers). When I was in school, I had a 3.5 yr coop which was basically a long-term relationship with a local employer. That was hugely valuable, as by the time I graduated I had a ton of experience (even leading small projects). I would have gotten a full-time offer had that department not been closed down shortly after I left.
2) Work on some interesting hobby projects. School projects are often an interesting spring board, but consider ways to apply what you are learning to scratching some itch.
Personally, I don't give the candidate's school a whole lot of weight. Maybe it gets my attention when looking at a sea of applicants, but I consider each applicant on his/her own merit as demonstrated by the resume, cover letter, and other submitted materials. The most crucial aspect of the whole process is actually the on-site interview. Everything else is just a screening mechanism.
What I look for most is what Joel Spolsky from Joel on Software refers to as "Smart and Gets Things Done." For me, that means someone who is interested in programming because they think it's cool and provides an outlet for creative problem solving, and someone who has demonstrated an ability to tackle problems in the past.
Therefore, I would recommend that you choose a college based on the total experience you will get. Consider everything college offers: learning about a lot of topics, meeting new people, exposure to new ideas, a new level of freedom and independence, moving to a new place to be exposed to new culture, etc... Many of the classes that had the most impact on me and were most memorable were far outside the CS curriculum. Consider what opportunities are available there with each school. Think about what it will be like to live in each of the cities the colleges are located in. Think about what there could be to explore and discover there. Choose the school that is best for you on all of those fronts - don't limit yourself to just choosing a CS program.
In a few years where you got your CS degree won't matter so much, but the memories and experiences you got while in school will last your entire lifetime. Many of those experience will be unrelated to what happened in the classroom.
Far more important than the where, is the who...
University is about "networking"; building contacts who will help progress your career. The actual degree or even qualification itself are almost completely irrelevant. At Uni you are creating your "old boy's network". People who will later give you work contracts, quash driving offences, introduce you to politicians etc.
With that in mind you should take a look at the type of people going to each institution. Are they middle class, working class, wealthy etc. What are the entrance fees?
Deleted
1) Some companies look for someone from a good tech college. If they are doing resume mining you can be sure they aren't looking for U of Nowhere. Also for example my current employer has half its staff from the same school. They see the school name and have an idea of what someone graduating from there should know.
2) If you get a more specialized interest as you go through school you'll be more likely to find courses/research supervisors for your interest. If you are in a small faculty you might get lucky. But if you are in a large one you'll almost certainly have someone in any niche you are thinking about.
3) You'll get a wider peer group from which to use for future job info, business partners etc. Plus in a small school you might date the one girl in your program and have it not work out. At a big school you can choose between several geek girls, or go to another department.
4) You also can be more selective with your friends/project team mates, you don't have much choice with a small program because either you will clump up with a couple people and do projects together, or some other group with form and force you into a group by default. You don't want to be forced to work with people you can't stand. It happens enough in the real world why experience more of it than you have too? ;)
It seems as if your decided on CS for a degree. While many people have posted on the additional experiences and opportunities that you could have by going to a school that will likely focus more heavily on required classes from outside your chosen degree path, I have yet to see any posts on another important factor: How broad is their CS program?
I went to a college that had a smaller CS program, but it was decently broad in nature. By the time I got to the 400-level classes there were 15 or less people in each class, but the classes also represented a great number of sub-fields in CS; from advanced classes in AI, Distributed Computing, and Signal Processing to a number of more esoteric courses they were trying out in web and 3D modeling. Not to mention the ability to pick up business classes or additional math or science classes (or even Liberal Arts courses) that could allow you to pick up a minor or further explore another interest.
If your primary goal is a CS degree, I agree that it rarely matters to an interviewer where you received that degree (though it does matter on occasion). However, the breadth of courses available from the institution and the number of classes they will _allow_ you to take from your major (as opposed to required credits from other branches and required elective credits from other branches) are going to have an impact on the level of knowledge you attain and the number of sub-fields you will get to explore. Additionally, you should look into how much the school supports internships. One of the things that helped me best during my college education was the fact that I was working for pay on real projects, which then gave me a different perspective on the course material.
Also, if you are considering a highly recommended liberal arts school and a highly recommended tech school, why not look at one or two state colleges that have good CS departments? The price range (even out of state) may be in the same range you are looking at for that liberal arts college, the fact that it is a state school will likely have brought in students for a wide variety of degrees, but (if you use CS program quality as criteria) there will also be a greater breadth of CS classes available, allowing you to learn about multiple sub-fields to better determine where you would like to go in CS.
Whee signature.
I don't think that you've emphasized the *fun* part enough.
Don't get me wrong - half of college is about working your ass off, sleeping in the lab and submitting term papers 38 seconds before the deadline after having worked on them for three days straight (what smells like coffee and bacon?).
But the other half of it is meeting people and becoming an adult (if one is so fortunate as to be attending college immediately after high school in the conventional manner). If you have time, join any and every student organization that interests you - even if it doesn't fit your major. Talk to people. Make weekly attempts to eat the entire two pound burrito (goals are important). Wear sunscreen. Et cetera.
When you look back on college and don't chuckle out loud, then you didn't do it properly. You only get one chance.
More
Long term, your liberal arts college is probably going to give you a broader education, and set you up for a quicker career path to management, starting your own business or other broadening out from plain development, if that is what you want. It'll also offer more opportunities for liasing with hot chicks during your college years, which is not to be underestimated.
Short term, you might find that the initial job offers immediately after graduating offer better salaries, or are more forthcoming from the tech focused school, but that's more difficult to predict, and it could just as easily swing the other way.
Or at least took the time to teach themselves algorithm analysis, data structures, some higher math, and some functional programming.
There's a lot of really good self-taught programmers out there, and they can write some pretty cool software. However, the truly elite programmers are the educated ones that can understand the principles that make it all work.
The really good employers know this. You're not going to get the plum job at Google unless you know what a fixed-point function is and what it's good for. Fog Creek Software doesn't want to hire you unless you really understand pointers and recursion. There's really neat jobs at Sun Microsystems that need you to DEEPLY understand object-orientation and algorithm analysis.
The number of people that can learn that stuff on their own is vanishingly small. Even if you can learn it by yourself, there's nothing like going through a rigorous 4-year program where you have these topics stuffed down your throat and drilled into you until you know it backwards and forwards. A good CS degree practically guarantees that you'll have a suite of kick-ass high-level skills by the time you graduate.
Yes, a good programmer will teach his (or herself) on a lot of topics. However, for many things there's just no substitute for a good old education.
This
Do you want to be a sysadmin (face it, you can go to Devry and do that job competently),
I was going to call you an idiot, but then I read the rest of your post, and it's entirely correct. So I am going to assume that by "sysadmin" you in fact meant "reboot monkey" and didn't feel like typing the extra characters.
I make six figures for doing sysadmin-type stuff for Very Large Companies with Very High Availability Requirements. Trust me, kids from DeVry don't and can't do my job. A good sysadmin needs skills from all three of those domains that you mentioned. There aren't a lot of people who can do that.
Aside from that, though, great post. Listen to him, article poster. Two supplementary notes:
1) Some companies and HR departments (mostly larger ones) do care about your GPA, so keep it above a 3.0 at minimum. 3.5 is best, but not always possible.
2) If your transcript, recommendations, and GRE scores are good enough, grad schools don't care where you went to school either. I went to a small Midwestern college because I wanted to be able to talk to my professors face-to-face. I graduated valedictorian and got in at every grad school I applied to, and I applied to the best programs in my field.
Finally, remember that you can always transfer. And if you're not happy with the place you choose, for God's sake, do it. Life's too short to be miserable.
Agreed, but the piece of paper called a diploma is not coveted for it's face value, rather, it's coveted because it shows the hoops its owner jumped through to acquire it.
Recommend that you look more into a Business Degree vice a CS Degree if you want to be eventually become an executive. Having a GEEK engineer degree is admirable but be the person who leads the Geeks is paid more.
Semper Fi Ronald Ausman USMC Ret
Remember that the point of attending a university is to get a *well rounded* education. A university is not a technical school and (surprise!) most of life is not programming. One of the most valuable skills you can gain is the ability to express yourself clearly, something that will serve you well regardless of your eventual choice of career.
There is a strong possibility, even a probability that you will not be programming for your entire life and you will need a skill set that serves you far beyond the technical focus of your major. As someone with some (limited) experience interviewing job candidates, IMO the ability to be thoughtful and articulate will serve better than narrow technical skill.
You have the rest of your life to gain technical skills, which in CS are constantly changing. Don't train yourself to be a specific cog in a machine, instead try to gain the ability to handle a wider variety of tasks.
I have mod points. The reign of terror begins now.
1. Self-sufficiency. You need to be able to manage yourself and your affairs. Eating meals, prioritizing work, rest, exercise, and social life are all managed activities which your parents have been your partner with up til now. In college, you become your own ideal parent. You also learn to manage success (no gloating), failure (no despondency), disappointment (no self-pity), and courage (no quitting "just because").
2. Interpersonal relationships. You need to be able to navigate and function in a complex world, filled with a large variety of people. You'll learn better how to deal with people who are smarter, better-looking, more talented, less sophisticated, less academic, narrowly focussed, and weird. That's real life and you'd better have a sense of who and what you are to be able to develop and understand relationships with every one of them. And some of those people will be your professors, some will be other students, and some will be the people you meet in the college town. After college, they will be your boss, your co-workers, and your friends.
3. Individuality. Part of who you are is based on the history and perspective of culture, both your own and that of others. Your individualism is enhanced by understanding what has stimulated or constrained development, so that you can recognize, and then reduce or enhance, those cultural effects on your own development. Learning to "be who you are" is not easy.
4. Academic discipline. It is important for you to find something that captures your dreams, your aspirations, your interest and your commitment. To engage your mind in exploring some facet of life (whether english literature or computer language theory) creates a lifelong pursuit that becomes uniquely you. This study also gives you proficiency in recognizing and dealing with the unknown, and then applying your energy to learning what you want or need to know.
5. Job skills. The most important job skills are listed above, in order of importance. This last category includes the non-technical (writing your ideas clearly, speaking articulately, organizing and categorizing information in a meaningful way) and technical (both historical and current theory and practice of your chosen discipline).
6. Specific knowledge and practice. You'll learn the foundation in these areas, but they are also the most ephemeral part of your college education.
So, evaluate yourself. Where are you in these areas and where do you want or need to grow the most? Then ask, which of my college choices will give me the most opportunity to develop?
People who are excellent at programming are like people who are excellent at a lot of other things - they started doing it well before college.
How many athletes do you know who started playing a sport in college? How many musicians? Even things like Chemistry, Math, Medicine, Law - you started learning the basics of those careers in junior high and high school.
Programming isn't any different. People who are going to be great at programming started doing it in high school (or earlier) and are going to get a more structured education out of college. I already knew how to program before I got to college, but I learned a lot of stuff I would not have learned on my own by going - and I wasn't even in a straight CS program.
Someone who shows up at college with no programming experience is likely not going to be a GREAT programmer. It's too late. They're competing against people who have been programming for 4, 5, 6, 7, 8 years. It's too much of a head start.
But, there are also plenty of people who do not go to college who are SHITTY programmers. Oh, sure, they learned how to do some things on their own, but there's also a big pile of stuff they never learned. And worse, they don't even realize how much they don't know.
Education is a good thing. You learn a lot faster when information is given to you than by discovery.
So, to the topic at hand...
Go to the liberal arts school. Learn the theory. Anybody who isn't an idiot can learn software syntax. As far as employment goes, most people who get great CS jobs out of college get them based on the projects/open source work/internships they did in college. Education teaches you how to work better, but you prove you can work well by working.
And, as mentioned elsewhere, bonus: Girls.
paintball
I'm at a liberal arts school and I spend far more time in these ridiculous liberal arts class than I do in my CS classes.
The flipside of that is, I went to more of a respected engineering-ish school and I spent more time in physics/chemistry/engineering classes than in my CS classes. For the kind of work I do, honestly, more of the liberal arts would have been more useful. Being able to write and express your ideas clearly is of immense importance to anyone with a CS degree who wants a job that can't/won't be outsourced.
"Remember that the point of attending a university is to get a *well rounded* education."
No, no it's not.
The point of university is to totally immerse yourself in your chosen subject. See European universities for examples of how this really works. You spend three or four years doing nothing but what you signed up for. Far better use of time.
"As someone with some (limited) experience interviewing job candidates, IMO the ability to be thoughtful and articulate will serve better than narrow technical skill."
Whilst being articulate helps, you've clearly never hired a software engineer. Some narrow technical skill is EXACTLY what will get you the big money in software, and what will get you hired over and over. Having a general understanding of computers and an intimate knowledge of how they work (plus language theory and a wide exposure to different languages) is also a good thing.
But studying arts/humanities alongside? Waste of time. You had high school for that.
I used to carry a bottle of whiskey for snake bite. And two snakes. -Nefarious Wheel
The only problem with that method, is once you leave school, it's really, really hard to go back. I've been trying to get myself to go back to school for about 8 years and it hasn't happened so far. I always come up with excuses not to...I'm too busy at work, I can't afford it right now, classes will interfere with WoW raiding, etc, etc, etc....
Don't spend your life working for someone else. It's a horrible experience now, and it's only going to get worse as corporations expand their control. Start your own company and work it from a young age and you'll be much better off by the time you're 30. If the original submitter is the entrepreneurial type, then this could be partly good advice. But how can you be so goofy as to suggest he pick something so unrelated to what are his apparent interests? If he wanted to be in construction, plumbing, or electrical work, then he would already be in it. While those trades can result in a good living, they are also freaking hard work.
Since this is slashdot, I feel justified in psychoanalyzing you just from this one post.
"Rub her feet." -- L.L.
I think my subject spells it out. The term "IT" is often used as an umbrella term to describe any kind of job related to computer technology. On the other hand, sometimes it specifically means Network Management, or computer-related jobs that are not the core function of the company (for example setting up their public web presence). I work for a software company. I am in Development, not IT. There is an IT group that manages network infrastructure. There is a separate group that manages the company's public facade on the Internet. I have nothing to do with either.
All that said, I'd still also say that the quality of either job, IT or CS, depends on the company. I believe the IT and Web people where I work are much happier than typical IT and Web people elsewhere.
RETURN without GOSUB in line 1050
I think a Lib. Arts degree has great merit, but the submitter has a much better chance of getting a good education at a highly-rated technical school. You learn a lot just by being around other people who know more than you do.
Except people skills. People skills are more important than ever in an outsource-happy world. If you are so annoying that people only want to contact you via email, you might as well be in Bangalore.
There are a handful of techies who are so smart in a given area that they are indispensable even with poor people skills; but at this point in your career, you don't know if you will be one of those exceptions. Thus, people skills are the better bet in my opinion. Unfortunately, selling the mouse trap is just as important as making a better one, if money matters to you.
Table-ized A.I.
There are lots of good comments here and I think one can make a strong argument for either type of school. It really comes down to your life goals.
But here's the kicker. You probably don't know what your life goals are yet. None of us really do because our lives are ever-changing. What's in our interest today may not be in our interest tomorrow.
I went to a strong liberal arts school that also had strong law and businesses schools and decent, but not top-tier science and engineering schools. For me this was the right choice, though I didn't realize just how right it was until years after I graduated.
For a lot of people, college/university is a change to widen horizons. I did some of that in college and even more in grad school. I majored in engineering in college but because it is a Catholic liberal arts school, I was required to take theology and philosophy as well as seminar courses. This helped me out a lot in later years as I became a better writer and more in tune with my strongest values and beliefs. These liberal arts classes teach you how to logically form arguments and debate. They're not the end-all, be-all but there are a good foundation to build on.
I decided to go to a top engineering school for graduate work. That's almost a necessity. The combination of the two schools has been very good for me. In graduate school and in work life afterward, I became very interested in politics and getting involved in public life. The one course I wish I had taken is political science. It probably should be required in this country (the U.S.). The liberal arts education allowed me to quickly get up to speed on political life. Yes, anyone can get involved but if you have some sense of history and philosophical thought you can connect more readily with others around issues, debate and be effective. Politics requires reading, forming relationships and having an awareness of what's come before. Liberal arts courses help train you for that.
Now, that's been important for me. I think it's important for everyone to at least be somewhat involved in politics and public life but not everyone will be as deeply involved as I and others are. What the liberal arts give you is flexibility. You'll learn skills that are widely applicable.
I believe training in the fine arts is important for an engineer. That doesn't have to happen in college. Taking lessons on a musical instrument when young, learning to paint, etc. will exercise the creative part of your brain. Engineering is as much art as science. It's a crime that arts are the first thing to go during budget cuts at the local school level.
And PLEASE, take a writing course (unless you test out). I can't count the number of times I've cringed at how engineers write. This is a supremely important skill to have. You need to be able to communicate effectively if you're going to form productive working relationships with your fellow engineers and especially with management. If I had my way (which I don't yet), I would require interviewees to submit some kind of essay just to be able to gauge where they're at with this skill.
Finally, one of the most useful things I was ever directed to do in an engineering class is to read "Soul of a New Machine." The book is an eye opener. I've always remembered the scene where Tom West is interviewing candidates and asks them what they do outside work. If any of them answers "computers," they go to the bottom of the candidate list. Well-roundedness and the ability to get away from work is important.
"- Computer science is changing very quickly. What is being taught now could be completely irrelevant in 15 years. Aggressive technical exposure might not be as valuable as you think."
No it's not. Pick 10 random EWDs and see how many of them don't still apply today. If you're actually being taught computer science, the info you're learning should be useful for a very long time.
"Show me". (For those from outside the US, Missouri has the nickname, "The 'Show Me' State"; so, saying you are from Missouri means you care more about someone showing you something than telling you about it). I can't speak, really, for what all employers are looking for, but my experience so far has demonstrated to me that most people are like the parent. They want you to show them you know what you are talking about, and are qualified to do the job they are hiring you for, and really don't care that much about *where* you got a degree.
Heck, right now I have a great job I got by impressing the interviewer, and by having good references from previous employers where I did good work, and I don't have a degree (yet - working on it). Granted, I'm doing Tech Support and QA, not development at this point, but I still think the point is valid that you can get any job that you can demonstrate competence at.
That is the crux of it, so my suggestion: wherever you end up, do something extracurricular that shows your competence. E.g. Work on an Open Source project that interests you, and document every contribution you make. Or, if not open source, start up/join some sort of student development group at your Uni and work on a project. Or enter some programming contests - even if you don't win, if you create good submissions, and hold on to them, you can show them to future potential employers. You might not even need to do something extracurricular - the school I'm currently at requires all seniors to do a project for graduation. I don't think it's just to make graduation harder - it forces students to take the time to do a project that they can show to employers after they graduate showing that they know how to apply the stuff they learned.
A lot of creative types - artists, photographers, graphic designers, writers, architects, etc, keep portfolios. There's no reason that CS majors can't develop their own 'portfolio'. Keep copies of assignments you are particularly proud of (you might not want to show employers your freshman year stuff, of course, but maybe there are some projects you did for Junior and Senior level classes that you think show off your abilities).
As for picking a school, that's a really hard one - something I've wrestled with too. Mostly, I've decided based on what's close and I can afford. But, if you have the luxury of making choices on less practical grounds, you might try to get a feel for what type of classes each offer, and pick based on which has classes that most interest you. Or, visit the campuses and try to talk to as many professors as possible - maybe sit in on a few classes to get an idea what each professor's teaching style is like. You can take the same class with two professor's, and have a dramatically different learning experience (my past two days of physics class has had one of the other professors teaching while the regular prof is at a conference, and I can barely understand the guy's accent, and can't make out his chicken scratch when he writes formulas up on the board, and I just generally don't think his explanations make a lot of sense - I'm *so* glad I don't have him normally - not that he isn't a nice guy, but I just have a hard time learning from him; whereas with the regular teacher, I do ok most of the time [admittedly, sometimes I have a little bit of a hard time following the math because he tends to go fast, but I pick up *enough* that I can make sense of the stuff in the book later]) .
Everyone's answer talks about which school will give you the best or most interesting education, the best social experience, the best resume for your first interview, the best networking to get you your first job, blah blah blah. Young punks, looking at the short-term picture.
Ten, fifteen years from now, you're going to start having really great, innovative ideas you want to develop on your own, away from your employer; but by yourself, you won't have all the different technical skills you need to get the job done.
If you went to an MIT or CMU, you're going to know half a dozen people with the complementary skills you need to get the job done and get your idea into the market. If you went to a liberal arts college, you're going to sit around on your ass muttering about how you could have made a million off this one great idea if the deck weren't stacked against you.
There's a reason technical school graduates keep cranking out innovations, and it's not the great education, nor the old party line about having the right connections for great opportunities or venture capital. It's about having the right connections to do absolutely anything they can imagine. Everything else follows from there.
I went to school at MIT, and yeah, I had a 4.0 (A's are worth 4 points at MIT) GPA --- but I also had a minor in economics, and took classes such as Law for the IT Manager from the MIT Sloan School. I also was an officer at the MIT Gilbert and Sullivan Players, the MIT Student Information Processing Bureau (the MIT computer club), the MIT Lecture Series Committee (which shows 35mm movies to subsidize lectures by people like Leonard Nimoy, Dr. Ruth, Jacques Costeau, etc.) and the MIT Episcopal Chaplaincy.
What I found that was important --- studying with lots of smart people really challenges you, and makes you put in the extra effort so you can minor in student activities _and_ still hold down a good GPA. Learning computer science architectural lessons from older systems like Multics is very valuable; much more so than learning the syntax of C or Java. Learning how to schedule workers for the refreshment committees, disassembling and cleaning a soda machine, and figuring profit margins on soda and popcorn, does teach you many valuable lessons in the real world. So does taking classes in economics and law; just as much so as learning how to build a computer using a breadboard, wires, and 74xx TTL chips.
The important thing to remember is that you can get a very broad based education at a technical school, but you have to reach out for it. I would be very dubious about a school (liberals arts or not) that concentrated more on math theory than CS architecture. Learning on the past mistakes and success of real-life operating systems is valuable. I'm not so convinced about learning about type theory and type functions. Most good technical schools will have clases in IP law, negotiating, economics, and those are very much good things to learn. In particular, if you don't know how to read a balance sheet and a profit and loss statement before you leave college, do take the time to find out. It's useful in so many different contexts....