Computer Science Curriculum in College 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?"
define your needs (Score:1, Interesting)
CS != vocational training (Score:2, Interesting)
I wouldn't worry, though, as most everyone else is going to be coming from this "wrong" program as well.
Re:no (Score:5, Interesting)
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.
Re:Answer to your question... (Score:3, Interesting)
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.
Re:Learning A Language in an Afternoon (Score:3, Interesting)
That is not a useless skill. It is not senseless boasting. It is what CS is all about and it is largely seperated from the mechanics of actually churning out code.
That said, current CS is so fricken divorced from the real world application of computers and programming it is not even funny. It is rapidly getting to the point where it will be entirely divorced from reality. For example I had teachers that still thought the number of times you compiled a program was an important factor. The reality of modern compiling/debuging simply had not registered with them yet. However, there is a middle ground between vocational programming classes and the pure theory BS of most CS course material. Putting the theory to work on real world projects would be a good start and it never ceases to amaze me that CS departments rarely seek out such challenges for their students.
its like a merry-go-round... (Score:2, Interesting)
but, if you wish to join the corperate world of working monkeys; you really need to supplement your education either with a business or engineering minor or second major of some kind.
i'm sure this will sound like every other post that has come before me...so i'm just adding to the mess.
dude.
It's a bit like Art (Score:3, Interesting)
What's worth it is learning stuff that would take you a lot longer (like maybe never) if you had to do it yourself, or interesting things that you would never have thought of learning - never knew was there to be learnt in the first place. So what if it seems "Theoretical" only.
If I were an employer, I'd ask you what projects you'd recently done for fun, not because you were told to or forced to do by your course or previous employer.
If you call yourself an artist and the last time you drew something was 3 months ago as part of your college course, well that just isn't very convincing. In contrast, you're a pretty good artist if you're absentmindedly doodling a decent caricature of me during the interview ("right brain" just has to do something whilst "left brain" is talking to me).
Same goes for programmers. I'd expect your college to teach you the theory stuff that will remain true for decades at least - algorithms, information theory etc. But I'd expect you to mess around with current stuff too, on your own, just for fun/interest - it doesn't have to be very much, and nowadays most stuff is just a few google searches away.
Oh yeah, it's fine if you don't know the fancy tools/buzzwords in the industry. But if you can't do the programmer equivalent of using a "pencil" and sketch something passable, there are plenty of cheaper people in India who can and _will_.
Saying you know UML and all the buzzwords won't be as compelling to me as you actually having written something interesting which you can describe and explain to me in the interview what bits you think are nifty.
Anyone can say they know some buzzword and regurgitate the relevant keywords and phrases, and stick that in their CV. If people needed that, they should use google. If they only need just a bit more AI, maybe they should outsource
However, I'm not an employer at the moment, so maybe you should go with the flow, and listen to that buzzword guy
Re:Answer to your question... (Score:3, Interesting)
But I've almost never met a *great* programmer (i.e. somebody who can independently design and develop complicated solutions and implement them efficiently) without a pretty strong theoretical background. That doesn't mean you absolutely *need* a formal education, some people are great autodidacts and can learn even theory on their own, but a formal education in CS is a good way for your average bright person to achieve this goal.
Of course, a good liberal education ought to be a prerequisite for citizenship and your other responsibilities to yourself and mankind. College isn't vocational school, and if they teach you properly how to learn and assimilate information, then picking up the skills you need for a particular job should be a piece of cake.
Re:if you want more vocation, plus a better chance (Score:5, Interesting)
I find myself trying to create a data structure/tree like a family tree or a directory structure. Each node has multiple children, a node can have no children, a fast way to find a path from a child to the root, etc. And in wondering how to create such a tree I find the usefulness of textbook knowledge, specifically the jargon. I'm reading like crazy about red/black trees, linked lists, doubly linked lists, binary trees, what a map is compared to a list, etc etc. It goes on and on. And I'm sure a course would have covered this or at least given me the knowledge to see quickly if the standard Java libraries have this structure already built.
Many of the Java books I'm reading have wording like, "if you remember from your CS class what a binary tree is, here's how to implement one in Java
I definitely envy those who took any kind of data structures course.
High school counselors are failing our students... (Score:3, Interesting)
The courses you listed are indeed useless for "getting a job" as they are in nearly every undergraduate major at major universities. And, contrary to what most high school students are told, the more elite the university, the less your degree will be helpful to you in just "getting a job."
Universities do not claim, and do not intend, to create workers. They do not provide "job training." They are not designed to find you a place at a company, but rather to give you the skills that you need to establish for yourself a place in the world.
Mere job-seeking and work as "an employee" requires that you limit the authority that you take for yourself and your actions; job seekers must order their universe using the already existing structures of the marketplace and the companies within it, and must order their daily lives and work according to dictates from above, in whatever company the end up working for.
Universities by contrast, in particular the elite ones, develop individuals who transcend marketplace, corporate, authority, and governmental structures. Their goals are to produce amazing people who will someday create those structures for others (i.e. the job-seekers and employees) rather than efficient people to populate them.
Many people are not suited to life outside of the employer-employee relationship. It implies a higher level of initiative, a greater amount of responsibility, a greater amount of culpabilility, greater stress (and possibly uncertainty) in life, and the requirement that you always think globally, flexibly, and adaptably, across a number of fields, criteria, consequences, and fronts, rather than just locally within your current task or field.
Young slashdotters: if you just want "a good job that pays well" with a minimum of other responsibilities, entanglements, or with guarantees about wages, responsibilities, and futures, you should be thinking about trade schools and vocational schools, not university, especially not top universities.
You simply do not go to a top university "to land a better job." Unfortunately, too many students do just that and then find themselves sitting around afterward unqualified for "jobs," unable to find "work" (because they are actively looking within the existing marketplace and corporate infrastructure of society, which universities by and large do not address), and saddled with debt.
For the right segment of the population -- bright, creative, self-directed, wanting to change the world rather than to work in it, willing to be flexible and to forego promises and stability -- university is precisely what the doctor ordered. For the 75% of the population that doesn't care what they do so long as it pays well, gives them a 401(k), health insurance, and the chance to climb the authority "ladder" within a single company, university is a colossal waste of time and money.
Re:Answer to your question... (Score:3, Interesting)
Sure, the definition of large-scale is relative, but if you force 5-6 people to work on something for 3-4 months then they normally construct something much larger than they will have come across before. It also gives them some specific experience for their first job. Most groups tend to write games (as they're more interesting) and the quality that they come up with is suprisingly good.
The areas that come up in CS that the article poster was complaining about; vision, graphics etc are the domain specific areas in CS. In particular they teach students to apply the same core set of maths and programming skills to different areas. I don't think that this approach is that different to engineering. But then, at my uni, the CS department is in the engineering faculty, rather than the maths faculty...
Re:no (Score:3, Interesting)
Re:BS degrees are more vocational (Score:3, Interesting)
MS = More Shit
PhD = Piled Higher and Deeper
But seriously, a PhD is no longer a ticket for the gravy train to tenure town. Tenure track faculty positions are incredibly hard to get, and if you do get one, you still have to bust your ass for a number of years doing research, writing grant proposals, etc. I took a course with a faculty member who was about a year out from getting evalulated for tenure. We had various homework assignments, and they were due at midnight on the due date. I figured that meant we had to slip our assignments under his door before he came in the next morning, but more often then not, he would be in his office at midnight working. So it does take a lot to get tenure, and also consider that a university position probably isn't going to pay as much as a job in industry.
Wrong (Score:3, Interesting)
* A Computer Science degree is not primarily about getting a job
* Understanding theory does in fact make you a better, and more employable, programmer
Re:The choice of degree matters less than attitude (Score:5, Interesting)
"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.
I think your statement here sums everything up nicely in favor of university degrees. You don't have such a degree, you can't learn new languages fast, can't recognize that ability in others and after four years you're still not an expert at the one language you do know and use daily.
Aside from the exaggeration of "[one] afternoon" which I agree is insufficient. You believe it's impossible because you yourself are unable to accomplish it due to your limited vocational training. Then you falsely project your own limitations on to others. As other posters have replied: yes. with a well grounded backround in theory and fundamentals it is possible to pick up yet another language in a very compressed period of time. (Though some of us benefit from an advantage in age over you.)
I have been proficient in the past with Fortran, Pascal, Modula-2, LISP and various assembly languages. I am currently proficient in Perl and shell and an expert in C, C++ and Java. (not trying to brag, a lot of /.ers have similar, or larger, skill sets and will relate to the rapid shifts in technologies that result in such sets.) The last job I took
up required teaching advanced data structures in Java; a language I hadn't touched before the first day of class. Within one week I was productive in the language, within two proficient and within a month I was expert and using most of the advanced features of the language. I can't count the number of times my employment positions have put me in such a position where the programming requirements of the job have changed abruptly. I have always been ready to adapt to the challenge in a very, very short time frame and I believe this is due to my university-based education. I'm not afraid to change jobs or be fired because I know I can adapt and be valuable and productive in any new environment.
Here's two more examples:
I'm really sorry for all the excellent, creative problem solvers you turned away because of your bias towards a single answer. "I don't know" is a perfectly acceptable answer (in any context) and doesn't, in itself, indicate an unworthy candidate. "I don't know; but I can learn it real fast" can indicate a truly flexible, useful person. Your loss; not the candidates.
Re:if you want more vocation, plus a better chance (Score:3, Interesting)
Virginia Tech does this [vt.edu], and their grads are quite well-placed in the job market.
2) Besides, why should CS degrees be undesirable? All the stories these days are about CS departments losing [xplanazine.com] enrollment. [timesdispatch.com] Seems like a good time to "buy in."
3) The money isn't in coding...it's in management. You are *far* more likely to land a management position with a degree. Granted, the profit motive isn't the only consideration, but still...
Do you want a job or a career? (Score:5, Interesting)
I got my CS degree in 1984. It's still useful, because they taught me theory, The languages they used (Pascal, PL/1 and LISP primarily) aren't.
My enthusiasm got me jobs. The degree only helped.
When I went to law school, almost everything I learned was theory. When I started the practice of law, I knew virtually nothing about actually running a trial. Now, I'm writing the book, and a publisher pays me for it.
Much of what I learned from the practice of CS and of law could have been taught at a trade school. 95% of the time, my work would be competent.
But that remaining 5% distinguishes between a tradesman and a professional. As a prosecutor, cross-examining the defence's psychologist or engineer, I have the advantage of knowing the basic theory behind their disciplines, because of the courses I took at university. I only tinker with writing software now, but I grok the new languages fast enough (when I get the chance to turn my mind to them).
I don't knock the trade schools. Enthusiasm to learn takes some people all the way through the theory they need to be pros. They don't need a university degree to be good.
And uninspired university graduates are so useless that should not be permitted to do anything important. I wouldn't hire them.
I remember that IBM used to hire only people with university degrees. Not just CS. Any degrees. IBM wasn't interested in what they learned at university. They wanted people who had the the enthusiasm/fortitude to slug their way through dry theory. A degree proved that the kid could work. Isn't that what an employer wants?
So what do you want? A job or a career? How much do you want it?
Comment removed (Score:2, Interesting)
Re:The choice of degree matters less than attitude (Score:3, Interesting)
I don't know about C#, but I learned Tcl and Python in about two days each. I do the following:
That takes maybe 3-5 hours. The rest of the time is spent coding with the API reference at your side. I'm only just started my third year of a CS degree (along with Chemistry).
The fact of the matter is that most languages you'll be using are object-oriented imperative languages. Once you've played with languages like ML and Prolog, you'll realize how similar they all are. The "intricacies of writing code" are mostly design and algorithm choices. Figuring out how to execute the design in your language of choice is trivial.
Technology versus science (Score:3, Interesting)
But it's not science. It could be argued that a typical computer science curriculum doesn't teach much science either. Quite possibly the coursework needs to be strengthened, though I know from my modest contacts with curriculum development that in practice it very much depends on how fast students can absorb the material and consider its implications. Faculty discuss this challenge all the time. To get the basics of computer science in four years is, not surprisingly therefore, about the same process, and about as hard, as doing the same thing in chemistry or any other scientific field.
So it seems inevitable that improvements to the computer science curriculum will move it some distance further away from Zambonini's shopping list than it is already. Science, after all, is a systematic discipline for discovering the nature of the universe.
I notice that Zambonini is not in the least concerned about that. So why look to a science degree to deliver something that's not in fact about science? You're shopping in the wrong store. Learning how to program, for example, is like learning how to operate a mass spectrometer. Of course you have to master the tools, but in science that itself is strictly not the goal. In a technology diploma it pretty much is.
Re:if you want more vocation, plus a better chance (Score:3, Interesting)
On the contrary, there's a whole theory of computation that is far from fully understood. Godel's incompleteness theorem, Turing machines, the Halting problem, computational complexity (as opposed to trendy modern SFI-style complexity), issues surrounding self-replicating automata...some of the greatest minds in science, never mind computer science, have spent serious time on understanding what is computation and what are its abilities and limits. I'm sure there's room for one or two new thinkers.