What does a Computer Science degree consist of?

Started by
68 comments, last by SavX 19 years, 11 months ago
quote:
Don''t knock that approach! Networking is considered at least, if not MORE important than education when it comes to getting jobs - anyone in the gamedev industry (or career services) will stress to you the importance of making contacts!


Maybe you misunderstood; I wasn''t knocking it. I, personally, gained all of my professional programming experience via networking. Networking is critical for any ''good'' job, anyway.

quote:
Entu, what would you recommend I take then?


I''ve already reiterated this: Information System, Information Technology, a Business degree of some sort, Mathematics, Physics, etc.

Based on what you seem to be interested in (game development), I''d personally take a major in either math or physics, with a minor in journalism / english (might help with putting together stories and whatnot).

---------------------------Hello, and Welcome to some arbitrary temporal location in the space-time continuum.

Advertisement
This networking you are talking about. I may have got this completly wrong but you mean meeting people who help you get a job right?
SavX
quote:
I''d still doubt you can find anyone who could learn nearly as much from the ''net in 4 years as you are taught in a good university CS program though.


That depends completely on the person. You may have a valid point that SOME individuals learn better in a class room environment; I, personally, don''t. I find the formulatic way most professors teach to be a mind-numbing exercise in futility.

Granted, not *ALL* professors teach in such a conveyor-belt fashion, but enough do to make the process simply not work for me.

I think many other people that pick up technology concepts very quickly, like myself, will find the same is true for them as well.

quote:
That''s the point - without a good academic foundation you''re only going to be able to understand things that are "old news" in CS, and then as you have so aptly pointed out: many of these jobs are being moved east.


I''ve usually found the opposite to be true, actually. It usually takes at least a year before any new concept is integrated into the curriculum - if not longer. Sure, many DOCTORAL programs cover VERY advanced topics (and are usually the area where new concepts are spawned in the first place), but we''re not talking about PhD''s here - we''re talking about a standard, run of the mill 4 year Bachelor''s.

quote:
The thing that people do not realize is that if they want to be paid twice as much as the programmers in India, they have to PRODUCE twice as much. I''d find the latter hard to do without a very good education.


Not possible. You have the same 24 hours in your day as the programmer in India. Companies realize this - they don''t care how well educated you are, unless you''ve got a PhD, you don''t know anything that they *NEED*. What they *WANT* is people who can do things that the programmers in India CAN''T do - understand the business processes behind the software, develop better intraction with end users, etc.

Also, programming is--just like writing, music, or film making--an artform. You can not be taught art. You can not be taught logical thought (sorry, "Logic" classes don''t count). You can not be taught intuition. You can not be taught how to innovate.

Hence, you can not be "taught" how to be a good software developer. You can be taught some general practices that might make things easier / cleaner (hungarian notation, anyone?), but that isn''t quite the same thing as being able to figure out wholly unique algorithms and processes to accomplish specific goals. That takes intelligence, not knowledge.

---------------------------Hello, and Welcome to some arbitrary temporal location in the space-time continuum.

quote:
This networking you are talking about. I may have got this completly wrong but you mean meeting people who help you get a job right?


Referring to "social networking", not "computer networking" (sorry about the confusion).

Yes, we''re talking about your friends, family, co-workers, and any other industry contacts that might be able to help you get your foot in the door.

This is true for all industries though, not just computers.

---------------------------Hello, and Welcome to some arbitrary temporal location in the space-time continuum.

quote:Original post by Etnu
That depends completely on the person. You may have a valid point that SOME individuals learn better in a class room environment; I, personally, don't. I find the formulatic way most professors teach to be a mind-numbing exercise in futility.

Fair enough, but that is why most institutions provide many different things in a course that help to address many learning styles: ie. lectures, course notes, textbooks, assignments and exams to name a few.


quote:Original post by Etnu
I've usually found the opposite to be true, actually. It usually takes at least a year before any new concept is integrated into the curriculum - if not longer.

I agree that you certainly aren't learning things right as they are discovered in undergrad, but undergrad is supposed to set the foundation for graduate work, and to understand the more advanced topics (notice how most courses are "Intro to [whatever]"). Judging by how well the PhD's, etc. do with research and generally expanding human knowledge, I'd say that it's a fairly effective system.

quote:Original post by Etnu
Not possible. You have the same 24 hours in your day as the programmer in India. Companies realize this - they don't care how well educated you are, unless you've got a PhD, you don't know anything that they *NEED*. What they *WANT* is people who can do things that the programmers in India CAN'T do - understand the business processes behind the software, develop better intraction with end users, etc.

This is true to an extent, but I'd argue that someone who writes good, well documented, easy-to-read, organized software is easily twice as good as someone who writes even average code. In fact the former type probably saves a company more that twice as much in TCO-type things, let alone productivity. Remember that the cost of fixing a bug rises literally exponentially the further along into the development it is caught.

