views:

579

answers:

7

I am in the process of researching computer science masters programs and need some help with picking a program. I graduated with a BBA in Business Information Systems from the University of West Georgia in 2003. I never considered myself the "programmer" type but my work over the last 6 years has pushed me in that direction. I started out in an IT-related position and it slowly evolved into more CS-related tasks. My latest job is almost pure CS and I've discovered that I love coding and would like to formalize this into a MS in Computer Science.

I have been reading about programs a Georgia Tech and Georgia State and I would obviously need some remedial math. I'm pretty certain I could kill the GRE and my work experience qualifies as relevant.

  • Does any have any tips, advice, or suggestions?
  • Are there any "online" programs that are worth damn (I know most are rip offs)?
  • Are most programs full-time?
  • I also found a degree in "Applied Computer Science", anyone ever heard of that?
+5  A: 

Programming != Computer Science

Be very careful (and be aware) of getting into computer science to "become" a programmer. I have yet to see any college offer degrees in computer science where a graduate was made a good programmer merely by attending.

According to what I've observed, a computer science curriculum appears to be geared more towards learning about and improving how data flows, not about how to interact with those data.

UPDATE: My "how data flows" comment was along the lines of data abstraction, coercion, and management techniques that I learned in college, specifically data structures classes (though instructors in other classes provided insights into thinking about data and its relation to computers and technology). For example, I learned about red-black trees which provide an efficient way to store and quickly access data. I haven't used one since then, actually, but I'm better able to recognize when it's appropriate to use a data structure like that when necessary. And I didn't just learn how to create and use them, which is something that would be useful for a developer, I learned why they work, which is less useful for someone that just needs to program something and get the job done.

There were other courses that I took that that did not pertain directly to programming but that showed how things work (computer security, networks, human-computer interaction, etc.). For the most part, college offered a decent introduction to programming but seemed a bit too theoretical at times. (I got a BA in CS, by the way.)

I guess the main problem I had with the curriculum is that there seems to be a disconnect between academia and the business world. For example, I did not hear about or was even made aware of concepts or methodologies such as UML, team-based programming, test-driven design, Agile, etc., etc., until after I graduated (and mainly from sites like this one). College not only did not prepare me for these things, they acted as if they did not even exist. It's almost as if it is more important to "think big thoughts" in school than it is prepare oneself for a career in one's chosen field. Very frustrating.

Michael Todd
Could you clarify what you mean by "improving how data flows, not about how to interact with those data"?
Agor
Michael, Without an understanding of the CS theory behind your coding practice, you run the risk of becoming nothing more than a Cargo Cult Programmer - http://en.wikipedia.org/wiki/Cargo_cult_programming.
MagicAndi
I'll agree with that, but I know some "Cargo Cult Programmers" who have a BS in CS, so "learning" the theory may be necessary but it isn't (apparently) sufficient.
Michael Todd
Well, university is not vocational school. As you said, computer science ≠ programming, so you shouldn't expect them to teach only what would be most useful to a working programmer.
ShreevatsaR
A: 

I have my Masters. The classes took work, but the hard part was the big project and the accompanying paper. Work consistently on the paper or thesis you have to deliver.

Lance Roberts
A: 

The first question would be "Why do you want an MS in CS?" There is much debate as to whether a degree is even needed for computer programming jobs.

http://stackoverflow.com/questions/116436/how-important-is-having-bscs-as-minimum-requirement-for-new-programmer-hires

http://stackoverflow.com/questions/191302/does-it-matter-where-you-get-your-cs-degree

If the answer is still you want to go for it, then consider what you want to learn. It is somewhat simple to get a pretty good idea about the program online. One of the biggest things to consider is whether you want to be taught programming theory, or get real world examples. I know that my BS was mostly Theory, and I was somewhat behind in experience because of it. However, years later I am somewhat grateful for this experience.

jW
+3  A: 

If it's programming in industry that you enjoy, then surely you want to pursue Software Engineering, not necessarily Computer Science. In fact, I claim Computer Science has little to do with Software Engineering.

That being said, Carnegie Mellon has an excellent Software Engineering masters/PhD program, and I would certainly take a look into that.

Oh, as for a tip, look into Software Engineering programs, and at the very least look at Computer Science programs that offer Software Engineering-like courses. You'll find them to be closer to what you've done in the real world.

AlbertoPL
Not all programs make the distinction between Software Engineering and Computer science.
Alan
But there is a distinction, and the asker would want to take courses with a slant toward SE.
Thomas Owens
@Alan - unfortunately so. I'm hoping as the industry matures the terminology follows suit. According to the real world we're all IT professionals...
AlbertoPL
+1  A: 

More than likely, because you do not have a formal education background in CS, you will need to take several undergrad classes in CS to build the necessary foundations for a MS in CS. Every MS program I know of assumes a thorough understanding of the basics. In order to be a competitive candidate in a program you will need to have these basic courses in your belt:

  • Data Structures
  • Algorithms
  • Operating Systems
  • Computer Architecture
  • Programing Language and Concepts
  • Plus a series of Math classes related to CS

