Computer science at a community college
June 1, 2011 12:19 PM   Subscribe

Can I get a useful computer science degree from a community college?

I am a 22 year old college dropout of a liberal arts college looking to get started again. The only math course I took there was Algebra 2, and I did well in high school math. I've been interested in web development and programming for a while, but my limited experience with various books hasn't really gotten me anywhere. I'd like to get into something more structured, but I'm trying to be more careful about choosing my education than I was the first time around.

The local community college (College of DuPage, if that helps anyone) has something of a good reputation, but their computer science course catalog doesn't have exactly what I'm looking for (Two languages I want to learn, C and Ruby, aren't offered. While I probably could learn Ruby on my own, from what I've read learning C seems important).

Am I being too picky? Also, is it reasonable to expect a two year degree to give me a lot of what I'd need to know to make things on my own or get me a comfortable job (meaning able to support bachelorhood, I'm not looking to take over the world)? I'd also really like to hear from anyone with experience with these kind of schools in the US.
posted by The Devil Tesla to Education (21 answers total) 12 users marked this as a favorite
YMMV because we live in a completely different area, but my friend has an associate's in programming (I forgot the specific degree name) and ended up going back to school for a bachelor's because he was unable to find a job with it.
posted by biochemist at 12:42 PM on June 1, 2011

Useful Knowing something about computer science?


Emphasis on the use of vectors, pointers, dynamic memory, lists, iterators, stacks, queues, linked lists, binary trees, associative containers, hashing, sequential file access, direct file access, recursive algorithms, sorting and searching techniques

Is more important than learning C or Ruby, in terms of CS.

The rest seems very, very applied. This is a Computer Information Systems program though.
posted by Ad hominem at 12:44 PM on June 1, 2011 [2 favorites]

Best answer: So I don't have experiences with those kind of programs, but I do have experience interviewing and hiring programmers.

Most (but not all) companies don't care too much about your degree. I work with people with no degree at all. So it's really about getting the right skills (which is good for your situation).

As for what to learn --- frankly I think the most important things to learn in a more formal academic setting are things like algorithms, data structures, etc. And probably at least 1 language. But you can then go learn other languages on your own, that part is easy.

As for C --- I don't think it's important at all. C++ is just as useful from the "needing to understand low level" point of view.

For example -- I think 2541 and 2542 on that list look like excellent courses. C++ and data structures/algorithms, thats the kind of solid stuff that will help you both in interviews and in your job.

(on preview, Ad hominem seems to have noticed this too)

The more applied stuff doesn't hurt, but this is the stuff that people don't tend to get outside degrees, and that is important in interviews (you tend to get a lot of algorithm / problem solving questions in interviews).

A bachelor's degree helps. Better known schools help. Of course these things are true. But they are not _necessary_. If you end up being very good at programming, you should be able to be successful anyway, given the overall lack of programmers.

Of course this also depends on the market. In the SF Bay Area there are not enough good programmers. But in Random City, USA there might be.
posted by wildcrdj at 12:47 PM on June 1, 2011 [4 favorites]

C++ and data structures/algorithms, thats the kind of solid stuff that will help you both in interviews and in your job.

Agreed, a lot of interviews will focus on data structures/algorithms and it will really help if you know that, especially if you have implemented them yourself as part of coursework.
posted by Ad hominem at 12:51 PM on June 1, 2011

For a technical degree you might want to check out a technical school like ITT.
posted by radioamy at 12:53 PM on June 1, 2011

doesn't have exactly what I'm looking for (Two languages I want to learn, C and Ruby, aren't offered. While I probably could learn Ruby on my own, from what I've read learning C seems important).