I'd argue that the run-of-the-mill programmer is gradually getting replaced by more advanced languages and systems. Eventually all that we will need are innovators. The only thing that I disagree with is that a college CS course, or a more specific networking/IT course teaches you these skills any better than a good CS university. I'm arguing that it is the scientific approach to CS that stimulates much of the theoretical thought required to be this type of person: an innovator rather than a code lackey, ie. the difference between a GREAT programmer and an average one.

Even if you consider programming an "art" (which is stretching it a bit IMHO), one still requires some teaching. No matter how musically inclined you are, you still need lessons in chosen instruments or what not. Your natural ability may influence how FAST you are able to learn things, but no one (that I know of) is born knowing formal verification (for example). And no matter how "logically inclined" you are, you could waste the rest of your life re-inventing this particular wheel.

And as you mention, you cannot be "taught" to figure out whole new algorithms or such... but I'm 100% sure that someone with a good knowledge of the types of algorithms that already exists - their advantages and disadvantages (including the rigorous analysis done in many classes) - will be much more able to come up with new algorithms, that may or may not be extensions and modifications of old ones. I don't think anyone would argue that you should end up reproducing the work of hundreds of other brilliant minds simply because you refuse to be educated in what they have done.

I'm also sure that this isn't what you are arguing, but I guess where we end up disgreeing is that a more specialized program would teach you any of these skills better. In fact I'd be a bit hesitant to recommend such a program simply for the fact that skills that are too specialized in CS tend to change too quickly without a fundimental understanding of the subject matter. The Turing machine model is not likely to change, and you're probably safe learning how to work with it - on the other hand someone who knows every in and out of a fixed-function graphics pipeline is probably finding the transition to the new shader model to be hard, if they do not understand the theories and research that graphics hardware is based on.