There are plenty of programs that will let you take the necessary undergrad courses as part of your program, but understand that this will cause you to take longer, and it may make you a "weaker" candidate compared to undergrads that have some background in CS.

As far as programs go, it depends on what you want to accomplish.

If your goal is to learn and broaden your skills, and you can learn effectively via Online, then online courses are fine.

If you want something to bolster your resume, then a traditional degree program might be better.

Many schools offer part-time "Professional" programs which allow you to continue to work full time and attend school.

Alan
A: 

I can't address all of your questions but I do want to address the one of Online programs.

I currently am attending a Chicago based university called DePaul using their distance (Online) learning option. (Really, I'm a distance and on-campus student but thus far, all of my classes have been online).

The program is good but I understand you need to be in the area to utilize their online services as you sometimes need to go to campus for a test or whatnot. But there are good online programs out there if you desire that.

I didn't select DePaul for my M.S. in Software Engineering degree because of the online but it did help.

Also, the program (on campus or off campus) is either full or part time and the program is exactly the same on or off campus. In fact, there are in-class students with the online students.

Also, (and I hate to say it) but this question has been asked to death. I even asked it! :-) Search the site and you might find detailed answers to your questions.

Frank V
A: 

First of all, there is the question of whether you should be doing a Masters in CS as well which has been mentioned above. For programming you probably do not. CS education is more about math than programming. And in fact it doesn't encourage good habits mostly. There are some software engineering classes. But more standard fair is that you get a programming project and have to solve it. Whether you make an unmaintainable mess or not, they don't care. And they don't give advice on how to fix it really. Also most programs are on the small side short of a project. Finally as has been mentioned a Masters degree expects a certain amount of knowledge coming in. If you don't have it, they'll make you take bridge classes. Really you might find the bridge classes give you all the knowledge you need and you don't need a Masters degree at all. You may also find the community college has enough classes to teach you what you want.

The masters is mostly just an extension of the undergraduate degree in CS. In the core classes (Algorithms, Architecture, Operating Systems, Networking, [maybe Databases or Programming Languages depending upon the program]) you mainly go over undergraduate stuff although at a faster pace and maybe with a bit heavier emphasis on math/proofs/etc.. Also as mentioned most programs expect you to at least know Algorithms, Operating Systems, and Architecture (or at least computer organization) to a basic level before they'll even let you take classes. So you will end up with undergrad bridge classes. So for the core subjects you don't necessarily get more knowledge, just a few bits here and there.

The real value of the Masters degree is the electives. As an undergraduate you probably spent 1.5-2 years doing general requirements of the college. Then there is a ton of math for a CS program (Calculus for the long haul, discrete math, linear algebra, etc.). When it is all done you get the core classes and a few electives (maybe 1 semester worth of CS electives if even that). There are MANY different areas in computer science. The graduate program is all about Computer Science, so you have a few core classes (maybe a semester) and the rest is all electives. Want to learn about Information Retrieval, Artificial Intelligence, Data Mining, Image Processing, Distributed Systems, Cryptography, Security, Network Architecture, Machine Learning, Compiler Theory, etc. then the various electives might be what you want. The Masters is a way to get breadth in your computer science education, exploring a bunch of areas.

Now how to pick a program is another story. Many programs have enrollment problems, so though all these "cool" classes may appear in the catalog, but the reality may be that many are never offered or are offered and canceled due to low enrollment. Core classes are usually guaranteed to run. But if you have to pick 4 of 5 classes as a core or something like that, it is possible one of them won't run. In my case you pick 3 of 4 for (Computer Architecture, operating systems, networking) and you must pick Algorithms. So the class that never runs is Architecture which is one of the ones I wanted to take. Artificial Intelligence is finally running but for 1.5 years it did not run even though it was in the catalog. Basically you need to make sure that the courses you want to take are actually successfully scheduled. And even then there are no guarantees. Some schools have specializations (things you focus your degree on for a few classes, like a mini major within CS). But you'll need to make sure the classes required for one you are interested in are offered.

Another thing to look at is full time or part time. Some programs offer required courses only in the day, so you cannot do them part time without getting time off. Others offer all required courses at night/online and enough electives that you can get the degree part time. In my program almost all classes are offered at night so it is perfect. And if you are working, driving distance matters as well.

Also another thing is how to get the degree. Often you need a project (with report), thesis, or a course only option where you take more courses. Not all schools offer all options.

Anyway you can look at some syllabuses for different courses and see if you are interested. If you were going for a PhD you'd probably want to check up on the department/faculty. But the Masters is more about you doing the studying/reading and teaching yourself. Even a lousy professor is no big deal really. But if it is important that you get good teaching professors start going through ratings on the various teacher rating sites.

Also make sure it is accredited properly. Otherwise the degree won't count. You may want to try http://www.gradschools.com/search-programs/computer-science to find one.

And finally not all are priced the same. Most are super expensive. It seems inflation sure hit college prices. But in general a public state school is way cheaper than a private school. Still you have to shop around. Often for a Masters there is not much financial aid available, especially if you work.

Cervo