You should perhaps look more widely at CS programs to understand what you are getting into and what you actually would want. Learning languages is not really part of a CS degree, it is basically just something you have to do along the way in order to deal with the actual content of the degree. But, the program you link to is also not a CS degree and would not substitute for one in the eyes of an employer -- it is a very applied vocational-ish program that lacks most of the core curriculum of a CS program as far as I can see. For instance, there appears to be no algorithms class (with some basics covered in the data structures course, not a substitute; algorithms is probably the single most important class in a real CS major), no AI class of any kind, no theory of computation class of any kind; there is at least an abstract OS class to balance out the zillion useless (for CS purposes) applied OS classes they have. I suspect a lot of those classes are really aimed at people whose employers are paying for a night class to brush up on unix or whatever. For comparison, take a look at UMass' major, which is fairly representative I think. I don't mean to be dismissive, I think a lot of the material in that program has its place in the world, but it is not computer science.

I don't see anything wrong with taking some classes there to learn programming or systems, but getting a whole CIS degree there certainly wouldn't accomplish what getting a CS degree would. It may well accomplish something in terms of preparing you for certain kinds of jobs, I'll let others speak to that.
posted by advil at 1:14 PM on June 1, 2011 [1 favorite]

No, schools like ITT have terrible reputations as degree mills with low employment rates.

I have had a bunch of friends go and get associates degrees at local CCs, and generally what works best is when they're supplementing existing skills with a definite goal in mind. For a few of them, it's been valuable as it's allowed them to get more current certifications and was paid for by their employers, and with a couple others it's been something that they do in order to more fully realize some other project that they're working on.

So rather than their associates degrees opening doors, the degrees allowed them to more fully utilize the opportunities that they already had.

(Or to get their parents off their backs as they dicked around in the basement. YMMV.)
posted by klangklangston at 1:20 PM on June 1, 2011 [2 favorites]

Seconding advil here: I'm in a CS bachelor's program and the courses listed in that catalogue have almost no overlap with the requirements for my department or any other CS department I've ever looked at. Here's what MIT, Carnegie Mellon, and Stanford think a CS major should know.