I guess we may not be discussing on the same plane though - you recommend Mathematics as a major... in my program Math and CS have all of the same required courses for the first year, and many similar after that. Our CS program is HEAVILY math-based (actually I get a BMath(CS) when I'm done), while I'm getting the impression that that might not be true of other universities.

Anyways I think I'm probably beating this point to death now, but I simply do not want someone to be dissuaded from a potentially advantageous education simply because others have had bad experiences at certain institutions. Be sure that there are many out there with excellent programs.

As a last point: do not base your career on where you are going to earn the most money... if that was the case, you shouldn't even be in CS. You'll discover that money is not what will make you happy in life. Money is certainly not a substitute for a job that you dislike.

[edited by - AndyTX on May 10, 2004 1:53:29 PM]
To give a little perspective to you (mostly american?) people, I can tell what I''ve learned while studying for a MSc grade in CS in Sweden. I can tell you that so far (end of second year), it''s very heavy on the math. This is what I''ve read:

* Single and multivariable calculus
* Discrete mathematics and logic
* Lisp / Ada / Java programming
* Algorithm theory
* Combinatorical optimization
* Digital technology (including construction project)
* Electronics (low pass filters etc)
* Classical physics
* Magnetism theory
* Linear algebra
* Interaction design
* Numerical algorithms / analysis
* Computer organization / assembler programming on 68K, microprogramming
"Archangel, dark angellend me thy lightthrough death''s fail until we have heaven in sight"
Grul; what University did you attend? Just curious, personally I got a degree at LTH.

Etnu: Just a quick few remarks. I completely agree with you in the sense that some people actually learn more by finding knowledge by themselves. This is however a cardinal rule whereever you are and regardless of what you are doing. The best professionals are not the ones just simply dragging their asses through a degree, it''s those who find knowledge and extend their own knowledge out of interest.

As for a small comment; I find it is more opposite. It is people who have easy to grasp new technological concepts that benefit the most from BS/MaS degrees at college. Why? First and foremost it gives you a concrete guarantee that you know enough to do most programming jobs. (Note the most ). So, many companies thus use the CS degree as a filter, just to filter out the ambitious from the non-ambitious. Now, before you lose your temper over the last statement, read the following lines.
Ambitious are the ones that truly go through their degree and on top of that keep themselves on top of their game, learning the new technology as they interact with new learning experiences on campus. Of course there are jarheads that just got through a degree but these will be cast away at the interviews/admittance exams. What companies want, is a person that proves responcibility, interest and ambition.

Before flaming, again, think through the following thought. If a company can choose between two individuals, one that has spent spare time working and teaching himself the relevant technology (for simplicity, let''s say it is game programming), learned this good and has more than enough skill to actually qualify for the entry-level job they are seeking. Then they have the other individual, has a BS/MsA degree in CS AND has on top of that managed to learn all the latest technological breakthroughs to the exact same level as the other guy (this is for simplicity and not counting that the man who was on campus perhaps didn''t have to work full-time to support himself and thus has more spare time to learn stuff. Especially if he is "gifted" and has "easy to learn"). So, honestly, who do you think they will choose? In reality it is a tough call, since both have exactly the same level of knowledge.

However, at my company I would choose the guy who has the degree. Why? It shows skill and ambition. He has gone through the CS degree, even though he might not have needed it, only to be able to show that little piece of paper. He has also shown great ambitions by actually teaching himself all the technology on the side.
Bah, I could rant about this all day. Bottom line is I would always hire the CS guy. Actually, I''d never even post an advert for a person that doesn''t have a degree in CS. (If we are talking programmer jobs of course) Why? Just as I said earlier, as a filter. Plus, out of personal experience, most academics (with the same skill level as freelancers) often have much less trouble communicating and delivering their message both in speech and on paper.



Also, another thing I found true during my studies. All the math a game programmer job requires is frustrating to learn on your own, much harder to master. I have had friends trying this daunting task and failing over and over. Why? Because Linear Algebra and Calculus of Sev.Vars. are very hard mathematical courses. It is hard to do it on your own, without any input and help. (Just as a side-note, and not bragging. To convince you that I know what I am talking about, when discussing math, I got the highest degree possible on both courses. 5 over here, I''m guessing it would amount to an A in the US. Not sure though. Again, not brag, just trying to tell you I know what the course is made of. Nothing more, nothing less)

Anyhow, those were my two cents. Of course, I do realize that the CS degree is not really a measurement of competence at all. I also know that freelancers with a passion for the industry can learn much more than any dopehead just going through the CS program for merit. But, the truth is that companies use the CS degree as a filter, just because of the matter I posted in mid-post.
-----------------------------Final Frontier Trader
quote:Original post by haro
I would second idinkin in majoring in math instead of CS. If you are at all self motivated in development ( as presumably you are considering the site you're at ) then you will be bored out of your mind during a CS degree, even at a top university. An applied mathematics degree will also teach you information more relevant to programming than a CS degree will anyhow. Its funny that way.


An applied mathematics degree? What do you think Computer Science is? Too many people seem to think that Computer Science is learning how to program - if that's what you want, look into Computer Information Systems or perhaps some 2 year vocational program.

quote:
Computer science is no more about computers than astronomy is about telescopes.
- Edsger Dijkstra


quote:Original post by Etnu
Don't go to school for "Computer Science", unless you currently know nothing about programming, or are planning on getting a Ph.D in the field.


Quite possibly the worse advice I have seen on any topic ever.

quote:Original post by Etnu
Actually, if you're already very knowledgeable in computer-related things, you should try a major in math, physics, or business, all of which will probably help you a lot more than 4 years of snotty professors telling you that you have to use THEIR commenting style, THEIR variable descriptors, etc.


You too are under the impression Computer Science has anything to do with programming. If you're dealing with things like this outside of CSI than I suggest transfering.

quote:Original post by Etnu
Certifications are also far more important than your degree. a CCNA, MCSE, MCP, etc. certificate will almost guarantee you a job whereas a CS degree "might".


Hahahhaha. *tear*

quote:Original post by Etnu
All that being said - you need a degree in SOMETHING. Employers view it as a sign of your ability to commit to a project, and it shows that you at least know how to learn.


No, I'm afraid not. I'm not going to name specific degrees, but some are simply cakewalks, and employers know it.

quote:Original post by Etnu
Not possible. You have the same 24 hours in your day as the programmer in India. Companies realize this - they don't care how well educated you are, unless you've got a PhD, you don't know anything that they *NEED*. What they *WANT* is people who can do things that the programmers in India CAN'T do - understand the business processes behind the software, develop better intraction with end users, etc.


What? Why all this talk abotu PhD's? Do you really think these people get jobs? Someone with a doctorate pretty much stays in academia for life. If anything, a PhD hurts your chances of getting a 9-5 job; there is such a thing as overqualification.

Sorry to pick on Etnu so much.


[My site|SGI STL|Bjarne FAQ|C++ FAQ Lite|MSDN|Jargon]
Ripped off from various people

[edited by - wild_pointer on May 10, 2004 7:37:55 PM]
[size=2]
quote:Original post by Etnu
quote:
After a 4 year CS degree, where do you expect a fresh out of uni person to go? What kind of job do they usually get and how much pay is in that job?

What doors open when you learn all the things in a CS degree. What kind of jobs can you get?


That''s the problem. Without a more specialized degree (e.g. Information Systems, Networking, etc.), you''ll have a hard time finding an employer who knows precisely where to hire you. There are virtually NO entry-level programming jobs anymore, period. Everyone wants someone with years and years of experience. They''re not going to pay you even minimum wage to do some hacking when they can still pay someone in India half that much. That''s the reality of the market.

Also, I suspect that many people get programming job experience either via Internship or by using their professional certifications (or by using the classic "KNOWING SOMEBODY ELSE WHO WORKS THERE" approach).

I''d also like to point out that all of those "advanced techniques" you are being taught in high-level universities are nothing that can''t be learned about by going to Google and doing a little searching. Try it sometime.

Also, most advanced topics are *ALSO* taught in the more specialized courses.

I''m not saying a degree isn''t important. I''m saying that there are *MUCH* better alternatives for tech degrees than Computer Science.



Such as computer engineering or electrical engineering. Etnu nailed exactly how I feel. The reasons given are exactly why I changed majors.
Just want to thank everyone who has replied, the help has been very good. Thanks : )
SavX

This topic is closed to new replies.

Advertisement