Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Computer Science Curriculum in College

CmdrTaco posted more than 8 years ago | from the computer-science-does-not-mean-software-engineer dept.

Education 654

Ludwig Feuerbach writes "As it's back to school for university students, including Computer Science undergraduates like myself, I look at my course schedule for this semester and I have courses with titles like: Theory of Computation, Numerical Analysis, Artificial Intelligence, Machine Learning, and History of Economics from Plato to Keynes. The first 4 courses are required in my CS program. I had thought nothing of it until I read an opinion piece by Dan Zambonini, who stresses the type of courses I'm taking are, essentially, useless for getting a job. He lists several CS courses useful for a job. Is he right? I tend to think that an university education should stress scientific topics over vocational ones, but since I'm just planning to get a job after I grad, am I in the right program?"

cancel ×
This is a preview of your comment

No Comment Title Entered

Anonymous Coward 1 minute ago

No Comment Entered


no (-1)

Anonymous Coward | more than 8 years ago | (#13531685)

you are not. Many CS graduates these days are jobless because of programs like this. Switch to a vocational program while you still have a change.

Re:no (-1, Flamebait)

Anonymous Coward | more than 8 years ago | (#13531809)

Switch to using orthography while you have a chance, fagot.

Re:no (5, Insightful)

briaman (564586) | more than 8 years ago | (#13531825)

Whatever you do - don't abandon your course. The most common computer job is that of IT Support and Administration. This does not require a degree, any clown with an MCSE can work at this. It's what I do for a living so I know what I'm talking about here. I also know that jobs in IT are becoming less attractive as the number of potential employees rises and the number of available jobs declines due to better remote administration facilities and outsourcing of services. Over the next few years the postition of IT Support Engineer will reduce in standing until it reaches equality with that of building maintenance engineer. IT systems will be so common and transparent that they will largely be used without thought on the part of the users. In order to escape this you need a value added qualification. One that demonstrates the ability to think in a critical manner, perform research and produce technical reports that are accurate and comprehensible to a target audience, from lay people to experts. These reports are needed by companies and organisations so that their boards and committees can make sensible business decisions. A degree is absolutely the right qualification for your long-term employability. Nothing prevents you from getting an MCSE too.

Re:no (5, Interesting)

WindBourne (631190) | more than 8 years ago | (#13531864)

He is in the right program. A good Computer Science has a good to great theoritical underpinning. Look, the design paradigms will change. So will OSs. And the languages. and the DBs.

While 2 years ago, there were tons of CSers unemployed, so were the EEs and the CEs. Now, I do not know of any CSers that are unemployed. I do know of a LOT of CISers and vocational people who are unemployed. I also know a number of them have moved on to other professions because the industry has shrunk.

Basically, the CS/CE gives you the ability to do anything in the software world. The CIS/Vocational gives you the ability to do just what you learned. And back in the 90's, the CIS world was learning mainframes with Cobol, RPG, and PL1. Is that were growth is? nope. Has not been for sometime. Can these people move easily to Microsoft (where the most jobs are currently), or Linux (where all the growth is)? Nope. They do not have the underpinnings to make the jump.

if you want more vocation, plus a better chance (2, Insightful)

the_2nd_coming (444906) | more than 8 years ago | (#13531690)

for a job, then go into CIS.

it is oriented at getting the student to learn how to use computer systems found in business, how to create tools for those systems and how to manage and build on those systems.

Re:if you want more vocation, plus a better chance (4, Informative)

Anonymous Coward | more than 8 years ago | (#13531817)

Agreed 110% - Information Systems work IS the "steady-eddy/bread & butter" end of this field... & there is ALWAYS work in it.

No two corporate entities structure their data or use EXACTLY the same data (unless part of same company) typically, so custom information systems work (e.g.-> custom databases & such + reporting apps etc./et all) will always need to be designed & redesigned or added onto (or even modded/improved for changing conditions).

Another REALLY useful (imo) course, is "DataStructures" if it was not included in said list from the URL document: It teaches you a great many things & patterns of thought (such as which types of sorts to use, when, & with what datatypes & sizes of sets to sort thru, as one example of what you acquire/learn from it).

How much of it do you REALLY use in IS/IT/MIS work? Not much, but it is a GREAT course for anyone into computing imo!

* :)


P.S.=> The reason I agree SO strongly with the init. poster & his comment of:

"for a job, then go into CIS."

I assume he meant information systems work/databasing in general (often called "data processing" as well)... I have made more than a decade worth of money from it, for the very reasons I state above:

Sometimes, there is NO "canned/prebuilt/turnkey" instant solution out there for various enterprises out there or their data - you HAVE to build them, for them! apk

Regarding the purpose of a higher Ed degree... (5, Insightful)

JymBrittain (880082) | more than 8 years ago | (#13531692)

The types of classes you prefer will depend, essentially, on what you see as the purpose of a higher ed degree or some would even argue the purpose of an education. Some would argue that it is to prepare you for a job through the acculumation of a set of skills or a knowlege set. Others would argue that it is to prepare you for a lifetime of learning. In this day and age, odds are unless you're in a position where you can call in rich, you'll take more than one career zig or zag in your lifetime. Yet another group are those that see the purpose as a mixture of both. In the end, your choice as to the purpose of education should be one of the fundamental questions you get a personal grasp on before you even apply to an institution of higher learning.

Answer to your question... (5, Insightful)

jawtheshark (198669) | more than 8 years ago | (#13531694)

If you want to learn about computer science (which is for a big part just maths), you're in the right program. However, computer science doesn't teach you to be a software engineer, or a programmer. It teaches you the sience behind it all, the foundations of "how this stuff" works. (Which is mostly theory, by the way) It isn't all that useful for your job, but an academic degree doesn't make you ready for "a job". It makes sure that you can handle what comes after that. The ability to adapt, to learn and research on yourself when your job requires you to do so.
Sometimes the stuff you learn there seems completely and utterly unimportant for day to day usage. Still, often you suddenly get into a situation where no other non-CS guy can't find a certain bug because they lack the understanding of the background. I've been in the stuation myself where I was able to fix a bug that resulted out of the use of floating-point numbers. The guy that implemented the routine just didn't know about the mathematical boundaries of floating point numbers. It's just an example...

If you just want to become a programmer, just follow some evening courses... That's all you need... Programming isn't all that hard, but don't come complaining to me because the sorting routine you wrote is too slow and don't know why.

Re:Answer to your question... (2, Insightful)

Anonymous Coward | more than 8 years ago | (#13531779)

That's just not true. Or rather, maybe it was at your college.

First of all, a degree is very important when looking for a job. Most colleges and universities don't offer a degree in Programming.

Second, as a CS graduate working as a software engineer, I can say with absolute certainty that while most of the classes don't have any direct bearing on what you may end up doing, knowing the theory and fundamentals are key to being a well-rounded programmer.

Re:Answer to your question... (3, Insightful)

Etyenne (4915) | more than 8 years ago | (#13531886)

The problem with your position is that the job market have come to expect CS degree from programmers. Vocationnal school degrees, while being more down-to-earth in their approach, are considered inferior by the vast majority of employers. So, if you want to make a living programming, CS degree is considered a must. I know it make no sense in the real world, but would you rather get to begin your career on a lower rung because you choose the most appropriate curriculum for your career path ? For most people, the answer is no, thus we are collectively trying to retrofit computer "scientists" into programming roles.

Some people sugggested MIS as a better academic path for programmer. I don't know. At my University, the MIS curriculum involve a lot of business bullshit such as marketing or finance. I know these are good to know from the organizational point-of-view, but if you expect to produce decent programmers, you need to keep some focus.

Actually, I think there is no good path for those who want to get into programming in the current academic model. It's even worse for IT. What would a prospective system administrator take as degree ?

Re:Answer to your question... (2, Interesting)

IWorkForMorons (679120) | more than 8 years ago | (#13531895)

Try explaining that to the numerous companies in and around Canada's "Tech Triangle" (which happens to include Waterloo, Ontario, the home of the supposedly famous University of Waterloo's CS program). I went to Conestoga College [conestogac.on.ca] , which has a very good, very relevent Computer Programmer/Analyst course. While it's a programming course and gives you a very good basis, it also relates it to the business aspect of the world. I came out knowing how to program complete systems end-to-end regardless of the language, and can pick up most languages fairly quickly. Even the evil RPG [wikipedia.org] . And I've had extreme difficulties getting a programming position outside of insurance companies.

The one incident that really burned me was at a job fair. I walked up to a booth for Business Objects [businessobjects.com] , a company that creates add-on tools for other software. From what I saw, they used VB. I thought to myself, "I think I could do really well here". So I went up to the guy. The *FIRST THING* he asks..."Where did you go to school?" I say "Conestoga College" proudly. He says "Sorry, we don't take college students. University only." I spent the next 5 minutes pointing out all the experience I had creating software relevent to his company. He simply dismissed it. There are many other examples of the bias towards university students, but that was the one that pissed me off the most. Most companies, even software companies, have the idea the if you went to university, them you simply *MUST* be better then a lowly college grad.

BS degrees are more vocational (0)

Metasquares (555685) | more than 8 years ago | (#13531695)

BS and MS degrees are meant to lean more towards the vocational side, whereas a Ph. D is all about the scientific/research aspect of the subject.

Re:BS degrees are more vocational (3, Insightful)

Norweed (914042) | more than 8 years ago | (#13531773)

Not at all. You don't goto a University to learn about things that will nescisarily help you in the real world. You learn how to THINK. My computer science degree didn't directly teach me anything I needed to use in the real world, however, it did teach me how to THINK like a computer scientist. And the math part of the curriculum has paid dividends. The only people I ever really saying that a CS degree is worthless are the ones that don't have one.

Re:BS degrees are more vocational (314159) (0)

Anonymous Coward | more than 8 years ago | (#13531850)

I don't have a degree in basket weaving and I think a degree in basket weaving is worthless. Is the fact I don't have a degree in basket weaving relevant or is that degree really worthless? These are the sorts of questions CompSci majors ponder while in the unemployment line. :-)

Re:BS degrees are more vocational (1)

liveevil (814109) | more than 8 years ago | (#13531820)

"BS and MS degrees are meant to lean more towards the vocational side, whereas a Ph. D is all about the scientific/research aspect of the subject."

That's about the most ridiculous thing i have ever heard.

Re:BS degrees are more vocational (0)

Anonymous Coward | more than 8 years ago | (#13531896)

Your perception is common, but nonetheless incorrect. A bachelor's degree in CS is where you get a broad grasp of the field. A master's is where you more into the foundations (depth). A PhD is where you extend the sphere of knowledge - a task that requires considerable depth and specialization.

Disclaimer: IAACSP (I Am A CS Prof).

With respect to the original poster's question - is this the right degree for you? The answer is: it depends on why you're going to college. If the primary reason is to get a job, then probably there are less time-consuming ways to get where you want to go. If you are going to college to get an education (both in CS, and generally), then the kinds of courses you listed sound appropriate to that end.

IMHO, the world has enough narrow specialists without a grasp of the broader context of the world in which our technical disciplines are embedded. From the world's point of view, it's a good thing you are being exposed to a broader range of topics than just CS.

My advice (1, Funny)

Anonymous Coward | more than 8 years ago | (#13531697)

Take that university money and put it in energy stocks. You'll make way more money than you'll get working at some feeble job, and no re-paying your student loans for decades.

When you're rich, you can buy all the books you want and read them, hell, you can pay someone to read them to you.

Re:My advice (0)

Anonymous Coward | more than 8 years ago | (#13531768)

It took my brother a year to pay off his student loans.

Re:My advice (0)

Anonymous Coward | more than 8 years ago | (#13531866)

Is that you, Hillel?


The choice of degree matters less than attitude.. (5, Insightful)

Ckwop (707653) | more than 8 years ago | (#13531703)

A degree is an academic certification and as such it should not cover topics simply because they're trendy in CS related jobs at the moment. It should teach a curriculum that gives CS students a good background in a wide range of topics and above all else it should be interesting and set up a good basis for more advanced academic training.

It is not surprising that sometimes what is good course academically is not necessarily a good course from a business standpoint. As a professional programmer I think that CS graduates are typically no better than someone with no degree at all. I understand that this is a pretty damning thing to say considering the majority of slashdotters probably have a CS degree but in reality the CS degree gives you nothing in terms the ability to write good code.

In fact, a CS degree typically makes for a more dangerous coder due to their belief that the few programing projects they did on their course makes them a professional programmer. It also trains the wrong instincts. Academic coding is about producing beautiful programs - business coding is about being pragmatic. Often they have a hard time rejecting these academic instincts.

I liken programming to playing chess. Anybody can learn the game in a day but to become a master takes dedication, a willingness to learn and a lot of time. I've stressed the "lot of time" point because I think this is a key problem with CS students. You get the typical line out of them at an interview "I didn't learn C# in Comp Science but I could learn it in an afternoon.." I'm a young guy (22) and I've been programing professionally for nearly four years and I can tell you that this is simply false. Make no mistake about it, I'm still no coding grand-master and probably wont be for another ten years. When somebody says that they can learn a language in an afternoon it doesn't make me think they're lying, it just makes it blatantly obvious how ignorant they are of intricacies of writing code.

In conclusion.. I think that having a CS degree is no real advantage over having a physics, chemistry or maths degree. What a degree shows you is the person in-front of you applied themselves to a long term project and got a result. The same conclusion can be drawn from a person sat across from me without a degree but three years of experience. Really, both routes are equally valid and I hold neither higher than the other.


Re:The choice of degree matters less than attitude (4, Insightful)

the_2nd_coming (444906) | more than 8 years ago | (#13531767)

you had me until it came to the part about learning a new language. I am sorry, but once you know how to program, learning a new syntax, especially one that is so close to one that most CS students have had experience with, is easy to do.

yes, you still need to learn the library but the language is trivial.

Learning A Language in an Afternoon (5, Insightful)

CyborgWarrior (633205) | more than 8 years ago | (#13531775)

I disagree with you on the point that you can't learn a language in an afteroon. Every programming langauge has its own set of syntax rules and functions. You can take an afternono and learn the basic syntax of the language, memorize a couple of the functions that you will use often, and find the best resources for help about the language. After that, your learning process will be just learning as you code. You said yourself it's going to be another 10 years before you would consider yourself really good at it. You aren't going to get there by just sitting and examining tutorials. You learn it by actually programming it and doing google searches / resource searches every time you come across something you need a tip on.

So while learning it in an afternoon won't make you a killer coder right away, it is enough time to set you up to be able to code just about any app and learn as you go. If you already know other langauges, then it will be fairly easy to apply the rules of good clean coding to this new language as you go.

Re:Learning A Language in an Afternoon (1)

Ckwop (707653) | more than 8 years ago | (#13531818)

Which is fastest for comparing two strings (ignoring case):

string1.ToLower() == string2.ToLower()

string.Compare(string1, string2, true) == 0

Learning the syntax is the easy part. Learning how to use the syntax effectively is a different ball game all together. It's this aspect of coding that takes a lot of time to develop. I agree that once you can program to a high level in one language you can transfer to another much more quickly but it still takes a while to really understand the language. It's this knowledge that can determine the success or faliure of your project.


Re:Learning A Language in an Afternoon (1)

the_2nd_coming (444906) | more than 8 years ago | (#13531863)

and as a new developer on a team, the experienced guys can clue him/her in on the stuff he does not know.

to say that a person should be able to know the finer points of a language before he tried to get a job for that language is ridiculous.

No kidding. (5, Insightful)

Anonymous Coward | more than 8 years ago | (#13531805)

I've got degrees in Physics and Math; and have never, ever taken a Computer course. I've also done a heck of a lot more than the author has.

What the author doesn't recognize is that one of the reasons you should take courses which aren't job related is to make yourself well-rounded. That is, capable of handling anything which comes up, instead of just being technically proficient in a few TLA's of the moment.

He completely fails to understand that the computer training you received in College will typically be obsolete in 5 years. However, if you've received an Education (instead of training), you can likely adapt to handle the new stuff as it develops.

Somebody who can actually think can pick up anything. Someone who just has job training is going to be in trouble unless they know how to adapt.

The only constant in this universe is change. You're best off preparing for it.

1984 comes to mind here (1)

kalpol (714519) | more than 8 years ago | (#13531813)

"I understand HOW - I do not understand WHY."

CS teaches you why. Once you understand why, picking up how any number of times becomes routine.

Re:The choice of degree matters less than attitude (1)

Ed Bugg (2024) | more than 8 years ago | (#13531841)

"I didn't learn C# in Comp Science but I could learn it in an afternoon.." I'm a young guy (22) and I've been programing professionally for nearly four years and I can tell you that this is simply false. Make no mistake about it, I'm still no coding grand-master and probably wont be for another ten years. When somebody says that they can learn a language in an afternoon it doesn't make me think they're lying, it just makes it blatantly obvious how ignorant they are of intricacies of writing code.

Hmmm I'm split on this, and I think the initial question actually goes into this. As someone else pointed out the CS goes into the science behind the scenes. True you don't need to know the machine representation of a floating point number, or how different platforms normalize numbers, in order to write a program, but to be able to profile and truely understand how your code is run, it does.

What does this mean for someone that says they can learn C# in an afternoon? Well, I've know programmers that know a language so well that they can do things that in that language that you just wouldn't think possible, but tell them to write that same program in another language and they are lost. While other programmers that I know, just translate their ideas into what ever syntax is needed and to them a language is just nothing more than syntax and grammer.

When you already have a large number of languages under your belt, then how long does it take to pick up enough of the grammer and syntax? Granted you won't be making any masterpeices, but can you write a program?

Back when I was in school, I used to groan, grip and b*tch about learning a different language practically every semster, each class had it's own language that was required, I know C already why did I need to know anything else? Years later, I had to debug and modify an application in PowerPC assembly, never seem it before in my life. I already knew M68k, Intel, and SPARC assembly. So sitting down with a reference manual and the code I was able to pick up what the program was trying to do, how it was trying to accomplish it, and what parts I needed to modify, within a weeks time.

There's a difference between picking up a language and becoming a grand master, but I agree it's a lot in the attitude of do I learn this for this class or do I learn to apply it myself.

Re:The choice of degree matters less than attitude (1, Insightful)

Anonymous Coward | more than 8 years ago | (#13531861)

>I'm a young guy (22) and I've been programing professionally for nearly four years

Is it possible then, that you _yourself_ have done nothing above but make it blantly obvious how ignorant you are?

I'm much older than 22, I've been programming for 20 years and I'm a professor of computer science.

A moderately intelligent and resourceful student should be able to switch between languages with similar design in no time at all. Once you understand the basic concepts and structures of a procedural programming language, it takes very little time to learn a new procedural language.

Now, this doesn't hold when you switch across paradigms. Someone who is comfortable with procedural languages would not be able to make a 1-day switch to LISP or PROLOG. However, a LISP programmer could switch relatively easily to ML or Haskell.

What it comes down to is that a change of syntax is essentially trivial if the underlying semantics remain the same; only a change of semantics should require serious study. You don't understand this because you have probably never taken a proper academic course on programming languages and may not even understand the distinction between syntax and semantics.

It is exceptionally dangerous to conclude that just because _you_, with your extremely limited experience and knowledge, cannot do something... it must follow that others can't do it as well.

Re:The choice of degree matters less than attitude (5, Insightful)

sribe (304414) | more than 8 years ago | (#13531884)

...the majority of slashdotters probably have a CS degree...

What planet are you from?

You get the typical line out of them at an interview "I didn't learn C# in Comp Science but I could learn it in an afternoon.." I'm a young guy (22) and I've been programing professionally for nearly four years and I can tell you that this is simply false.

Well, I'm an old guy (42), who has not just learned, but used in shipped products, over a dozen languages. And I can tell you that I learn and master new languages a whole lot faster than all you guys without CS degrees who keep shooting off your mouths about how little use CS degrees are. Learning a new language in an afternoon is indeed an exaggeration, but learning a new language is a whole lot faster when you understand the fundamental mathematics on which all programs are based, and the way they are commonly expressed through language features.

Maybe... (3, Insightful)

Anonymous Coward | more than 8 years ago | (#13531705)

The classes you have to take are required for the degree, and the degree is very important. On the other hand, some people have great success just learning how to program on their own.

I'd say there are more successful people in the programming world with degrees than without, though, so I'd stick with the courses your college requires.

If you really want to stand out when you're looking for a job, use your spare time to write a well-designed app that you can show to potential employers.

Re:Maybe... (1)

black6host (469985) | more than 8 years ago | (#13531887)

Regarding the parents suggestion of bring in an app:

I can't stress enough how important this can be. I've done my share of applying for work and I always go with code samples and, if possible, working programs. The "if possible" part depends on a machine being available to you that would have the required systems programs (such as the appropriate version of the .NET framework, etc.)

Now I've done a lot more hiring than applying in my days. And I've always been most impressed with those who would go to the trouble of bringing in a "portfolio" to show me what they can do. Sifts them out somewhat from those that just say: "Sure, I can do that, no problem." Half the time they couldn't when it came time for techinical tests or similiar. Show me what you can do, and show me that you care enough about the job, and yourself, to take that extra step.

In Soviet Russia (-1, Troll)

Anonymous Coward | more than 8 years ago | (#13531707)

In Soviet Russia, curriculum COLLEGES YOU!!!

define your needs (1, Interesting)

Anonymous Coward | more than 8 years ago | (#13531708)

First define your needs/goals. Are you wanting a coder position? Research? Once you've defined what it is you actually want to do with your education, then you can figure out if the courses will help you reach your goals.

not useless (3, Insightful)

OffTheLip (636691) | more than 8 years ago | (#13531710)

You are learning to think critically and hone problem solving skills. CS is not computer programming alone. The biggest problem in computer design is and always will be applying the best solution to a problem within the constraints allowed.

Specialised IT courses (2, Insightful)

[ella] (122929) | more than 8 years ago | (#13531711)

I stopped university and got a 'lower' but much more practical degree. This actually meant I was on the market sooner, and by the time I would have gotten my university degree, I was making the same amount of money as somebody who gets out of university.
And guess what? I already had work experience...

University is something you (should) do for the love of science, not for just getting a job.

Designed to grind out more CIS teachers (1)

gelfling (6534) | more than 8 years ago | (#13531714)

There are many college programs which are designed to grind out more teachers of those programs to other students who in turn teach them to other students and so on. Think of all the History degrees and all the other esoteric programs like that. This CIS program appears to be of that ilk.

Re:Designed to grind out more CIS teachers (2, Funny)

M. Baranczak (726671) | more than 8 years ago | (#13531835)

There's a line I heard somewhere about those who fail to learn history, but I can't remember how it goes, Oh well, it's probably not important.

It's not just about what you learn (0)

Anonymous Coward | more than 8 years ago | (#13531715)

It's the skills you gain in the process. Science degrees give excellent grounding in analytic thinking, numerical skills, (maybe) experimental skills, etc... Vocational training may give you an advantage in some cases but these skills can often be picked up quickly in the workplace anyway.

Tell us what you're planning to do.. (0)

Anonymous Coward | more than 8 years ago | (#13531717)

We can't answer if you're in the right program unle ss you tell us what you're planning to do with your degree.


Where do you see yourself in 5 years, etc ..

Watered down CS degrees (2, Insightful)

Average_Joe_Sixpack (534373) | more than 8 years ago | (#13531718)

I use to be proud of the fact that I held a CS degree, but that changed when CS became more about job training than a science. If you want a real CS degree, then become a math major.

Common Question (5, Insightful)

wsloand (176072) | more than 8 years ago | (#13531719)

This seems like a common question. There will be plenty of people who think that college should provide vocational training and plenty more who think that college should teach you "how to think independently".

I'm personally more in the second camp. I think that there are vocational schools for those who want to learn the vocation, but those skills will need to be constantly updated. I think that what you learn in college (as opposed to vocational schools) should be applicable to more fields than just the one that you learn and that you should be able to apply the lessons beyond what the curriculum specifically teaches.

Essentially, if you want to learn the theory of how databases work and know how to write a database you're taking the right sort of classes. If you're wanting to become a DBA, you should really go to a vocational school.

Re:Common Question (1)

BengalsUF (145009) | more than 8 years ago | (#13531897)

Exactly right. If you think all these courses are a waste of time in the real word, by all means drop out of college and go to ITT Technical Institute. Sure, when you're done you'll understand the 'what' and 'how' of programming, but you won't understand the 'why'. Not understanding the 'why' will make it much more difficult for you to adapt when technology changes.

Practical Courses tend to be write-test-and-forget (4, Insightful)

Taladar (717494) | more than 8 years ago | (#13531724)

I don't know about American Universities but here in Germany the theoretical courses are the only ones that have long-time-useful information. The practical courses focus mostly on technologies that will be outdated when I leave college. They also usually focus on details that won't stick in my head after the test because they are easily re-discoverable via Google. The theoretical courses are the ones that enable me to read about new stuff and actually understanding what it does as they are the timeless background for all of CS.

He's probably right. (1)

Bohemoth2 (179802) | more than 8 years ago | (#13531725)

A lot of college curricula assumes that you want to
go all the way to a Phd and be a grant mongering research scientist. You do not need to be that to get a job.

BTW first post ;)

CS != vocational training (2, Interesting)

cheesekeeper (649923) | more than 8 years ago | (#13531727)

Computer Science is the science behind software and computer technology. It's not really meant to be practical to most of what goes on in the professional realm. If you're not meaning to do research or interesting things like AI, creating computer languages, and the like, then, yes, it's the wrong program.

I wouldn't worry, though, as most everyone else is going to be coming from this "wrong" program as well.

Re:CS != vocational training (1)

compupc1 (138208) | more than 8 years ago | (#13531801)

No, it's supposed to prepare you for a professional job, but give you enough of a conceptual background that you can adapt to changes. It's BOTH practical and theoretical.

In our program here at UW-Eau Claire, your first year and a half are pretty much programming. Beyond we get into the interesting stuff like network protocols/OSI, OS theory, architecture, mathmatical theory, design patterns, AI, 3d graphics, etc. But these concepts are ALWAYS grounded in numerous practical projects. They may teach us what TCP is and how it fits into the OSI model, but then they'll ask us to implement TCP, simple routing, and FTP. You get the practical. They may teach us what neural networks are, but then they'll ask us to implement one, maybe using C#. Kill two birds with one stone. They may teach us about algorithm theory, then ask us to implement a simple problem using several algorithms and do a comparison. You get the practical.

I still maintain, any program which teaches only theory without requiring signigifant practical projects to compliment it is useless.

Re:CS != vocational training (0)

Anonymous Coward | more than 8 years ago | (#13531832)

I can only assume that you don't have a degree in CS yourself.

What you say is just false.

A well-rounded programmer has to know more than just the syntax of a particular language. To be truly good at coding you have to know some of the history and theory behind it as well. You need to learn to problem-solve. You need to be creative and you need to think around corners. And you can't do that if all you do is learn the language. There's more to it, and a CS degree is exactly the "right" program if you want to be good at what you do.

my experience (1)

UVABlows (183953) | more than 8 years ago | (#13531730)

I had one coding job right out of college where those classes were irrelevant. I was working with mostly EE's. The next job I had was working with math phd's. In that job, those courses were definitely necessary and I was actually inadequately prepared on the theoretical side.

I liked the second job much more and it paid a lot better.

If you ever want to get into the business side, take all the econ you can get. I'm now at a top 10 law school and THANK GOD I took some econ or I would be toast.

Too much theory (1)

scolby (838499) | more than 8 years ago | (#13531731)

Not that theory isn't important. Understanding the basic principles of computing makes it easier to both learn new programming languages and troubleshoot problems. However, as a recent graduate of a comp sci program at a tech school, I feel relatively useless. There was very little in the way of practical application of the things we were learning, and what we did work on seemed to be about five years behind the industry (for example, we spent our first two years working with C, and we never even touched the new .Net stuff). The big problem is that most of my professors lacked any experience in the field beyond studying and teaching at universities. For a major like computer science, colleges need to hire more people who've actually held jobs in the industry.

Not Worthless (1)

jallen02 (124384) | more than 8 years ago | (#13531733)

Those classes are NOT worthless. They may not help you directly in getting a job. However, when you are in serious software development and architecture for the long haul those classes are invaluable! Don't ever let anyone tell you otherwise. I was a working programmer right out of high school. I have since been getting my undergrad degree after hours. I treasure and value pretty much every college course, even classes that don't relate directly to computer science. These classes help me understand the world around me better. This in turn helps me be a better adjusted person more capable of dealing with life, which lets me focus on my work when it is time to work.
Things that are directly related to computer science. Those are all big and important in my opinion. It is, after all, computer science. It is supposed to be theoretical. Having the theoretical knowledge with some practice of the practical and a god overview of the big picture of software development after a few years of real software development make you a more complete and competent programmer than just being some code monkey at a vocational program. I have used directly, or indirectly everything I picked up from the theoretical side of CS. Maybe it was just making a decision or piecing together where someone was going with a particular technology. That knowledge makes me a better all around architect. So sure.. if you want to be a code monkey who can sling out code.. by all means go vocational.
If you want to understand software at a deep and truly meaningful level do the theoretical as well as the practical.

He is pretty much right (4, Insightful)

Foredecker (161844) | more than 8 years ago | (#13531734)

I've been a software development manager for a long time and I've hired a lot of people. Fundamental development skills are essential. This includes knowledge of data structures, algorithms, C/C++ and another 'major' language (c/C++ is a must have), a basic understanding of micro processor archithecture (this means some ability to debug in assembly, at least a little), good written and verbal communication skills (e.g. can you write a decent bug report?, can you lead a decent code walkthrough?). Funcatinal knowledge of operating system fundamentals such as memory management, scheduling, I/O (Syncronous, async), and networked I/O (TCP/IP) are also important. Again, I don't expect folks to be able to write a kernel, but they do need to at least be able to use more than one thread to do I/O or handle UI while doing something else, or open a socket and do a little client/server work. Note that economics isn' bad, but it should be micro, not macro. Even entry level devs need to have some inkling of business trade offs.

You just described part of my CS program (1)

kalpol (714519) | more than 8 years ago | (#13531843)

data structures, algorithms, C/C++
CS328 - data structures and algorithms in C++.
a basic understanding of micro processor archithecture (this means some ability to debug in assembly, at least a little CS310
good written and verbal communication skills
Pretty much everything
operating system fundamentals such as memory management, scheduling, I/O (Syncronous, async), and networked I/O (TCP/IP)
CS372 and CS341(?) - Operating Systems and Fundamentals of Networking Protocols

So where is the problem here?

fi8st? (-1, Redundant)

Anonymous Coward | more than 8 years ago | (#13531735)

for aal practi3al 40,000 workstations

The guy is absolutely right ... as far as it goes (0)

Anonymous Coward | more than 8 years ago | (#13531737)

I teach in a community college. Our three year grads compete for jobs with four year engineers. Our students often win the competition. They have really good design skills and when they get on the job, they are immediately productive.

The problem comes a few years later. The three year community college grads lack the math skills to follow the journals. They plateau. The four year students keep grinding up the hill. After a while, they are as productive as the three year students and then they pass them.

The best education may be a combination of the two kinds of school. We often have university grads taking our program so they can get jobs. They really do well when they get onto the job market.

So, ya pays yer money ...

Useless (1)

compupc1 (138208) | more than 8 years ago | (#13531739)

Switch to a university where they teach you both the theory and the practical. First off, that seems like an odd selection of introductory comp sci courses. But beyond that, I'm sorry, but unless you somehow are going to get more practical experience later, you'll be useless with a degree like that. You have to have a strong foundation of programming and design (yes, advanced design patterns and all) first. Then you can deal with issues such as AI or advanced math or machine vision or whatnot. But because you have that practical foundation, you'll be able to apply those advanced concepts you learn.

In the real world nobody will give a s**t whether you've taken numerical analysis. They're going to want to know if you can program, if you have a strong grasp on algorithms and data structures, if you understand the software engineering cycle, if you know how to effectively apply design patterns, and if you know how to communicate with your co-workers and non-technical people. Knowing theory is a bonus, but even then only if you know how to apply it to practical applications.

It's ok... (1)

trompete (651953) | more than 8 years ago | (#13531741)

It's ok to be in programs like that. Just make sure to get a 3.5 GPA and do as many high-profile internships as possible. The combination of those two things will get you a job.

My schooling was kind of a joke, but job experience, GPA, and activities participation helped me land the job I have now.

Good luck!

For today's job market... (0)

Anonymous Coward | more than 8 years ago | (#13531742)

I have to agree that Dan's acount is true for someone looking to hire somebody in todays job market. But that's not what school and learning is about, these are skills and information that will last throughout your life.

Take for example the focus on network protocols, this has immediate value, howevever, over the long term it's more valuable for some one to understand the 7 layers of a network, so they can understand how HTTP applies to one of those layers. Then 5 years later when they are promoted to architecting huge global systems they would be able to understand the differences between layer 2 routing and layer 3 routing as it pertains to distributed computing.

The net net is that education is not a means to a job, it's a means to learning. Jobs come and go, especially in todays economy. But the really valuable skill is being able to apply what one has learned.

Finish school, but place no faith in it (0)

Anonymous Coward | more than 8 years ago | (#13531744)

The irony is that schools don't teach practical skills, but most companies prefer college graduates anyway. So, finish your degree, but spend your free time contributing to open source projects and reading about real-world phenomenon.

He's a nitwit (1)

sam_handelman (519767) | more than 8 years ago | (#13531752)

There are plenty of vocational training progams in computers out there, if that's what you want, get one of those degrees, and not a BS in Comp. Sci..

  There are numerous jobs available in high end, research grade computing. There may not be as many as there are CS graduates (for one thing many essentially require an advanced degree, as well,) but they exist, and they make heavy use of the cutting edge stuff, particularly what I do, which is in Biology.

  That said, if a particular employer would rather hire someone with a narrow base of vocational training than someone with a broad range of training in complicated and mathematically rich sub-disciplines, for many jobs he's a fool. For a high end position, you desperately need people with, to be blunt, the capacity to actually think, which you can call by the buzzword of choice.

  Developing an understanding of more advanced, and not immediately intuitive, techniques in CS *can*, although there is no guarantee, trigger someone to develop the needed mental faculties to work at a higher level.

  Finally, the vocational level work is being oursourced to India anyway. I don't think that CS departments in the US and Britain are doing anyone a dis-service by training them to do something more than that.

Computer Science is more than just programming (1)

the_aleph (913816) | more than 8 years ago | (#13531756)

I'm facing the same problem right now (in Italy) and actually I think there's a reason because it's called Computer Science and not Computer Systems Engineering (os something similar). Maybe those courses won't be useful for the majority of IT jobs, but a strong theoretical background could be useful in some careers (apart being a researcher in a University). In my opinion, theoretical results last forever, while any programming language (except C, maybe) is going to become obsolete in an unspecified future. Just my 2 cents...

Jobs aren't all. (4, Insightful)

matman (71405) | more than 8 years ago | (#13531760)

Once you're working you'll realize that getting the job isn't where you stop setting goals. You'll want to do a good job and make insightful decisions. You'll learn that you want to contribute to the field that you're working in, beyond hacking out whatever the business tells you to. You'll want to contribute to society. For these things, the better your understanding of your field and the world, the better you'll do - that's why you're going to university.

Now, you can do all of these things without university, but you've got to be very driven and interested in what you're doing. Interest and ambition to contribute more than just labor is the biggest factor in my experience. Jesus isn't remembered for being a carpenter. Ghandi's not remembered for being a lawyer.

shows you're smart (1)

bcrowell (177657) | more than 8 years ago | (#13531769)

If you can handle all those theoretical courses, it probably shows you're smart. OK, "smart" is a vague term, but for instance, it probably shows you can do hard math, understand hard textbooks, and do abstract reasoning.

I teach physics, often to biology majors who think it's irrelevant to them (even though biology is based on chemistry, and chemistry is based on physics). If they can do well in my class, it says something good about their intellectual abilities. And anyway, what about the person who never gets around to reading the lab manual before lab, and tries to get his partners to do all the work for him? He's not going to do well in the course, and that does relate to whether you'd want to hire him in the real world.

Another favorite of mine is the two-meter sticks that are labeled 0, 10, 20, ... 90, 100, 10, 20, ... 90, 100. Every semester, I have students writing down a certain height as 42 cm, when actually it's 142 cm. Is this irrelevant to employers? Well, would you want to hire the kind of person who is in the habit of writing down numbers without checking to see if they make sense?

Of course, the courses you're talking about are at a much higher intellectual level, but the same principle applies everywhere. There's a reason why people would rather hire an office manager who has a degree in English, rather than someone with a degree in physical education.

Coding is easy. Anyone can learn to code. The hard stuff isn't typing lines of code into an editor, it's being able to design software, figure out tricky algorithms, ...

I agree (1)

guided_by_coffee (862216) | more than 8 years ago | (#13531880)

This type of degree is good for demonstrating that It certainly shows that you can handle these smart things. My degree is EE, so I lucked out -- I got both theory and hands-on experience even with a BS.

Yes, coding is quite easy and the hard part is always doing proper design. "Proper" design by my definition is creating code that is both readable and relatively easy to debug, as well as robust, decent performance, etc...

The CS degree will only indirectly help with code design, if one can master difficult concepts of CS, then one can learn how to do code design / problem solving in the future when in the business world.

Education vs. training (4, Insightful)

mi (197448) | more than 8 years ago | (#13531770)

The point of good education is not so much to learn stuff, but to learn how to learn stuff.

In the decades of your career you'll work on totally different subjects and will have to learn new programming languages and techniques. Knowing how to learn these "new tricks" is what distinguishes an educated person from a trained one.

Learning theory while using "academic" languages, which nobody uses in "real life" will be very useful... You will be able to pick practical things up quicker and there will be no shortage of that later in life.

CS stands for Computer Science (2, Insightful)

fikx (704101) | more than 8 years ago | (#13531776)

If you don't know what computer science is, then you're lost already. Studying the science of computers means you are going into a field of science dealing with the fundamentals of computers. No, it doesn't translate into a typical job, but it can be used for lots of jobs. CS plus other practical classes can give you an incredible edge. If you are trying for just getting a job, stay out of CS. In fact, PLEASE stay out of CS if that is all you want. CS is being deluted by that kind of attitude. A computer scientist advances computer theory and ideas, not just their paycheck.

Theoretical better than vocational (1)

slim (1652) | more than 8 years ago | (#13531786)

When I was coming to the end of my degree, nearly 10 years ago, I took part in a consultation exercise. Another panel member complained about the lack of vocational aspects to the course, saying "We did a module on networking, yet Novell wasn't mentioned once".

But he was wrong. While Novell still exist, Novell networking as you might have recognised it in 1995 is all but dead, whereas the theories and paradigms I learnt during the degree still serve me well.

And that's just one example.

Re:Theoretical better than vocational (1)

Cylix (55374) | more than 8 years ago | (#13531891)

With my CS degree we had most everything theoretical. There are a few classes though which do tend to teach more on the vocational side.

So it was the flavour of the time, but the idea is that principle is taught along with the application.

However, I come from a slightly different branch which had a good deal of focus on embedded systems. (Design, theory, logic, electrical.. the whole mix... wildly useful to this date)

Not one mention of networks (1)

Raleel (30913) | more than 8 years ago | (#13531789)

well, some mention of common protocols, but seriously, that's it? I've found that to be one of the most useful things.

I would recommend taking discrete math and linear algebra. Both are probably requires for you CS degree, but I can't count the number of times that familiarity with those concepts has helped me out.

I've felt that my CS degree taught me how to learn, not how to do my job :)

And Dan Zambonini is.... (0, Flamebait)

daniel_mcl (77919) | more than 8 years ago | (#13531790)

I never understand why people pay so much attention to articles like this. Dan Zambonini runs a small company that nobody has ever heard of which makes a content management system used by a bunch of people you've never heard of. I suppose that's a little better than Joel Spolsky, who makes software that *nobody* uses, but these guys really don't have much of a clue what kinds of jobs are out there in the companies that, you know, you may have heard of before -- they're too busy running their garage operations.

I've talked to recruiters from companies like Google, Microsoft, Symantec, etc. and while they do want someone who can actually sit down and write a program, if you are going to write software you are going to need to understand things like analysis of algorithms or else you are going to end up putting bubblesorts into production code and leaving users wondering why your search feature takes so much longer than your competitors'.

Of course, if you want to work in the database department for a large company and write software that moves tables of numbers around and is never seen by the outside world, then by all means go into MIS. But if you, like most aspiring programmers, want to release software onto the general market and you want to write something other than very basic utilities like "Windows Power Tools" or "Texteditor Extreme 5.3," you are going to have to have a foundation in computer science and a whole bunch of math.

College != Training for a job (1)

dividedsky319 (907852) | more than 8 years ago | (#13531792)

I don't really see college as training you for a job... sure, a major will focus you on a particular curriculum, but IMO it's more about opening up your mind and becoming a more educated person (in multiple topics).

At Boston College, our core required us to take classes in philosophy, theology, math, sciences, history, etc... a well rounded education. I'm sure it's the same in most colleges. As a computer science major, did I need to learn about Plato or Socrates or religion? Not really... but it made me a more well rounded individual.

When focusing on just the CS courses I took, besides the basics of coding there isn't much I use in my current job... but it got me used to learning a new language and applying myself to solve a problem with it. The classes I took to get my BS: Computer Science I and II (Data Structures, C), Object Oriented Programming (Java), Advanced Java, Computer Organization and Assembly Language, Programming Languages, Algorithms, Theory of Computation, Computer Graphics, Computer Vision, Multimedia Programming, Digital Systems Lab, Technology and Society, Art & Digital Technology, Advanced WWW (Flash)

I'd say I got a great CS education with all the classes I took... I took a LOT from them, but I don't exactly use things straight from the classes in my coding job. I don't use C, or Java, or SML, or Matlab, or OpenGL, or assembly language, etc... but by learning those languages, it made it easier to learn new things in the future.

IMO, college essentially just opens up your mind and gives you the skills needed to be able to adapt to whatever your future employer will need you to learn.

I'm all for this structure (1)

consonant (896763) | more than 8 years ago | (#13531794)

I've done my engineering in Chennai, India. And this is how a typical engineering student's life goes, most of the time regardless of his/her choice of major in undergrad school :

Choose major

Plough thru piles of papers and exams

Land job in large software company, only to be told everything learnt in college is El-Krapo

Undergo training within company Since this happens anyway, IMO it's a Good Thing (tm) that more core papers are tought in colleges. If the large cos. are going to run you through a training program in any case, it makes good sense to do stuff in college that actually ensure your fundamentals are solid. And, like in the comments [onlamp.com] from TFA, college is *NOT* trade school. In fact, quite contrary to what Zambonini (does that name make anybody else hungry?) says, the vocational papers should be made optional. Hey, I'm pretty sure, if you can grok compiler design, finite automata, AI et al., you could easily wade into XML/SAX/DOM/"other industry stuff"

Here we go again... (2, Insightful)

Anonymous Coward | more than 8 years ago | (#13531796)

>I tend to think that an university education should stress scientific topics over vocational ones

I'm glad people like you still exist... you wouldn't believe the number of students who whine to me that computer science courses are "useless". They want courses like "How to program for Windows XP" and "How to install network drivers"....

The analogy isn't quite apt, but I'll use it anyways: taking a computer science degree to become a line programmer is liking taking a physics degree to learn how to operate a microwave oven.

Again, not apt (much hyperbolized, in fact), but you see my point. Computer science is supposed to be about _science_... it's not a how-to-program course. Programming just happens to be one of the tools computer scientists use (just as some physicists use microwave emitters in their research).

Honestly though, a CS degree _will_ give you an excellent foundation from which to learn job-specific skills. Once you understand programming languages and algorithms on an abstract level, it should be a piece of cake to learn "trendy new programming language #37" when your employer requires it.

The notion that someone should be calling themselves a "software engineer" while not understanding the Church-Turing thesis is absolutely horrifying. There are very real mathematical limits to what can be accomplished with computing... and some surprisingly simple tasks simply aren't computable, ever. Any serious programmer should know how to identify when they may have been asked to do something that is provably mathematically impossible. Of course, I doubt they teach the theory of computation at your local trade school.

Dan Zambonini would have us turn a Computer Science degree into a Computer Technician's diploma. The man hasn't the foggiest understanding of what computer _science_ is. He probably also thinks that astronomy degrees should concentrate exclusively on building and maintaining telescopes.

Don't let his shocking, and deeply depressing, ignorance make this important life decision for you. If you like science and you are enjoying CS, stick around. With a good foundation you'll be able to pick up particular job skills surprisingly quickly and with very little effort. If, instead of foundations, you learn only specific skills... it will be harder to adapt when the required skill set for your job changes.

What I wouldn't give to see the animated corpse of Dijkstra impale this Zambonini chap with a GOTO statement and a telescope.

In the games industry (1)

[l0l]Bobo (39241) | more than 8 years ago | (#13531800)

Well, I don't know what your career goal is with this degree, so let's suppose for instance that you'd like to work in the games industry.

I work for a major game developer as a software engineer.

I did a B.Sc. in computer science, at a university that is rather oriented towards the more theoretical side of the curriculum spectrum. I then did a M.Sc. specializing in computer graphics and animation.

And... I can guarantee you that your Theory of Computation course will provide you with essential knowledge in any algorithm-heavy job (which is definitely the case when writing games). Your Numerical Analysis class also has a direct application in physics engines for games.

The other two I can't comment on as my area of expertise is not AI, but there's a good chance that the AI guys where I work would tell you that those courses would be valuable as well.

BS (or more) in CS can open (or close) doors... (1)

Rhys (96510) | more than 8 years ago | (#13531803)

Just keep that in mind. Some places you won't work without a degree -- I have a couple friends who would have liked to work at the university like I am, but can't since they didn't have their degrees finished.

They've all gotten jobs in the area, but aren't particularly happy with them.

Not that you'd expect my degree (MS in CS) to have anything to do with my job (systems administrator), but it does. My MS was in parallel computation, and now I manage a supercomputer. The degree has been useful: good for tracking down bottlenecks that are limiting performance, makes it easier to talk to & support the scientist users of the machine. (being a TA for the parallel programming course for scientists & engineers probably didn't hurt there either)

All that said, why would you want to work at a university? Pay's better in industry, but you can't beat my benefits package until you've been there years and years. (possible exception: google)

24 days paid vacation/year, plus 2 floating holidays, plus all the usual state days off. Flexable work hours, telecommuting, low stress, great bus system in town. (applicable to C/U only possibly)

Do you want to be a code monkey? (1)

Gorobei (127755) | more than 8 years ago | (#13531806)

If you want to be a code monkey, take vocational courses: learn Java and C++, learn about the buzzwords du jour (XML, SOAP. Ajax, whatever.)

If you actually want to be a serious programmer/designer, get a strong grounding in CS - that means data structures + algorithms, automata, numerics, compilers, OS design, etc. Know C++, Lisp, and a functional language.

So DZ doesn't want programmers who know how to write a compiler? Great, on his next big project, he'll wind up with a system with several embedded ad-hoc languages hidden away in it. Worse, he won't see anything wrong with that.

I've hired programmers for C++ environments who didn't know C++: if they're strong enough, they'll be up to speed in a few weeks.

At my current job, we want to see core CS courses. We have to teach/retrain all our hires anyway, so we might as might hire people with a strong theoretical foundation in CS.

Don't neglect the theory!! (0)

Anonymous Coward | more than 8 years ago | (#13531810)

Yes, like the "from..." line indicates, this guy's blog is focusing on software engineering much more than computer science. It is a difficult thing to figure out, if you intend to go into software engineering after graduating with a CS degree. Most universities don't focus hardly at all on software engineering.

I am encouraged by the fact that the (well-known) university where I am an instructor is making increasing efforts to instruct the students in software-engineering practices as well as in computer science. That is one of the main purposes of my job. I graduated with a degree in CS, but after spending a number of years in the industry, and having focused on good software engineering practices and good architecture, I feel like I have something very valuable to contribute to the incoming students. There is a long-time joke about not hiring graduate-students because of their software-engineering inabilities, and this has been my experience too. I am very glad to be in a position to be able to improve this weakness at the school where I teach. It is a common weakness.

Now, by the same token, I have derived great value from my Computer Science training. It helps me to understand what is possible, what is impossible, and what is a desirable solution, based on the theory rather than on simple-minded guesses. And without understanding the theory, you are going to be much less effective in crafting powerful, extensible, effective solutions to the problems you will be given in the industry. Without a course on learning-systems, how would you know the capabilities and weaknesses of neural networks? Maybe you would just throw them at any problem that seemed like a good idea, and you wouldn't know why they didn't give you the desired results! Or perhaps you would be given an NP-hard problem, and have no idea why your solution is terribly inefficient, where you can find one at all.

I agree that software-engineering skills are very important to develop, and if you are at a university where this is also a focus, jump on it!! If you aren't, focus on it in your spare time. Get great books on the subject - a small amount of Googling should help you with that - and read them. Be observant when you are working on various-sized software projects; see what works and what doesn't work.

But by the same token, an education in Computer Science, in the theory behind the practice, will make you particularly capable in the industry, and will help differentiate your skill-sets from the rest of the people offering their services. Maybe in time you might even find an area of particular interest, and pursue it in graduate school. You will just have to keep focusing on developing those software engineering skills on your own, because both of these capabilities are necessary to excel, not just one or the other.

New Month (0)

Anonymous Coward | more than 8 years ago | (#13531816)

And yet another story from clueless CS students and all the slashdot fems giving their two cents.

The article is spot on (1)

bkp_42 (599993) | more than 8 years ago | (#13531819)

If you want a job writing code for businesses, then you probably need to make a switch. But is that what you want? Think carefully before you make a move.

Let me play devil's advocate for a bit. The following are typical of some things you will face doing development for businesses:
- Users who think they can design software, but barely know their own jobs, let alone yours
- unrealistic timelines/deadlines
- minimal budgets
- corporate peons who are more interested in climbing the ladder than doing quality work
- project managers who seem to only know how to say yes to users and business sponsors and are genuinely surprised when you tell them that "yes" will cost X, and take 3 months

By all means, none of these happen continuously, but far more frequently than not.

This looks like our requirements (1)

BobandMax (95054) | more than 8 years ago | (#13531821)

We are a RADAR development house. The skills we want look a lot like what Ludwig describes. Our emphasis is on scientific and numerical programming, not web skills. It's too bad that Mr. Zambonini cannot find the web monkeys that he wants.
The only factor missing here is a strong knowledge of hardware, so we also interview Computer Engineering students or CS majors with Electrical Engineering coursework.
Our problem has been that most grads are not particularly knowledgeable or skilled, regardless their degree. We generally want only the top 5-10% and they are sometimes tough to find, especially when we must work through the HR department.

Not even remotely useless. (1)

jythie (914043) | more than 8 years ago | (#13531827)

Actually, I have found employiers to _LIKE_ entry level programers to have a wide range of classes including some good solid theory. One complaint we have here about many of our younger developers is they skip thier theory classes and it really shows when they work on complex problems. The OP link sounds like someone geared more twards associates degrees or other technology focuses programs. The point of a CS degree is NOT to learn flavor of the month technologies, but to learn how to learn and have a good foundation. I actually get really displeased when I see colleges trying to push things like XML or Java courses into the main courselist....

There seems to be a disconnect (2, Insightful)

matth1jd (823437) | more than 8 years ago | (#13531829)

There seems to be a disconnect between what CS is and what most curriculums offer. It seems that the submitter is getting a solid CS background when he might be looking for a degree in Software Engineering.
This seems to be a common occurance. My alma mater offered a CS degree which was actually more of a software engineering degree. Sure they offered courses in AI and more scientific branches, but I learned more practical programming than anything
I believe this confusion comes from the fact that colleges are pushed to churn out students that can get jobs instead of get their PhD. Sounds like it's time for seperate degrees.

Information Science vs. Computer Science (1)

inmate (804874) | more than 8 years ago | (#13531830)

When I read Comp.Sci and Math many years back, my university offered two distinct courses:
Information Science which was offered by the Economics Faculty - geared heavily towards the use of Computers in Business.
Computer Science hosted by the Science Faculty - focusing on the academic aspects of Computing.

For us, the choice was made quite clear - If you are more interested in building a base for a normal career working with computers, go with Information Science.
If you are more interested in going into research, or doing 'low-level' work in high-tech firms, go with Computer Science.

Clear cut and everyone was happy!

Touch Typing? (0)

Anonymous Coward | more than 8 years ago | (#13531831)

I'm sorry, but I just can't take anybody seriously who thinks touch typing belongs in a college-level curriculum. I took that class in 8th grade!

Databases and data modeling. (1)

infosinger (769408) | more than 8 years ago | (#13531836)

I have been on the hiring side for many years(I am a software engineer) doing low level over part of my career and doing web services during other parts and the areas of expertise(or even proficiency)that seem to be hard to find are data modeling and databasing.

CS vs. IS. (1)

Calaban9 (205442) | more than 8 years ago | (#13531839)

I am a CTO for a small but technologically cutting edge software development company and I hire both CS and MIS graduates and I can tell you both are necessary but my experiences in the labor pool point to MIS guys being a dim a dozen and CS guys that really get it are rare. On average my CS guys are my heavy hitters and make 50% more than my other developes if you normalize for experience. In fact I've found that the software engineering limits those employees ability to be creative While they write more "reusable" code it's rarely efficient except in the managment sense.

you shouldn't be going to college (1)

liveevil (814109) | more than 8 years ago | (#13531845)

No you are not. Get out of college right away and quit wasting all that money. Go to ITT tech or get a certification such as MCSE. You will be working and making money a whole lot sooner.

Mix it Up (1)

mr.warmth (910296) | more than 8 years ago | (#13531846)

I advise students to follow the same education pattern that many successful developers I hired over the years followed:

In school, try to take courses which offer you a chance to learn something you'd never learn otherwise. For example, you will learn Fortran when working for me, no need to learn it at school (that was a joke, by the way Though you will.) On the other hand you will probably not end up learning, oh.. compilers, say, or discrete math, on the job. So take that at school and you'll have an edge over the people who are working with you and didn't.

But that's only half of it. I won't hire you unless I know you're self-sufficient and can work. How do I know that? From your resume. If you have 4-5 part time jobs you've done while in school, and these jobs pertain to the field, I will probably give you a shot: both because I like the people who bust their ass, and because you had probably learned something at those jobs that you didn't learn in school.

And finally, learn to WRITE and SPEAK. Can't stress it enough, the hardest thing to get a programmer to do is give a simple concise STATEMENT OF FACT. This drives me absolutely nuts. I have a few english majors working in the dept (I didn't hire them) and at least these guys can tell me what the problem is. Too bad they can't code.

Two years or Four years (3, Insightful)

wk633 (442820) | more than 8 years ago | (#13531852)

If you just want a job, go to a 2 year college and cram in as much as possible off his list. Do some stuff on your own if you have to. Fast, cheap, you'll be in the job market right away.

On the other hand, if you find yourself asking deeper questions in class, and instructors either not able, or not willing to take the class time to answer, maybe you should go to a 4 year after all.

I've used very little of my B.Sc directly in the last 12 years. But I can't count the number of times that something I learned has been very important to what I do. I also have a better perspective. People without a broad background tend to focus on solutions in their knowledge domain. People who understand how big the domain is can look outside it.

XML? Good grief! What do people like me who finished school before XML even existed do? Cry that we missed out? Or just learn it on the job, like every other new technology that appears after graduation day? The cutting edge is a moving target. If you try to aim for it, you'll be out of date by the time you finish. If you build a strong background, you'll be sharpening the edge.

Sure, there will be employers out there who expect to already have experience in some obscure specific software they use. But there are those willing to treat coursework as experience. 2 years in the workforce, and it will be irrelevant.

One thing I will say, is that you should round yourself out with some electives such as: business, economics, accounting, law, etc. A lot of people can write code. Not everyone understands the business reasons behind the code.

Simple, look at job requirements (1)

nothingx (809091) | more than 8 years ago | (#13531853)

Go to any company you'd like to work for and see what their requirements are for becoming a software engineer. You will find most, if not all, list having at least a BS in computer science for a basic requirement. Take Google for example [google.com] :


BS or MS in Computer Science or equivalent (PhD a plus).
Several years of software development experience.
Enthusiasm for solving interesting problems.
Experience with Unix/Linux or Windows environments, C++ development, distributed systems, machine learning, information retrieval, network programming and/or developing large software systems a plus.

So, assuming you get your degree, which I hope you will, you will have the top requirement met, and because you're taking a machine learning class, you will have one of the bonuses covered. Everything else is up to you.

That answer your question?

Couses to pick (1)

Derkec (463377) | more than 8 years ago | (#13531859)

History of Econ class sounds interesting. Your in college at least partly to expand your horizons. Definately stay in that.

Otherwise, yeah, what you learn in school isn't the most relevent to finding jobs. That's why it is most important that you get an internship or failing that contribute to an open source project.

Classes just don't give you the opportunity to work on projects of an acceptable scale to be real experience.

Theory of Computation can actually be a fairly useful course. Much more so that I thought it would be while I was taking it. There are some useful abstrations in there.

I did take an OO class in Java that was useful to me, and I wish I'd taken the database course that was offered. Other than that, the courses I took just gave me a decent vocabulary for the real learning I would do as an intern and junior programmer.

The author of the article complains that there aren't courses about XML. Wah. XML just isn't that hard. It's self descriptive after all. The trick is learning about how it's used. Since it is used in different ways all over the place, any digging you do in a college class is likely to teach you about a way you never use it.

Still, the best college course I took for preparation was our senior project. We took a team of five students and worked on an industry supplied small app for the course of the year. Great experience and it was a solid talking point for me in my early interviews.

Closed minded and greedy (0)

Anonymous Coward | more than 8 years ago | (#13531869)

If you want to constrict yourself to the current trend of computer languages and business models then go into a Computer Information Systems' degree.

On the other hand if you are looking to advance the current trends into a new direction that including business models then go into Computer Science / Electronics with a concentration in System and hardware.

A rule of thumb:
CIS == Technical Degree
CS == University

Its up to you

The key word is... (1)

torstenvl (769732) | more than 8 years ago | (#13531870)


If you want a "job" then go to a tech school. University is for people interested in advancing a field of study.

One of the biggest problems with the education system is the massive influx of people who don't care about education, but about training.

On the other hand, if you actually care about algorithmic efficiency and want to work doing CS research, say at Google or any other lab, then these courses are indeed useful for "getting a job" -- or rather, starting a career.

There are a few questions you should have asked yourself before getting into this field. One of them is whether you're more interested in shaping the field of computer science or if you just want to be a techie for some company somewhere.

learning a language is easy (1)

StarvingSE (875139) | more than 8 years ago | (#13531872)

Learning a language is easy. Most curriculums just pick one (mostly C++ or Java) and use it to teach you "how to program." The "how to program" part is what is important. Sytnax and features change between languages and technology, but the core fundamentals are the same (ie good coding styles, algorithms, etc).

Like others have said, anyone can sit down and memorize the syntax of a language and program semi-proficiently with it. But when an employer wants a program done in a specific way, or in many cases to run in the fastes way possible, then they want to talk to the CS math geeks to come up with an algorithm.

Network engineer (1)

PtM2300 (546277) | more than 8 years ago | (#13531874)

The school I went to was pretty much a four year technical college. In the end I was given a B.S. degree in Telecommuniaton Systems, but I'm not sure what that means. I think the hands-on, technical training landed me a great job with great pay, but I think having more of a "learn the concepts, learn the origins" degree would help me acheive a higher salary in the future.

Would you hire Dan Zambonini? (0)

Anonymous Coward | more than 8 years ago | (#13531875)

His resume goes into the circular file.

learn Java and C/C++ then get a clearance (0)

Anonymous Coward | more than 8 years ago | (#13531878)

Learn basic Java and C/C++ programming then get a clearace and move to the DC area. If you have any computer experience, you will most likely be able to get a job very quickly. I am looking for a Linux programer with clearance. Check the web!

Meh.. (0)

Anonymous Coward | more than 8 years ago | (#13531888)

Don't listen and keep doing what you are doing..


I had a class "Programming Languages" - it taught various language paradigms (functional, object oriented, logical, etc). As an example, we were asked to learn basics of some sample languages (C++, Prolog, Scheme).

I'll admin I've never written anything in either scheme or prolog ever since.

However, trust me, the class taught me a hell of a lot more about object oriented way of doing things than any stupid "Introduction to Java" class would have.

I can show you tons of examples like this - classes that taught HTTP instead of HTML, database normalization instead of SQL, etc.

I've been working at a company for nearly 4 years using a language that I only heard of at the time of my interview. My knowledge of underlying and related technologies got me through.

Looking back over 30+ years (1)

overshoot (39700) | more than 8 years ago | (#13531892)

Yeah, I have a BSCS. I also have a boatload of physics and maths that weren't required for the degree.

Very few of my classes turned out to be useful right out of school. However, the ones that I use most now are the ones I thought would be least useful at the time. Those theory classes don't do you any good right away, but they're utterly indispensible as a foundation for staying current for the rest of your life.

I promise you, the vocational stuff will all be in a landfill fifteen years from now, but the theory will be keeping bread on the table.

If you ever have to choose, I'll second every single professor that my children have asked (physics, EE, psychology -- unanimous): you can never get too much maths!

Software Engineering (1)

Mike Schiraldi (18296) | more than 8 years ago | (#13531894)

I went to Columbia, and in the past ten years they've completed overhauled their Software Engineering course something like four times. And, as of the time i took it, it still sucked.

But it's not Columbia's fault .. i haven't heard of any CS program that provides good Software Engineering education.

Specifically, in the real world you'll often have to work with huge existing codebases full of legacy code, written by other people. Schools leave graduates woefully unprepared for this.

Important lessons they should teach:

- How to use a debugger to quickly find the bug in 20,000 lines of someone else's hairball code

- How to use a profiler to improve the performance of someone else's hairball code

- How to use a memory debugger, like Purify or Insure, to find the obscure memory error in someone else's hairball code

- How to refactor hairball code safely and in such a way that you can still ship at any time

But no, instead we learned about UML.
Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Sign up for Slashdot Newsletters
Create a Slashdot Account