(I don't go to any of these schools, but they are very well regarded and they list their degree requirements in a more human-readable form than a giant list of course numbers, unlike CalTech.)
posted by d. z. wang at 1:24 PM on June 1, 2011

To put this in perspective, a famous computer scientist named Dijkstra once said, "Computer science is no more about computers than astronomy is about telescopes."
posted by d. z. wang at 1:28 PM on June 1, 2011 [1 favorite]

I started to complete an associates degree program with a similar title. I heard about a job through a professor, applied, and was hired. I worked there for 3 years (, c#) and learned a lot, then convinced someone else to hire me (RoR) and am learning a lot more.

Looking back, paying the community college for the classes was ONLY worth it for the connection it provided me to get my first job. I could have learned everything in each class simply by buying the book that the class used.

But, taking this route, I learned only what I needed to do to complete tasks. I don't know computer science.

Here is an interesting question, and very helpful responses on Hacker News, dealing with someone who thinks his degree didn't prepare him as well as he would have liked.
posted by czytm at 1:30 PM on June 1, 2011 [2 favorites]

I have a high school degree. I'm a self-taught (web) programmer. (Well, my older brother—also a programmer, and also self-taught—helped me out a lot.) I've had no higher education, and no formal computer education.

I currently earn double the median income for my area (and I could be making more, if money were my primary concern). In my whole adult life, I've been on exactly one job interview that didn't result in a job offer (and that place wasn't a good fit anyway). And I've never had an employer question or balk at my lack of a degree.

I'm not saying that classroom study is useless—but it's entirely possible to be successful as a programmer without a degree. It's one of those disciplines that a person of the right mindset can teach themselves. (You may or may not be of that mindset. FWIW, people who are usually discover it earlier in life.)

Employers understand this. All they really want to know is whether you can produce results. There are self-taught programmers who are geniuses, and there are people with impressive-sounding degrees who just don't have the creativity / instinct / deep understanding that's required to produce great code. (And everything in between, of course.)

Learning C is only important if you intend to program in C. It's still a popular language for certain purposes, but there are scores of other languages. It's basically pointless if you're looking to do web stuff.

So, I guess that doesn't answer your question directly, but perhaps it helps put things in perspective. A degree certainly isn't going to hurt you in this field—but it's not at all a requirement, as it is in many fields.
posted by ixohoxi at 1:31 PM on June 1, 2011

Don't get stuck on a particular language. For ruby, any scripting language will give you the basic tools you need --- php, perl, python, or javascript. They're all very similar, and learning one will let you program in the other, given access to the docs and time. I learned ruby first and had no problem picking up python and perl.
posted by empath at 1:36 PM on June 1, 2011

To answer you question about community college, the degree is basically worthless. But taking classes in the basics, like database design, for example, will give you the basics of what you need to start learning how to program on your own.
posted by empath at 1:37 PM on June 1, 2011

Response by poster: You should perhaps look more widely at CS programs to understand what you are getting into and what you actually would want.

Thanks for pointing that out. I probably used the wrong term in my post, I understand that a two year degree in what my CC offers is different than what schools like UMass and MIT offer. I am looking into a more technical kind of degree like Computer Information Systems than full CS.
posted by The Devil Tesla at 1:42 PM on June 1, 2011

Here is an interesting question, and very helpful responses on Hacker News, dealing with someone who thinks his degree didn't prepare him as well as he would have liked.

I am pretty sure I posted in that thread, maybe not but I will say what I said on HN.

If you are going to be self taught, please learn data structures algorithms memory management etc. This applies even to web developers!

I recently had to fix an intermittent bug encountered by some contractors. They kept getting out of memory exceptions, seemingly at random. They thought they were fine, they had 4 gigs or ram in the box. It turns out they were creating a 2gb string, in C#. If they had taken even a few classes, they would know that a string is actually an array, and even in C# the memory allocated has to be contiguous.

So please learn that stuff.
posted by Ad hominem at 1:45 PM on June 1, 2011 [1 favorite]

If you're looking for a job as a working programmer, this degree will not help you; it will likely hurt you.

My advice is either to self-teach and contribute to open-source projects, or get a 4+-year education. MIT's OpenCourseWare is a good place to start if you'd like to go the first route; the second, others can speak to, but saying that CIS is a "more technical kind of degree" does not match with my experience of graduates coming from these programs.

What they believe—and what I hope you shy away from—is magical thinking about languages, frameworks, libraries, and the tools they use. Instead of understanding, they substitute blind experimentation; instead of debugging their programs, they substitute blame and bandaids; and instead of reasoning about working code, they substitute cargo cult programming, where various incantations are embedded again and again in their programs.

This rant assumes that you want to be a working programmer for (say) Microsoft, Google, or a startup somewhere in Silicon Valley. If you don't, I don't have any useful advice, since I currently am in this business and plan to stay in it for the rest of my life. It's incredibly rewarding (in a personal impact on the world sense), pays stupidly well, and has far fewer downsides as a "job" than many other fields.

The courses listed above (2541 and 2542 in particular) are good. The degree, as a degree that you put on your resume as an example of what you can accomplish, is not.
posted by Exonym at 2:53 PM on June 1, 2011

You're getting a lot of answers here which focus on your use of CS where you should be using CIS or IT. Sadly, the answer is still No. The computer industry is not as open as it once was, and in general you will need a four year degree or an extreme amount of outside experience in order to get hired*.

*Actually, this is a lie--it's just that the amount of outside experience you would need is relative to everyone else. In the past not many people had any outside experience. Now even my grandmother knows that the router is that blue box with the blinky light.

If you can pursue a Bachelor's degree, then community college is a good place to start without investing as much money, especially if you're not sure this is the field you want. The lack of specific languages is not a red flag, they use Java and C++ in some of the main courses and picking up C knowing those is quite easy. Just remember to check that your courses will eventually transfer to a specific degree program.

One last little side note, the first two years of many CS degrees are pretty sparse when it comes to actual CS courses since most of the interesting/important classes have four and five semester prereq chains built on the same few fundamental classes: procedural programing -> object oriented programming -> data structures -> computer systems/low level programming. IT and CIS degrees tend to have more degree-specific courses in the first two years, but still not that many. Colleges offering only two year degrees can't have any prereq chain longer than four semesters (by law, for community colleges in my state). That's why not many interesting/important classes are offered at community colleges.
posted by anaelith at 3:41 PM on June 1, 2011

The problem with CS degrees is that they teach "computer science" but most of the jobs are software engineering. The Dijkstra quote speaks to that - in his view (and the view of people with CS phds), computer science is a primarily theoretical discipline that happens to have a practical wing. But few schools do a particularly good job at preparing their undergrads for software engineering jobs. I suspect at some point this will shift, but at the moment I don't know where one goes to get a good software engineering education. All the good software engineers I know are essentially self-taught. They might have done a CS program, but the day-to-day skills that are important to them are almost entirely things they learned on their own.

So I would say a CC program is totally reasonable to get the theory fundamentals down. You will need to know a bit about data structures and some general principles to get started. But what's really going to matter is finding actual engineering experience. That can mean getting involved with existing research projects (perhaps rare in a CC context, I'm not sure), coming up with your own projects on the side, collaborating with friends on something, or getting involved in open source communities. Ideally, you want to find people you can learn from or learn with - it's hard to figure a lot of this stuff out on your own. Maybe there are some local tech meetups you could go to where you might find people with projects to work on? Even just having someone to ask stupid questions of as you're starting out is valuable, and you might find those people at your local school.

So bottom line is, as long as your program is about programming and not "IT", you'll probably get the fundamentals you need to get started. If you can just take those courses mentioned up-thread you'll probably be in a good place. To the extent that you can avoid courses that don't involve you writing your own code from scratch, you probably should. Just don't get bogged down, try to keep a clear sense of what you want out of it and focus on finding those experiences.
posted by heresiarch at 3:53 PM on June 1, 2011

This doesn't answer your question, but supplement your education with actual projects. Contribute to an open source project. Write an iOS or Android application. Write a desktop application or utility. Do something tangible that demonstrates your interest and your skill.
posted by cnc at 4:34 PM on June 1, 2011 [1 favorite]

Heresiarch raises a lot of good points. Although I will disagree and say that avoiding all non-programming classes isn't necessarily wise. I am sure there are classes that you can take that will teach you about internetworking and database fundamentals and other things that computer professionals are expected to know about.
posted by mmascolino at 6:28 PM on June 1, 2011

Understand that if you want to do anything with iOS you'll have to learn Objective-C, which isn't C and isn't C++ or whatever.

If you can get a chance to talk to the teachers and see what kind of assignments they give the students you'll get a better understanding of how well you'll come out of the courses with actual knowledge as opposed to grades.

My partner is a CS professor of many years, and as time has progressed, he's been dismayed to see teachers at various schools being more interested in assigning 10-line "projects" and multiple choice tests to students to test knowledge rather than giving them actual meat to dig into for projects and giving them real life collaborative situations as part of class assignments.

As a result, the students end up graduating having done a bare-bones minimum of "programming" but they don't come away having enough real experience with the kind of problem solving and project approach needed to be successful in the marketplace.

So, if you can, go in and talk to the teachers. Find out what they expect from the students and what the assignments will be like. If they seem like they'll be assigning projects which actually will give you some struggle and experience, then you'll be gaining something from the class. If they have tiny little projects and little quizzes, you probably won't actually learn anything in the class unless you apply yourself far beyond what the teacher requires to get a good grade in the course. (This makes it much more difficult to know if you're actually performing, because once you pass the "doing good" point in one of those minimal courses, there's nothing there to benchmark how well you're really doing.)
posted by hippybear at 8:06 PM on June 1, 2011 [1 favorite]

« Older Can you point me to existing data on Native...   |   Looking for a photo challenge community Newer »
This thread is closed to new comments.