Slashdot Mirror


Computer Science Curriculum in College

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?"

104 of 654 comments (clear)

  1. if you want more vocation, plus a better chance by the_2nd_coming · · Score: 2, Insightful

    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.

    --



    I am the Alpha and the Omega-3
    1. Re:if you want more vocation, plus a better chance by Anonymous Coward · · Score: 4, Informative

      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!

      * :)

      APK

      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

    2. Re:if you want more vocation, plus a better chance by oc255 · · Score: 5, Interesting

      I would agree with the usefulness of a Data Structures Course. It just so happens that I started a Jr Development (Java mostly) position recently and I was not a CIS/CS major (career change from SA/Unix).

      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 ..." The theory background would have made this a lot easier/faster, rather than jumping right into a specific language.

      I definitely envy those who took any kind of data structures course.

    3. Re:if you want more vocation, plus a better chance by halcyon1234 · · Score: 5, Insightful
      Having been to both University and College (Canadian terms. US equiv is, I believe, College and Community College?), I can say that I can't see not having both.

      Although it is true that CS is a highly academic and theoretical field, almost all of its applications are (appropriately enough) applied.

      So, what are some of the most common arguments?

      If you don't know how to actually program a computer, an employer won't care if you know the theory behind machine code

      Essentially true. Unless you get some plum "sit around and think about computers" job, most employers will want you to be able to actually DO the job they hire you to. However, on the flip side of that:

      An employer doesn't want someone who has only been trained to use Language X. They want someone who wholly understands the concepts of programming and can adapt to any situation as the company grows.

      Again, essentially true. Unless you are doing a temp contract, most employers will be looking for a Programmer (or some buzzword, like Solutions Analyst)... not a C++ Do..Until Loop Programmer.

      But, as you can see, both of those requirments seem to contradict each other by seemingly presenting an either/or case. Either you know Programming OR you know C++.

      And the same applies for just about any field in CS. (Either you know Network Administration, or your know Cisco Routers. Either you know Web Mastering, or you know Apache. Etc, etc.)

      I first completed a college diploma, and learned how to build a network (Cisco style), how to set up and maintian websites (Apache style), and how to run databases (MySQL style). Although there was a spattering of "theory" in each course (usually consisting of the introductory lecture to each course), it was all "hands on".

      I graduated and transferred over to University. By Year Two, I felt so detached from actual computers. I was learning a lot of facinating theory stuff, but really wanted to do something with it. Of course, "doing stuff" was a 4th year course. ;)

      So, after getting most of the requirements for the Bachelor degree, I decided to switch back to college. In Ontario, colleges have been allowed to grant Applied Degrees.

      Having experienced a good chunk of the cirriculum, I have to say that this is a great solution. It's a nice mix of theory AND practicality. Personally, I'd like to see the Universities lean more towards an Applied Degree, with all the serious intensive THEORY courses offered as 3rd/4th year electives... and as Masters. (I firmly believe that Masters should be near 100% theory. You SHOULD get a Masters in Network Science, not a Masters In Cisco IOS).

    4. Re:if you want more vocation, plus a better chance by cagle_.25 · · Score: 2, Interesting
      1) "Having both" can mean something as simple as getting a CS degree and having a junior-year or junior summer internship in your field of interest.

      Virginia Tech does this, 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 enrollment. 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...

      --
      Human being (n.): A genetically human, genetically distinct, functioning organism.
    5. Re:if you want more vocation, plus a better chance by halcyon1234 · · Score: 3, Insightful
      not a C++ Do..Until Loop Programmer.

      There is no such construct in C++. Perhaps you're thinking of do..while?

      Yes, that's it. (Another problem with learning too many programming languges. Too much syntax! =) )

      When you look back historically to the great innovators in computer science, they came from disparate backgrounds, usually math, physics, engineering, or computer science. The commonality between these backgrounds is the formal scientific training. Formal scientific training, therefore, is obviously pretty important.

      I don't think it's that cut and dry. One of the reasons why many of the innovators of computer science came from non-CS fields is because CS hadn't been invented yet. There were no computers to... um... sciencefy. Much the same way that Henry Ford didn't major in Car Mechanics. ;)

      Although it's true that it requires a good amount of scientific method to be "a computer person", computers are becoming more and more reliant on non-math&phsyics expertise. Psychology is needed for good UI design (not to mention AIs). Physiology / kinesiology is needed for ergonomic design.

      The thing is computers aren't a thing to do, but they are more a way of doing things. You can study pure math. But you can't really study pure computers. You can specialize in things like "using computers to calculate complex chemical reactions" or "networking computers for increased computational power" or "studying the effects of photorealistic 3d graphics on the psyche of farm animals"... but you can't really just study "computers".

      It may be because, unlike math or physics or chemistry... there's really nothing to "discover". There's lots to invent and improve, sure... but there's no real ingrained "laws of computers" that are woven into the natural fabric of the universe. There's no Plank's Constant or equation balancing or Realtivity. There's nothing that's tangibly abstract (???) that's just THERE to explore, discover and derrive.

      If you don't mind being eminently replaceable, go for a vocational focus, and then try to get into the business end of things, because the minute a new paradigm takes over, you will have trouble adapting, or at best, will probably not get the most out of the new technology or use it effectively.

      Amen to that. This is exactly the difference between being prepped to do a job and training for a career. If you're only taught how to do stuff with IIS, and then one day MS dumps IIS for some stupid paperclip based web server, you're screwed. But, if you've learned how to use web servers in general, and understand the theory behind them, you're more likely to be not-screwed. (Of course, if you don't know how to actually USE any of the current technology, well, you're as useful as someone with their Masters in Automobile Theory who doesn't have a driver's license....)

    6. Re:if you want more vocation, plus a better chance by alicenextdoor · · Score: 3, Interesting
      It may be because, unlike math or physics or chemistry... there's really nothing to "discover". There's lots to invent and improve, sure... but there's no real ingrained "laws of computers" that are woven into the natural fabric of the universe. There's no Plank's Constant or equation balancing or Realtivity. There's nothing that's tangibly abstract (???) that's just THERE to explore, discover and derrive.

      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.

      --
      of course, biting monkeys is not to everyone's taste - Konrad Lorenz
    7. Re:if you want more vocation, plus a better chance by boomgopher · · Score: 2, Informative

      I find myself trying to create a data structure/tree like a family tree or a directory structure

      Do you really need to create your own datastructure? The Java Collections framework has a number of good classes and interfaces that are useful. Anytime I've thought I needed to do this from scratch, I was wrong...


      --
      Your hybrid is not saving the environment. Its purpose is to make you feel good about buying something.
  2. Regarding the purpose of a higher Ed degree... by JymBrittain · · Score: 5, Insightful

    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.

    1. Re:Regarding the purpose of a higher Ed degree... by Coryoth · · Score: 5, Insightful

      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.

      The issue I have with evaluating everything in terms of "but will it get me a job?" is that, as you say, over your lifetime you'll probably make a few jumps in career path, so the skills you invest in now might not be what you find yourself doing in 5 or 10 years time. Add to that the fact that, especially in the IT field, there is a lot of churn in what are considered the "right skills" and you could easily find that the job skills you spent time learning are not much in demand by the time you've finished learning them.

      That's not to knock vocational courses - they can be very useful and help give you the skills to get things done. Your life shouldn't revolve around your job however, and not everything should be devoted to that end. The best vocational courses are the ones that are unashamedly so, are usually short (a few weeks or months for the whole course) and something you can pursue when you need it. University courses are supposed to be about learning because you want to know and understand. Some of that may be useful for finding a job simply because people who understand some concepts may well be rare, and in demand. Some of that may be useful in a job because you have a good grasp of underlying concepts and understand what you're doing rather than just mechanistically repeating a process. Employment is shouldn't be the point of learning such things however, it should be a small side benefit. If you want a job, take some vocational training. If the job you want requires you to understand things for which you need a university degree then either that's something you want to learn regardless just so you can understand it yourself, or you need to seriously consider your career goals.

      In the end the ability to learn new things efficiently, and the skills involved in such learning are the most valuable job skills you'll get. You'll rarely end up doing a job that is precisely what you trained for, so the ability to learn and adapt is highly beneficial. Those are things no university, trade school, college, or otherwise will teach you, it's something you have to learn for yourself. Of course any sort of education can give you practice.

      Jedidiah.

    2. Re:Regarding the purpose of a higher Ed degree... by apoc.famine · · Score: 5, Funny

      And from what I hear, one of the most useful classes you can take to get a job after completing a CS degree is Hindi.

      --
      Velociraptor = Distiraptor / Timeraptor
    3. Re:Regarding the purpose of a higher Ed degree... by sd_diamond · · Score: 3, Insightful

      Those are good points. I would add to that by saying that the greatest value of a scientific/technical college education is not just the specific knowledge and skills that it teaches you, but the fact that -- if you do it right -- it teaches you how to learn new things. And this, really, is the most valuable job skill of all. Whatever cutting-edge software or hardware you become familiar with in your university education are almost certainly going to become obsolete in your lifetime -- even abstract concepts like theories and algorithms can always be superceded by better ones. What will really make you irreplaceable to an employer is the ability to read (and understand!) the literature and keep yourself educated on current equipment and techniques.

      So in that sense, Zambonini has it completely backwards. Because courses like Theory of Computation, Numerical Analysis, Artificial Intelligence, and so forth require students to gain an understanding of complex, advanced theories and algorithms. Whether they actually use the specific things they learn is really not that important; what matters is the meta-learning.

  3. Answer to your question... by jawtheshark · · Score: 5, Insightful
    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.

    --
    Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
    1. Re:Answer to your question... by Anonymous Coward · · Score: 2, Insightful

      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.

    2. Re:Answer to your question... by Etyenne · · Score: 3, Insightful

      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 ?

      --
      :wq
    3. Re:Answer to your question... by IWorkForMorons · · Score: 2, Interesting

      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, 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 . 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, 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.

    4. Re:Answer to your question... by hackerjoe · · Score: 2, Insightful
      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.
      I couldn't have said it better. It's amazing to me how many people will defend the value of a CS degree as a preparation for software engineering, but it hardly makes sense.

      All the rest of the engineering disciplines, which are actually pretty similar to software engineering, have focused bachelors-level programs and have for decades. They still learn the scientific underpinnings of their disciplines, but they are also trained in the less glamorous things they'll need to do on the job, such as estimation and documentation, things that CS grads fresh from school are typically not very good at at all.

      So why not software engineering too?
    5. Re:Answer to your question... by Fnkmaster · · Score: 2, Interesting

      While I agree with you, the programmers I've had work for me with no theoretical background are usually pretty bad programmers. The good programmers usually had a pretty strong theoretical background. Of course, it's not a necessary and sufficient condition - I have met a few with strong theoretical knowledge and poor practical programming skills.

      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.

    6. Re:Answer to your question... by llefler · · Score: 4, Insightful

      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.

      It depends a lot on what type of job you are looking for. I would guess that the majority of programming jobs are for managing in-house applications. Companies writing software to manage their own business. In those jobs, it's just as important to understand the business as it is to know how to write a program. Maybe more so, since advancement above a certain level will generally be into management.

      In various classes over the years, I have taken Cobol, RPG II, Assembler (s360), BASIC, C, C++, and Java. And over my career I've mostly worked in Delphi. OTOH, everything I learned in accounting and economics applies pretty much the same today as it did 20 years ago. With computer curriculums you have to be careful and make sure you are focusing on teaching how to be a programmer and not how to use a particular language. That's why classes should focus on data structures and SDLC. And sadly, proper GUI design is nearly universally ignored.

      --
      It is amazing what you can accomplish if you do not care who gets the credit. -- Harry Truman
    7. Re:Answer to your question... by jfortier · · Score: 4, Informative

      In Canada, a college is usually what an American would call a "community college", so its primary focus is instruction with a vocational focus. University means just what it means in the US, a higher-education institution that has a strong focus on research (and obviously the extent of that focus varies from place to place). The term college is sometimes also used to refer to the units of a university, such as St. Mike's College at the University of Toronto or St. Paul's College at the University of Manitoba, so you have to get some of the meaning from the context. Without context, the first meaning is usually understood.

      The easiest way to see the difference is that if you tell a Canadian "I'm going to college", he'll probably look at you a second and then either think to himself or say, "Oh, you mean university".

    8. Re:Answer to your question... by the+morgawr · · Score: 4, Insightful
      The reason that most schools don't offer software engineering (and, incidentally the reason that I don't recommend majoring in CS) is that the field of software problems where you don't need domain experience is very small, and for the most part un-theoretical. MOST people would be better off getting another degree and minoring in CS. At most schools the CS degree is not the best investment for your money.

      For example, an electrical engineer specializing in embeded systems and with a CS minor is a much better candidate for many jobs then a guy with just a CS degree. Let's face it, it is much easier to teach the advanced CS stuff to yourself then it is to learn an entirely new field, and most of the good software jobs require some special field of knowledge.

      My advice on what degree to get is to get the hardest degree you can survive in your field of interest. In the long run that will put you in a better possition in the job market, because there will be fewer people in the harder degrees compeating for the higher paying jobs, and if you can't find one of the higher paying jobs you can always out compeate someone who got an easier degree.

      --
      The policy of the United States is worse than bad---it is insane. -- Ludwig von Mises, Economic Policy(1959)
    9. Re:Answer to your question... by imgumbydammit · · Score: 2, Informative

      Colleges are primarily technical/vocational schools.

      If you want to become a firefighter, travel agent, surveyer, etc you would go to a college.

      If you want to study english lit. or finance, you go from high school to university...except in Quebec (just to make it confusing), where everyone goes to college (called CEGEP) after high school, and then those who are in the pre-university stream go on to another three years of school in university. Pre-university people spend two years in CEGEP, whereas vocational people spend three years there.

      One view is that universities are where the academic "elite" go. The other view is that colleges are where the people who want useful jobs and useful job training go.

      --
      That's right: I'm gumby dammit.
    10. Re:Answer to your question... by smallfries · · Score: 2, Interesting

      This isn't really true at all. Most CS degrees have a mandatory project in the final or penultimate year. Similar to engineering degrees, this project forces the student to specialise in a particular area, and gain experience of a large-scale project by working in a team.

      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...

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    11. Re:Answer to your question... by sputnik_b · · Score: 2, Insightful

      I think a lot of the posts come down to this: if all you ever want to be is an application programmer in the language de jour, then most theoretical underpinnings of computer science are probably useless. The routine task of programming doesn't require a great deal of intelligence or theory, and while not for everybody, most people can master it well enough to write 90% of the code out there (this is a random number, of course).

      On the other hand, if you want to have a career in CS doing something more than just routine programming, then a solid theoretical base is crucial. I am not aware of a single widely-used algorithm (from Dijkstra's to quick sort to dynamic programming) written by a CIS/vo-tech graduate. If you have even a remote interest in working in the field of compilers, OS development, AI, or CAD (just to name a few), you will need the theoretical background that a solid CS program gives you.

      Of course, if you're contemplating graduate school in CS or related subject, then you certainly cannot be overly prepared.

      As years go by, it never ceases to amaze me how subject matters that I had encountered in various courses in my undergrad days pop up in various contexts. Subjects that was absolutely certain were of no interest or use to me. That is the purpose of a strong foundation: to prepare you for the diversity of experiences out there. ... and on a different note: read up on Slashdot now while you still have the time, because with a schedule like that, you are not going to have much of a life this semester. :)

    12. Re:Answer to your question... by Etyenne · · Score: 2, Insightful

      I agree 100% with everything you just wrote. My problem is not with the challenge level or the usefulness of CS, it is with the expectative that employers (and, to a certain degree, students) have with regard to CS curriculum. If we expect CS graduate to work as programmers, as it is most certainly the case right now, are we preparing them adequately ? The answers is a clear and resounding "no" IMHO.

      You are entirely right when you say that real world programming tasks are often not quite so challenging. However, the ratio of people we need to solve boring real world programming tasks versus computer scientists we need to solve hard and interesting computationnal problems is extremely high. We really don't need that many computer scientist in the first place, yet we push every prospective candidate toward that discipline because most employers insist on a CS degree even for the lowliest entry level position in IT. This is ridiculous, and a waste of ressources too.

      --
      :wq
  4. The choice of degree matters less than attitude.. by Ckwop · · Score: 5, Insightful

    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.

    Simon.

  5. Maybe... by Anonymous Coward · · Score: 3, Insightful

    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.

  6. not useless by OffTheLip · · Score: 3, Insightful

    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.

  7. Specialised IT courses by [ella] · · Score: 2, Insightful

    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.

    --
    Mike
  8. Watered down CS degrees by Average_Joe_Sixpack · · Score: 2, Insightful

    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.

  9. Common Question by wsloand · · Score: 5, Insightful

    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.

    1. Re:Common Question by crazyphilman · · Score: 2, Insightful

      Yeah, but all that theory can't be put to any practical use without at least one general-purpose programming language under your belt. I've heard about programs that are all about theory, and don't even have a single practical course. That's a shortcut to irrelevancy if ever I've heard one.

      I'm not saying the courses should be vocational, but students should at least have one practical programming course per semester so that by the time they graduate, they have three years or so of continuous programming experience.

      Not so they can get a job -- they won't anyway.

      So they will actually be able to DO something with all that theory.

      Programming is where the rubber meets the road.

      --
      Farewell! It's been a fine buncha years!
  10. Practical Courses tend to be write-test-and-forget by Taladar · · Score: 4, Insightful

    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.

  11. CS != vocational training by cheesekeeper · · Score: 2, Interesting
    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.

    --

    Best read in good ol' Monaco 9 point.

  12. He is pretty much right by Foredecker · · Score: 4, Insightful

    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.

    --
    Jibe!
  13. Jobs aren't all. by matman · · Score: 4, Insightful

    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.

  14. Re:The choice of degree matters less than attitude by the_2nd_coming · · Score: 4, Insightful

    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.

    --



    I am the Alpha and the Omega-3
  15. Education vs. training by mi · · Score: 4, Insightful
    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.

    --
    In Soviet Washington the swamp drains you.
  16. Re:BS degrees are more vocational by Norweed · · Score: 3, Insightful

    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.

  17. Learning A Language in an Afternoon by CyborgWarrior · · Score: 5, Insightful

    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.

    --
    If you can't say something nice, make sure you have something heavy to throw.
    1. Re:Learning A Language in an Afternoon by Viv · · Score: 2, Insightful

      Not knowing C#, just knowing what the names say it does, my guess is that the second one is faster.

      The first one is going to require two copies and a compare.

      Three main loops, and a whole slew of slow, slow copies. The second doesn't need to do any copying, all it has to do is check that each letter in the string is the upper or lower case equivelent of the other. In ASCII, for example, you can use neato-keen bitwise tricks to do this in less than 10 instructions (on most architectures) if you want. Much faster. I bet they were smart enough to do the same with the various other encoding methods.

    2. Re:Learning A Language in an Afternoon by tmortn · · Score: 2, Interesting

      Well then you are arguing symantics about what it means to 'learn' a language. Most fresh grad CS monkies ARE capable of picking up basic syntax of a new language in an afternoon. They are capable of turning out working code. Whether or not it is perfect and completely optimized code for the particular solution in question is an entirely different matter and I doubt if you ask them very many would make the claim that they could. But when a CS major says "I can learn it in an afternoon" all they are saying is my knowledge is not locked into a particular coding solution. Assign them a task in a specific language and they know how to get it done even if they have never used it before.

      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.

      --
      I don't ask you to be me. I only ask you not expect me to be you.
    3. Re:Learning A Language in an Afternoon by Viv · · Score: 3, Insightful

      I would also point out that either of those is likely to be a roughly O(n) operation, so neither selection is obviously rediculous, and the use of them took very little programmer time to implement. If they become a bottleneck, identify them as such, and choose a better algorithm.

      I'm far more likely to get bent out of shape if a programmer who works for me chooses to use a bubble sort algorithm to sort a 5 million record database, or if he spends three weeks trying to find an algorithm to optimally solve a 3SAT equivalent problem. (unless, of course, he actually succeeds in the second case!)

      Fact is, someone with real study in CS is less likely to make the above mistakes than someone with just programming experience. And programmer time costs way more than processor time.

  18. CS stands for Computer Science by fikx · · Score: 2, Insightful

    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.

    --
    AB HOC POSSUM VIDERE DOMUM TUUM
    1. Re:CS stands for Computer Science by ebett · · Score: 2, Insightful

      I think you are quite right in pointing out that CS is a Science. People seem to think that the only point of studying CS is to become a software engineer, working for a corporation writing programs for Joe Shmoe to use. That's very wrong. You are being trained as a scientist, to be knowledgeable in the use of a particular tool, the computer. Software engineering is one field where these skills are useful. There are many other fields where this knowledge is relevant and sought after, like scientific computing or computational biology. I personally am CS and work for biology professors, developing and coding algorithms for RNA folding and phylogenetic analysis. In this situation knowing how to write correct as well as time and space effecient code is of utmost importance (thank you, Theory of Computation), not making a pretty UI. I think you can make what you want out of your CS degree. If you want to be a software engineer then take electives that will help you with that. But you can't forget you are first a scientist, and can't expect a CS degree to be a training program for programmers.

  19. Here we go again... by Anonymous Coward · · Score: 2, Insightful

    >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.

  20. No kidding. by Anonymous Coward · · Score: 5, Insightful

    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.

  21. Re:no by briaman · · Score: 5, Insightful

    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.

    --

    ==========
    Error in module creativity.dll : Unable to create witty comment.
    Abort / Retry / Ignore ?

  22. There seems to be a disconnect by matth1jd · · Score: 2, Insightful

    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.

  23. Re:Designed to grind out more CIS teachers by M.+Baranczak · · Score: 2, Funny

    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.

  24. Two years or Four years by wk633 · · Score: 3, Insightful

    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.

  25. Re:no by WindBourne · · Score: 5, Interesting

    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.

    --
    I prefer the "u" in honour as it seems to be missing these days.
  26. Re:The choice of degree matters less than attitude by sribe · · Score: 5, Insightful

    ...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.

  27. Make sure you learn how to WRITE! by Tsu+Dho+Nimh · · Score: 4, Insightful
    Make sure you include a couple of courses on report writing and writing for buisness.

    Many times your department or project will live or die based on how well you write your reports and memos. And your user base will love or hate you depending on your ability to clearly communicate - at their level and from their perspective - how to use whatever you are running.

  28. Re:BS degrees are more vocational by Sponge+Bath · · Score: 2, Insightful
    BS and MS degrees are meant to lean more towards the vocational side, whereas a Ph. D is all about the scientific/research

    BS is an excuse to make bad decisions about partying and sex.
    MS is for recovering some dignity and respectability.
    PhD is for copping a gravy teaching position.

  29. My ancient perspective. by elgee · · Score: 2

    This is probably out of date as it occurred about 15 years ago, but the manager of the Best Job I Ever Had said he would never hire a CS graduate. I was an electrical engineer. There were english majors, philosophy majors, a geologist, and other non-CS people there. And we did some amazing stuff with Lisp, Smalltalk and AI.

    The reasoning is that it is much easier for a good thinker to learn programming than a programmer to become a good thinker.

    However, in most IT jobs, practical training and experience is probably the best ticket.

  30. Bzzz, wrong Dan Zambonini by prozac79 · · Score: 2
    While I agree with some of the classes that Dan Zambonini suggests, most of them are way too specific for a CS education. The purpose of computer science is to provide someone a toolkit of knowledge which can then be applied in a wide range of fields. It is not solely to teach people the mechanics of programming, but instead on how to think through problems. Classes like AI, Operating Systems, etc. may seem pointless once you get out into the "real world". However, they are teaching you different ways of approaching problems. For example, I'm not working in building the next Deep Blue, Linux OS, or gcc compiler, but I have had to bust out concepts learned from my AI, OS, and compiler classes more than once to design and implement some programs at work.

    Dan Zambonini basically wants things learned on the job to be placed in the classroom. I have learned things like test-first development, extreme programming, system engineering, etc. where I should be... on the job. Think of Computer Science like law. You don't spend three years in law school going over courtroom procedure (because not every lawyer ends up in a courtroom for starters). Instead, you study cases and build up a toolkit of knowledge which you can then apply later in whatever environment you land in. Same with CS... study the concepts and learn how to think. If you know how to solve problems, then you can more easily learn the mechanics of programming.

    --
    "Oh dear, she's stuck in an infinite loop and he's an idiot" -Prof. Farnsworth (Futurama)
  31. Don't pick your classes based on a job by Cerdic · · Score: 2, Informative

    It's probably more important to be more rounded by taking an occasional class that you don't think you "need" and/or doing a minor or two rather than formulating your degree solely on what you think is good for a job. You might just find that you like another field better than CS. Also, much of what you need for the job is self-taught and learned on the spot anyway.

    --
    Advice for my fellow geeks: before seeking out that threesome you dream of, you might see what a TWOsome is like first.
  32. If you want a "trade school" education... by callipygian-showsyst · · Score: 2
    ...go to a Trade School. If you want to be well-rounded, go to a University.

    As someone who has made a nice living developing computer software, overseeing software projects, *and* playing the piano (!), my liberal arts education (math major, music minor) came in very handy. If you want to specialize, to it in your graduate degree.

  33. its like a merry-go-round... by i7dude · · Score: 2, Interesting

    no matter how many times this question gets asked...the answer is always the same; if what you care about is remaining in academia(sp?) and/or doing pure research then getting a cs degree and an advanced cs degree are all you may need (and as a result you'll probably end up getting the better part of a undergrad math degree racked up along the way).

    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.

  34. CS degrees are mostly useless. by supabeast! · · Score: 3, Insightful

    Of the hundreds of tech workers I've known, I've never met one with a CS degree. I have, however, known many people in retail management with CS degrees. All those nice theory and science classes are cool, but they aren't job skills or job experience.

    One of the nastiest problems in the IT industry is a near-total lack of entry level jobs. If you show up for an interview that requires a CS degree, but some 18-year-old who can code circles around you and has been working a help-desk for six months also shows up, he'll often get the job.

    If you're going to stick with CS and want to get a job, here are a few resume builders to keep in mind.
    - Do work study helping the sysadmins manage the networks, or at least helping inept students in lab classes.
    - Find a good internship every single summer.
    - If you program, do useful work on worthwhile open-source projects.
    - Go ahead and get a master's degree immediately upon finishing up your BS. Then you become a serious computer scholar, and not just another kid who got a CS degree for the money.

  35. Dan is wrong. Those classes are key. by Paradox · · Score: 2, Insightful
    The difference between most college educations and a trade school education is that in college, you learn the basics of an entire field. English majors learn how to do a lot of things in one degree. Art majors (at good art schools) don't have specific classes like "Low Bandwidth Internet Art." Math majors don't have classes like, "The Math and Engineering of Dams."

    Likewise, Computer Science Majors don't have super-specific classes. Instead, they teach you the things that you wouldn't think to learn on your own. Fundamentals that make all your work as a compsci major easier. Having a solid understanding of algorithms, what's slow, what's complex, and why has helped me produce better work many times.

    If I were in charge of hiring and I had a developer position open, I probably wouldn't hire someone if their school curriculum consisted of the classes he listed. Tech and code come and go, but fundamentals last forever.

    Besides, if you can't learn that stuff as you go, you're not suited to a career in computer science. Only motivated and fast learners need apply!

    --
    Slashdot. It's Not For Common Sense
  36. Re:no by Raven15 · · Score: 4, Insightful

    I'd agree with this. If you're only looking for bare-bones programming ability, check out a vocational course. If you're looking for more advanced abilities like algorithmic analysis, the experience to see abstractions, better data structures, and more flexibility, stick with a BS degree.

    I'm certainly not saying that you can't pick those things up from a vocational course, but you'll be doing it on your own. It's always a tradeoff between time/cash and general well-roundedness. Personally, I got my BS because I wanted the flexibility.

    The main point is that vocational programs will teach you how to code. A BSCS will teach you how to learn. It doesn't take a genius to figure out which is better in a rapidly changing field.

  37. It's a bit like Art by TheLink · · Score: 2, Interesting

    So what if the current job market for artists/designers requires you to know Photoshop version X, Macromedia, Pantone, etc. You should be able to learn that stuff in a timely manner. But if you can't draw and aren't creative in the first place, maybe you're in the wrong field - it might take a bit too long to teach you that eh?

    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 ;).

    --
    1. Re:It's a bit like Art by wiremind · · Score: 2, Insightful

      First off, i totally agree with most of your post. Teaching things too hard to learn on your own, stuff you didnt know to learn, etc.

      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.

      But knowing UML means the developer can work in a team and easily speak the same language (uml _is_ a language for describing software systems ) as the rest of the people.

      He made be able to code like a god, but if he cant draw a simple diagram to express the idea in a common language all the developers will understand its useless.

      The biggest thing CS seems to be 'not' teaching is the tools needed to design software. Use Cases, Requirements analysis, UML, Unit Testing. All of those things fit into the 'tools' category, and like a good artist, you have to know your tools.

      Kyle

  38. Become Employable by nsqtr · · Score: 2
    This thread has evoked much theory on Education vs Training. As a 20-year software veteran -- with a M.S.C.S. degree -- and a former adjunct faculty member at a top 10 University, my opinion is to do whatever you can to become employable.

    Start first by attending a school with name recognition. It's just like brand recognition. If, in a job interview, you get the "... and where's that school?" question, you're already on the defensive and at a disadvantage. "Recognizabiilty" (is that a word?... I should know, my undergrad is Liberal Arts), is relative. Some small East Coast schools are well known for their academics, but are little known on the West Coast and vice versa

    Next, if you can't demonstrate productive software development skills during your interview, you're also at a disadvantage.
    What are productive skills?

    • knowledge of an advanced programming language (I'll defer the religious wars to some other thread)
    • skill in using a visual debugger (no print statements)
    • use of a profiler to understand where your code needs optimization
    • use of a version control system so you can play well with a team
    • an appreciation for an optimized build technology/system (Ant, make, JAM, etc.) so you can contribute to the neverending optimizations to make the edit-compile-debug cycle as efficient as possible -- save a Developer 30 mins a day, multiplied over 10 developers... time is money and the money adds up

    If those skills are vocational, so let it be written, so let it be done -- you need employment.

    I had this very same discussion with the Department Chair of the Electrical and Computer Engineering department of the school I mentioned, where I suggested a 1CR course on the above topics as a program requirement for the ECE major (remember... this is an Engineering department) and I got the same push-back, ".... we're hear to educate, not train..."

    I'm back in industry as an employer and I won't hire anyone with less than 5 years of experience because, in the face of economic and competitive pressure in the software industry, I cannot afford to train someone to become productive.

    Do what it takes to become employable -- courses, internship, networking.

    I hear my soapbox creaking, so I'll step off of it.
  39. College is only four years by dalamar70 · · Score: 2

    It always amazes me how much stuff people think you can learn in college. Look at all those course topics listed in the opinion piece: patterns, architectures, usability, security, and more--subjects which take some serious time and experience to learn. However most students spend only four years in college, with maybe half of their classes devoted to CS. It's just not possible to get senior software engineer experience in an undergraduate program, and the colleges don't bother to pretend otherwise either. School is just meant to teach the fundamentals. You'll have the next forty years to develop "experience." :)

  40. Re:The choice of degree matters less than attitude by CardiganKiller · · Score: 3, Insightful

    Think about it in terms of a spoken language. At the age of ten, most kids can speak well enough to express anything they want... how they feel, what they want, etc. They have complete freedom with the language; virtually no idea cannot be expressed with the vocabulary and rhetoric of a ten year old. Essentially what is being said is that a ten year old is on the same level as Hemingway or Dickens, because the kid, like these authors of immense literary genius, has the same freedom of language.

    I'm only twenty-three, and I've been writing C/C++ code since I was in seventh grade... my biggest project so far has been in a team of three people and we put out maybe five or six thousand lines of code. I haven't had the necessity to delve into some of the lesser used aspects of C++, let alone the obscure. And I wouldn't dare call myself a master, or even a pro... I still see C++ code that makes my eyes cross for a few minutes. Five or six thousand lines of code to me is a good chunk, but probably chump change to any seasoned pro. I can still do anything I damn well please with the language... like the ten year old, but beyond that scope is being able to do anything I damn well please and do it well. That brings in a whole new level of ability to evolve... some of it language specifc, some of it simply a matter of being a good coder in general.

    Code, like spoken language, is an expression of an idea. A language is created to express an idea, and in the professional world, immensely complex ideas. I learned why Python is so great in about thirty minutes and most of what Python can do in about two or three hours. But let's see how I fare against someone with a few years of experience in writing a simple program, say a client/server chat program. You'll see me stumble over my own ass more times than Jennifer Lopez.

    It's true that the actual language is generally irrelevant to the idea. That's a moot point to this whole discussion though. When I speak or write, I don't think about the language; where I'm putting the nouns, my conjunctive whats'its, and God knows what else don't matter to me, it's mostly automated. Ask someone who doesn't write as well as me to write anywhere near my level (a ten year old for example), and they'll putter around for a bit... and it'll look awkward and forced. Ask me to write on Hemingway's level and I'll crank out maybe a crappy paragraph or two per week. The more I read of Hemingway, or any other seasoned author, the more I have no clue how they do what they do. The more complex ideas become, the more intracate the language used becomes. Little previously-unrecognized nuances can throw the whole idea down the shithole. Hemingway doesn't put an incredible amount of strained and wasted effort into his rhetoric, just like I don't, just like a ten year old doesn't. Each of us can express any idea, does this make us literary equals?

    How will my code compare to one of the maintainers of the gnu C/C++ compilers.? That's the point of this whole thread right? The whole point of a CS degree in college isn't to teach you how to code, but the underlying ideas of coding in general, and hopefully the underlying ideas of that as well. A good undergraduate degree should leave you completely devirginized as to how anything digital functions, from basic circuitry to modular design. At least that's what I got out of mine. You don't get a Bachelor's or Master's degree to become a qualified expert... you do that in your job or Ph.D. program. You get the first degree(s) to become qualified to become an expert.

    Just my two unprofessional pence though.

  41. Useless? They're hardly useless classes! by Mouth+of+Sauron · · Score: 2, Insightful

    Just as one's choice of computer should be driven by the applications one needs to run, one's choice of education should be driven by what one intends to do with it. What do *you* intend to do with your degree? I would hardly call "theory of computation" and "numerical analysis" useless classes. This is what computer science is all about: the science of using computers to solve problems.

    There are really three fields that comprise what lay people consider computer science to be. First, there is computer science, then there is computer engineering, and then there is computer technology. (Please note that there is no particular order to this ranking.)

    The first, and most obvious difference is that computer engineers typically build hardware systems, while comptuer scientists typically build software systems. However, computer scientists are generally expected to understand the underlying hardware platform. Computer scientists typically know more about the theory of computation, the design of computer languages and operating systems. This is not to say computer engineers do not program. They do, however, most system level applications and languages are written by computer scientists. Computer engineers apply engineering principles to build computers and computer based systems. Computer engineers often design not only the hardware, but software also.

    Thirdy, there are technologists. While scientists and engineers try to solve unanswered problems, technologists typically work on problems that are better understood. For example, a computer engineer might build a new network or a computer scientist might build a new software system, a technologist might use existing computers and software to implement something new. Technologists typically gain experience with existing systems and protocols, while scientists and engineers will work designing and managing new systems. As always, the line between technologists, scientists and engineers is often blurry because the state of the art in technology moves so rapidly. Technologists often work as computer scientists building new software systems, and engineers and scientists often work as technologists implementing new systems with available technology. Many, if not most people work as technologists in some capacity. Almost all work in the computer field rests on the work of others.

    As an aside, I would say that the theory of computation is of great importance to companies such as Google and Oracle. I'm mildly flabbergasted someone would suggest numerical analysis is unimportant for computer scientists. Numerical analysis is the union of theoretical and applied mathematics toward solving problems with computers. Who could suggest that designing algorithms with a mind to how much memory they are going to use or how much time they are going to take is unimportant? Rounding errors and the stability of algorithms are both important topics within numerical analysis. Also, platform and hardware specific issues also factor into the analysis of algorithms. Maybe someone writing a script to run on a web server to talk to a database hasn't given much thought to concurrency and deadlocks, but his work rests on the work of people who have considered these problems, and more.

    I read Dan Zambonini's article. It sounds to me he is describing more of a technologist degree, than a degree in computer science. I might suggest that he also take some resumes from graduates of technical or vocational schools, as well. Here in the U.S. (I realize the author's a Brit) people tend to slight vocational education, but the curricula offered by schools such as DeVry and I.T.T. are nothing to be sneezed at. I say this as a person who attended drafting school and learned pencil on vellum and ink on mylar. And for the record, I'm a technologist, not a scientist or enginner.

    Thanks if you got this far.

  42. Dan doesn't get it by daVinci1980 · · Score: 4, Insightful

    Now that we've established that Dan doesn't know where to look for jobs in the game industry, let's talk about some of the other things he doesn't seem to get.

    For one thing, the "programs" Dan is talking about are primarily things that I've discovered through years of experience (for example, real world Database Design), or things that I've picked up in a weekend over the course of my employment (for example, a second 'Big' language, a scripting/'agile' language or two, XML (and why it's actually a pretty terrible file format), and common protocols).

    But they all share one thing in common: the courses that Dan are suggesting would be great at somewhere like ITT Technical Institute, or at Devry "University," but they do not belong at an academic institution--by and large. The things he is proposing are largely vocational. They'll make for an okay programmer, and probably only a okay programmer in one field. They do not make a well-rounded computer scientist, nor do they help you out when you decide that you don't want to do database design anymore, you want to write commerical shrinkwrap software instead.

    My well-rounded CS education has allowed me to run the gamut of employment in computer science related areas. I started out in Telcom, moved to commercial shrinkwrap, wrote several video games for very large video game publishers, and now I design graphics hardware for the market leading graphics chip company.

    Which of the courses there in Dan's suggested curriculum are going to allow me to do all of that? I'll give you a hint; they aren't there.

    Without advanced mathematics (Calc II, Linear Algebra), I would've never been able to do graphics programming, which would've kept me out of the commercial shrinkwrap business (where I did image editing software). It would've further kept me from doing 3D grapihcs applications, which would've kept me out of the game industry as well as my current position. Without Advanced Data Structures, and Automata theory, I would've been unable to write code that was efficient enough for the high performance needs of the games I worked on.

    In short (too late), Dan's proposed course load (of bullshit) would lead you to be a moderately acceptable programmer. You would be able to make a living, but you would always be one of the first to be laid off. Get a real education from a real institution of higher learning, and bring me good fundamentals. Because for pretty much all junior level positions, it's on-the-job-training. Without good fundamentals you will be unable to learn quickly enough to be of any use to an employer.

    --
    I currently have no clever signature witicism to add here.
  43. Major in Computer Science and don't look back. by brosenth · · Score: 2, Insightful
    You can be a good programmer without majoring in computer science, but becoming a good programmer requires a tremendous amount of time, more than is probably obvious to someone just starting out. Majoring in computer science is a good excuse to spend time in college programming in a wide variety of settings.

    Here's why. To be a senior-level programmer anywhere, you have to understand the following:

    1. "Computer Science fundamentals":
      1. algorithms (so your software can perform)
      2. database theory (so you can design well and optimize your software)
      3. More general modeling theory (so you can write specifications and participate in large-scale projects)
      4. Language theory (so you can write concise, intuitive software)
      5. Operating System theory (something difficult, but possible, to become exposed to outside of a formal curriculum)

      Honestly, most of the time I've wasted as a programmer has been due to not being previously exposed to the more "formal and academic" concepts that underlie what I do.

    2. Good software development methodologies (regression testing, version control like CVS and SVN)
    3. Experience with a wide variety of different languages

      A few reasons here:
      1. Much of "enterprise software development" involves integrating systems that are written in different languages
      2. good software developers can embrace and extend what's out there, and that often involves taking components written in one language and using them in another
      3. you want to be able to choose the best platform for a given project, rather than being limited by only being able to use certain languages]
    4. Experience with a wide variety of different platforms

      You should have a good sense of what sorts of platforms are out there and what it takes to launch a product on different ones.
    5. Understanding different paradigms (ASP / client-server / pure client, microsoft / open-source)
    I would major in computer science, try to do as many projects as you can, build (and finish) as many products as you can, get exposure to web-programming, do a lot of database programming, if you can find an internship or a job doing general ledger programming, I would check that out.

    Just, don't think you can become a successful programmer without a lot of work. It's a long, intense process to be able to program well, but well worth the effort.
  44. Touch Typing?!? by mkcmkc · · Score: 3, Funny
    Parent is right on, and Zambonini is all wet. I was going to joke that he should put "touch typing" in his list of courses that degree programs should require, but incredibly, it's already there.

    CS is your time to master theory and basics--the entire rest of your life will be spent learning languages X, Y, and Z, and the latest trends...

    Mike

    --
    "Not an actor, but he plays one on TV."
  45. Higher Education (Computer Science) by srussell2 · · Score: 2, Insightful

    It is best to complete the computer science curriculum. The courses you have listed seem to be relevant and they should teach you about some of the theory behind current computers. Unfortunately, I was not at a college that stressed the theory. I got out and I wondered why are companies not hiring me? Eventually, I went to a reputable college and learned the hard way the I did not know the topics/materials that I need to, in order to be productive.

    Learn these topics well. Although they may not seem relevant now, they are some of the most relevant ones, if you want a rewarding career with computers. If you opt to take only the 'practical' courses, you can get by, but you will always be relegated to menial tasks. And, if you have any drive at all, wonder why you were not chosen for the more important assignments. You will think you can do them, and it is possible, but you will not be able to do them as well or in a timely manner as someone who has had, and understands, the basic theory behind it.

    Example: I used to think javascript was difficult. I would try various things and sometimes it would work and sometimes it would not. Or it would only work in certain cases. At the time I did not know why. Now I realize that origionally I did not have the foundation I needed to understand what the books and examples were trying to tell me. I could not see what was wrong until I went to a 'good' university that had the knowledge to explain the theory and semantics in a way that I could relate too.

  46. Re:The choice of degree matters less than attitude by Dachannien · · Score: 4, Insightful

    Have you programmed in ML? Lisp? What about Prolog?

    Maybe you haven't programmed in some or any of these languages. If you have, though, you'll probably know what I mean when I say that, compared to C/C++, none of them are exactly a walk in the park. They require you to think differently about not just syntax, but the entire form of your programs.

    What if your only programming experience was ten years of (not Visual) Basic, and suddenly you were faced with learning Java? The concepts of object-oriented programming would be completely foreign to a person coming from a language that doesn't even have user-definable data structures.

    When I learned PHP (no, I'm no master), I was able to draw on my knowledge of C/C++, which is syntactically practically identical but more importantly the same paradigm. Learning how to tinker around in it was a snap. On the other hand, learning a language like Lisp, coming from C/C++, was much more of a challenge - yes, the syntax was different, but I had the whole ample use of parentheses thing down quickly. It was the fact that Lisp flows as a functional language but stutters as an imperative one that gave me fits. You'll never be a good Lisp programmer until you resign yourself to the fact that when you try to fit Lisp in to the C++ mold, you get crappy Lisp programs.

    You're probably thinking, why the hell do I want to learn how to program in Lisp? I'll probably never use it. True, in a production environment, Lisp isn't anywhere near the most commonly used language. But college is about teaching you how to think more so than what to think. By learning Lisp while you're in college (or another language that doesn't fit into the C/C++/Java/PHP/etc. motif), you give yourself another way to think about how to do things. When you finish your degree and go into job training wherever you end up, that will help you just as much as the program design courses that give you the depth you need to get a leg up in the job market.

  47. Take the theory, but don't pass on the practical. by mpechner · · Score: 4, Insightful

    I've been out there with a CS degree for over 20 years. Yes, the theoretical classes are very important. A good mathmatical CS backgroud will give you a leg up in the long run. As others have said, it is important to learn the theory and why different approaches, OS's and languages exist. It will help you dig into the practical topics as programming languages, platforms and operating systems change. It will let you keep up with different philosophies of how to design a system, and maybe you'll understand why the flavor of the month is popular. Hopefully you'll learn to not be dogmatic.

    Being dogmatic and a lack of flexibility has you using the equivilent of a hammer for everything. Very soon that will cause a career change and not by choice. Employers want people with a full tool belt. People who know how their tools work and why they use them. They also like to see that you change your tools as things evolve.

    Where it is offered, takes classes where design or working within a team is required. It will give you an idea of programming within a team. People skills are important in the real world.

    Do not pass on internships, involvement in open source or school projects. Anywhere there is a team of people writting code that will be used in a production environment by more than a few people. This will give you the leg up when you graduate. To say that you worked on code that is in production somewhere. Even if you can show you fixed a bug a month in firefox or apache. It shows you wrote peer reviewed code. You have code in production.

    Use the internships to find out what you want to do. Try to get an internship with different companies each summer. Different evironments. Different types of projects. Different industries. Do not choose based on the cool company. Some cool startup doing something new might be cooler than google or microsoft.

  48. Re:no by antarctican · · Score: 4, Insightful

    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.

    This post should win dumbest troll of the year.

    I used to have this debate back when I was in school with people. In the school I began my degree there were two programs, a computer science program and a more "practical" computer information systems.

    In Computer Science we learned the theoretical background, we learned how and why computers work as they do, and more importantly - how to learn. Language and skills were a way to re-enforce this theoretical base.

    The CIS program learned the skills of the day. You know what one of their courses were? "Programming in Visual Basic" How many of those people taking that course 7 years ago do you think are still finding gainful employment programming in VB? And how many had to go back for skills upgrading?

    I remember one summer on coop, two CS students, one CIS student. It was a help desk job, nothing exciting. But a call came in to help a user with Word. The response from the CIS person, "We didn't learn Word, we learned Word Perfect." So? If you had the theoretical background you could figure it out, find the relivant connections between the two.

    As opposed to myself, my primary job these days is programming in perl. Do you think I was ever "taught" perl? No, we did C, C++, Java, etc. But I had the background to learn it on my own, because I learned how to learn, I learned how languages worked through courses such as "compiler design."

    So are you in the wrong program? Depends, do you want a long term job or have to retrain every few years? People like Dan Zambonini are absolutely wrong, things like "learning XML" can be done from a book if you know the relivent background about languages and such schemas. I know that's how I learned (alright, working for the 'father of XML' for a few years certainly didn't hurt...).

  49. Re:The choice of degree matters less than attitude by cballowe · · Score: 2, Insightful
    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.
    I must take issue with this. I did my time in one of the top CS programs in the US. I'm pretty sure that I could learn C# in an afternoon. I wouldn't say that I'd be the most proficient in it in that time frame, but I could learn the language. My experience from being thrown at new technologies in typical development shops is that I'm more proficient than 95+% of the staff within a week (assuming I'm only dealing with that technology) and within a month I'm to the point where I'm the expert on several topics related to that technology.

    Learning a language is pretty easy - if you've got solid background in algorithms and know a couple of languages (preferably at least one imperative and one functional) already. Start with finding the base datatypes, then the control structures (loops, functions, etc.) then the object model. At that point you've got enough to implement any algorithm you need. Odds are that's enough to start reading code related to the project you've been put on, and possibly some debugging. Once you start reading the code, look up the object definitions for the object types that are used. Odds are you'll find many places in the code where properties of the object aren't being used because the "developers" have been copy/pasting bad code all over the place rather than learning the objects that they're using, not to mention much business programming is considered finished when it works, not when it works right, works efficiently, or is sane to read - most business programming projects are far more spaghetti like than things allowed in a typical CS program.

    I don't know that this method for aproaching a language was taught in my CS program, or if the program just gave me the mental tools to develop it for myself, but it does work. It has worked for me in several cases in the past, and I expect it to work many more times in the future.
  50. Re:The choice of degree matters less than attitude by Comatose51 · · Score: 2, Insightful

    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. CS major here with the same number years of experience (although mixed with part time and internships). I didn't do it in an afternoon. I did it over 3 nights. I read the APIs and learned the syntax. Where's the challenge?

    --
    EvilCON - Made Famous by /.
  51. Take a Philosophy course on Epistemology by wyip · · Score: 2, Insightful

    Since you're going to be reading Plato, you should also look into some Aristotle. He goes into the nature of education and the idea of liberal education. Note, that this is not liberal, like Michael Moore liberal. You should also read about John Dewey's ideas on education, for a more modern view. It's very interesting stuff, and your school probably offers a philosophy course that can help you with your question.

  52. High school counselors are failing our students... by aussersterne · · Score: 2, Interesting

    ...by telling them that you go to university "to get a better job."

    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.

    --
    STOP . AMERICA . NOW
  53. he does have some points... by burnin1965 · · Score: 4, Insightful
    As someone who works with both CS grads and vocational grads I'd have to say that what Dan believes is missing from the CS studies is also missing from the vocational studies as well. And the only outcome of the vocational studies is a graduate who has no understanding of the basics, has a difficult time adapting to platforms outside their study focus, and are missing the same key career tools as the CS students.

    I see nothing wrong with the CS curriculum, however, a student should actively pursue the following weak points which Dan pointed out in his article:


    - Basics of good code architecture: Loose Coupling, etc.
    - The importance and tools of Planning: Spec'ing,, UML etc.
    - Economics, Business Studies, Costing Projects, Commercial pressures
    - Project/Time Management
    - Security
    - Testing, Debugging, Performance, Re-factoring
    - Problem analysis
    - Health and safety (nutrition?)
  54. Re:no by danhirsch · · Score: 3, Interesting

    I couldn't agree more. Allot of software companies hire CIS grads...mainly because they are cheaper than full CS grads. What happens when a software company retools and moves on to new languages? Either the employees 1) Move on to other companies or professions out of frustration with having to learn a new language, 2) Get canned because they are no longer in need, or 3) Ante up and push through to learn a new language. Unfortunately, 1 and 2 are usually the direction things go. CS grads on the other hand have the theoretical knowledge to move between languages with a fair amount of ease. CS grads are the ones that don't rely on the fancy gui's or pre-built code snipits and controls to do all their work...they know how to do this in code....while many CIS's do not. For me...I can look at pretty much ANY modern language and tell what its doing...get a syntax reference book, and start editing. CIS grads that I know...would just freak...because they were taught more business skills instead of theory. I don't discount the CIS degrees, I just don't think they are very practical for the true-blue programmer or shall I say "engineer". I have recently been struggling on whether I should push through and get a masters in computer science or take the easy way out (for me at least) and get a masters in CIS. I keep having to remind me of these facts...over and over... CIS curriculum teaches "Java" or "VB", while CS curriculum teaches "Data Structures" and "Operating Systems". Sure..languages (c++) are taught in these classes..but the focus is on language structure...not the language in particular.

  55. Re:BS degrees are more vocational by MagicDude · · Score: 2, Interesting

    BS = Bull Shit
    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.

  56. Usual mathematically-challenged /.er's wheening by fab13n · · Score: 2, Informative
    You periodically get that kind of guys, on nerd-oriented forums like /., who says "fsck off with maths and theoretical stuff, what I want to learn is LAMP/AJAX hacking or writing big chunks of Java for big chunky compagnies". WRONG.

    First: the school's main purpose is not to teach you your job; it's to teach you the parts of the job you wouldn't be able to learn by yourself. Mastering a couple of languages and patterns is something you'll learn at your first professional position, every code monkey can do that by himself. You'll be allowed to think of yourself as fully trained when applying for your 2nd or 3rd job.

    What you won't be able to learn under the pression of real-job-conditions is more fundamental: it's about having those abstraction capabilities, which allow to understand a problem, turn it into a formal model, find appropriate algorithms to handle this model. That's maths. Indeed, you'll probably never write a computer-vision system or a ray-tracer for a compagny. But by having been drilled on such problems at school, you'll [hopefully] have acquired some skills in complex problem modelisation and solving, that you'll need to write everything but dumb PHP interface to a DB. And you know what? These dumb code monkey jobs are going to become Indian or Chinese long before Duke Nukem Forever is released, so you'd better be able to work on smarter stuff.

    I know, it hurts to admit that mathematical thinking abilities are a must for decent programmers when you're yourself mathematically-challenged. It must be unpleasnt to realize that a lot of tough training is required to acquire these skills. But just translate this attitude to an other field and you'll see how stupid it is: "I want to become a novel writer, so I don't see the point of studying ancient authors: nobody speaks/writes that way these days. I don't want to read war stories or poetry either, as I don't plan to write any. I don't want to hear about mythology, classical litterature theories, or whatever. What I want to be trained at is grammar (spelling is useless now that we have decent spell checkers) and type-writing".

  57. If you don't love programming enough... by Jackmn · · Score: 2, Insightful

    to learn on your own time what isn't taught in your CS course, then it's time to consider another career.

    Programming is hell if you don't love it.

  58. Re:no by nine-times · · Score: 4, Funny
    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.

    What are you talking about? I'm a Helpdesk Manager, and I already get treated worse than the janitor.

  59. Re:no by murr · · Score: 2, Insightful

    As opposed to myself, my primary job these days is programming in perl. Do you think I was ever "taught" perl? No, we did C, C++, Java, etc.

    My undergraduate studies (which started in the mid-80s) basically taught me Pascal, Modula-2, and Oberon (guess which school I attended :-). This hasn't exactly prevented me from getting gainful employment.

    On the other hand, I wouldn't be able to do my current job without Linear Algebra, and there are many days I wish I'd have paid more attention in all my math classes.

  60. "Getting" a job by EEBaum · · Score: 3, Insightful

    Sure, these courses may not be essential for getting a job. However, they're quite handy when it comes to keeping a job. Just about anyone who's read a tech book can code. Knowing how to write code that is computationally efficient, and knowing how common concepts work, will get you much farther. If all you've done is learned a bunch of languages but not the theory behind them, you have a lot more catching up to do when the next language comes along.

    --
    -- I prefer the term "karma escort."
  61. Wrong by Tom7 · · Score: 2, Interesting

    I doubt I'm the only one saying this, but let me reiterate:

    * A Computer Science degree is not primarily about getting a job
    * Understanding theory does in fact make you a better, and more employable, programmer

  62. Re:The choice of degree matters less than attitude by jwiegley · · Score: 5, Interesting
    Disclaimer: I am a university professor in CS. So, clearly, I believe in the value of a university education. But I'll try to explain why...

    "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:

    1. Never during my education in CS did I expect to become a programmer and systems administrator for a Nortel phone system. But it did happen. I was ready for it and saved my company a lot of money in consulting fees because a dedicated technician didn't have to be called in to fix little issues.
    2. Second example: One of my students obtained a job with an aerospace company and it was my responsibility to monitor them for a year to make sure everybody was happy with the arrangement. I asked what they were working on and they replied "debugging HPL programs. I've never even heard of HPL! How am I suppose to know this?". I said "neither have I. How are you doing at it". They said "Fine."
    They were "fine" because they had the necessary theory fundamentals squared away. I would trust this student to pick up anything new and previously unknown in a short time period. In general, I would trust university educated people to have this adaptability more than vocationally trained peopl.

    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.

    --
    I will never live for sake of another man, nor ask another man to live for mine.
  63. Do you want a job or a career? by LazyLawyer · · 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?

    1. Re:Do you want a job or a career? by Tim · · Score: 4, Insightful

      So what do you want? A job or a career? How much do you want it?

      I think that there is a deeper subtext to your post than you are emphasizing.

      Look at your career: you earned a CS degree. You worked as an engineer. Then, you went to law school.

      Granted, you don't tell us why you made that decision, and I'm not going to speculate. But I am going to generalize, and say that your story is becoming the norm, and not the exception. I know a huge number of people who have switched careers mid-track. And the funny thing is, I see a correlation with intelligence -- the smarter the person, the less satisfied they are with their first career.

      Why is this the case? Who knows? But I think it's significant, and I think it speaks to the way that a student should treat his/her college education: Try things. Experiment. Learn ideas, not facts. Learn how to read. Learn how to write. Learn how to live.

      I speak from some experience here -- I spent a huge amount of time as an undergraduate studying the technical, and very little time learning about books, music and culture. Today, I'm a technology burnout. I would much rather read, write, paint, draw, photograph or perform -- basically, anything but spend the rest of my life sitting in front of a computer. I wish I had done things differently.

      Perhaps, had I balanced my education a bit better in college, I wouldn't be facing this problem today. Perhaps not. But either way, I would be much better prepared for the difficulties of life, had I spent a little less time treating college like a trade school for science and technology....

      --
      Let's try not to let fact interfere with our speculation here, OK?
    2. Re:Do you want a job or a career? by drgonzo59 · · Score: 2, Insightful
      Exactly!

      Knowing the time complixity of sorting and searching algorithms, data structures, different programming paradigms (oo, procedural, functional etc.) is something you can always rely on next year, or 20 years from now, but is not something they will teach you at a community college.

      What you need is BOTH. Finish your BS at a University, learn about algorithms, data encoding, database theory, AI, optimization, machine learning, HCI theory, data security, networks, then as your electives go to that university's evening college and take some classes on Java, C++, C#, Apache, MySQL, Oracle or whatever applied classes you need for a short term. This way you'll be set for short term and long term.

      There is a reason that there are CS degrees out there, it is not just a big conspiracy to scam students and take their money. Some things you will learn will seem boring until one day it all "clicks". When you have to make a decision to use a HashMap or an ArrayList (warning: crazy java talk) you will remember about big-O, about Hashes, about data structures and other stuff like that. It will be helpfull, trust me.

      The fundamental question is what kind of jobs did you mean? Did you mean "code monkey" jobs where you re-write someone's code in a new language, or creating web-pages, or mentaining a server farm? If you plan all your life to do just that, one particular thing then take just a couple of community college courses and you are done. But don't complain 5 years later that you are stuck in a dead end job and nobody will hire you.

      Another thing your university career should show is how well can you learn. Your GPA is an index that says "This person can learn new stuff if he puts his mind to it and here is the proof". Don't listen to people who say GPA doesn't matter. It does! It shows that you can learn English, Economics, Calculus, Computer Science, Math, Basket Weaving (well maybe not this one...) if you want. I would want to hire you because anything I throw at you, you will learn. (Imagine the difference between an adjustable wrench and a fixed size wrench.)

  64. It all boils down to by einhverfr · · Score: 2

    Focus on substance, not on trends. FWIW, I don't have a CS degree. I stopped taking certification exams three years ago (I will be taking the PostgreSQL CE exam by SRA merely as a way to help them improve the exam). FWIW, most of my background is in history, but I have a fairly strong math background as well which helps a lot. Heck, I make my history background work for me too but that is another matter (Occam's Razor makes a great software design principle, but you have to know what William of Occam attually said for it to make sense in this context). The computer science I have learned, I have picked up from discussing technical issues with CS professionals.

    I see nothing wrong with your program though. I run across way to many people who either have CS degrees without a real understanding of the theoretical underpinnings, or a real desire to go and figure something out using the training they have. This is probably the reason why so many end up in jobs outside CS. Yet those I have known who *do* deeply understand the theoreticals and really want to figure things out often go and do very interesting work. Again it depends on the person and whether CS is really what they wanted to do.

    If you want to have a buzzword complaint resume, by all means change course. However, this is very short-sighted in my opinion. If you really want to go deep into CS, then learn the theoretical underpinnings, get internships to flesh out your resume with real experience (or maybe contribute to FOSS software like PostgreSQL) and go for it.

    --

    LedgerSMB: Open source Accounting/ERP
  65. Re:It's because CS is harder by James_Aguilar · · Score: 2, Interesting

    I would definitely agree with you on the above. I, as a CS major, am not interested in doing anything except programming (In the immediate term, that is -- I cannot speak to the future.). Most of my MIS friends go into it looking for a chance to jump into management at a company after a few years at the bottom rung of the ladder.

  66. whats the difference? by mseidl · · Score: 2, Insightful

    ok, first off, dont take this as me bragging, but, to illustrate a point, I will compare, me and my brother, since the background is similar.


    Me and my brother are almost 4 years apart. We both grew up on computers, and we both used them a lot. My brother is in his 2nd year at a university studying cs. My brother did better in school then i did. I have not yet been to a school after highschool.

    I recently said to my brother , "My friend is building a dual dual core opteron box" and he asked me, "what is an opteron"

    I mention other hardware stuff and he was completely clueless as to what cache was, or a system bus. So, i will give him the fact, maybe he is a software guy, and not a hardware guy. I have a friend who makes 90k/yr programming at ms, and he couldnt install the heatsink on his p4. I had to do it. go figure. So i start talking about software stuff, and he is completely clueless about that. so, here is where i begin to worry. he doesnt seem to know a lot about computers, and after further probing, he really doesnt know much at all. and I wonder. we pretty much spent the same amount of time on a computer, why is he so clueless?

    One word: Passion

    I have a real passion for computers, you can hear it in my voice when i get über excited about the 2gb of ram I just installed. or the one kilo fanless heatsink i just installed. He doesnt. He just says, cool. I never hear him get excited about anything tech wise. I can code ok. SO, can my brother. only in java. Im a linux monkey, he is a windows mouser. So, who do you want? Someone in school? or someone who cares about what he does? Do you want someone who actively partakes in the programming community and is productive with his computer or do you want someone who as soon as the homework is done starts playing games?

    I love my brother, but, I honestly dont understand why he is taking cs. But, this was to just illustrate a point. My brother is not the only person like this. I know many cs grads that need my help in fixing their computers. or how much they dont know overall.

    My last roomate was a technical recruiter. Everyday he would come home from work and say, hey - i have the perfect job for you. We would always talk about tech stuff, and I could always answer his questions. without any problems. Funny how that works. anywhoo... there are plently of uneducated computer junkies that know a lot. there are also plently of uneducated computer junkies that dont know sh*t. there are plently(mostly, from what i have encountered) cs grads that dont know shit. there are also some who do.

    My point is this---Education doesnt matter, the person who takes advantage of it, or doesnt. Do they grow from it and use the knowledge? or does it become statistical junk? Do they become an individual or do they become just another product of the wonderful education system of the USA?

  67. Re:The choice of degree matters less than attitude by stevejs · · Score: 2, Insightful

    It is trivial to do trivial things in any language. It is not trivial to do engineering in any language. "the 2nd coming", apparently believes syntax and libraries are the only differences between languages. That is wrong.

    Many people mistakenly believe Java and C# are practically the same. Unless you are talking Scheme vs Lisp few have as similar syntax. Yet there are many differences, and the implications of those differences for engineering in each language is much larger. Java and C# are the same if you are not doing engineering in them ... but they are meant to be production languages so the seemingly trivial differences loom much larger.

    Will a day of learning syntax help you understand the difference in how generics are implemented in Java 1.5 vs C# 2.0? Do you think the difference won't matter in how you should use generics in the language?

    Learning a production language at university is a distraction, because you are trying to _learn_ useful long term principles. You are not trying to _apply_ them to a production system. Eventually will need to do that in a job, and the path from junior to senior engineer is the time to do that learning.

    Don't take a class at school about C#, or Java, or C++. Learn it yourself, by making and maintaining a long term hobby project. Just don't underestimate how deep is the problem space around learning to be effective in a language.

    The problem with University education is not the lack of learning production tools. A University is not a trade school. The problem is the lack of perspective given to students about what will be important if their goal is to be a software engineer. You don't need to learn at school all the details that come with experience. However, it is a disservice that most students leave school with the wrong idea about what their future path of learning needs to be.

  68. Re:The choice of degree matters less than attitude by Nasarius · · Score: 2, Interesting
    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.

    I don't know about C#, but I learned Tcl and Python in about two days each. I do the following:

    • Learn the language philosophy. Just get a very basic feel for what its creators intended, dynamic/static weak/strong typing, how it handles polymorphism and inheritance, etc.
    • Learn the syntax.
    • Read the style guide. Most mature languages have a semi-official style guide. It will usually save you a whole lot of time and frustration

    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.

    --
    LOAD "SIG",8,1
  69. Technology versus science by starfishsystems · · Score: 2, Interesting
    The shopping list that Dan Zambonini has come up with is fine, as far as it goes. I'd consider someone who'd mastered that list to be well qualified as a computer technologist. He's chosen subject matter which is widely applicable and technologically stable. So this could be an appropriate curriculum for a good technical college. Most colleges, in my experience, fall far short of satisfying this list, so I'd agree that there is definitely room for improvement.

    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.

    --
    Parity: What to do when the weekend comes.
  70. Yes I'm posting twice, but it's because... by aduzik · · Score: 2, Informative
    I read TFA, and I can't believe that this guy is advocating software engineering. I reread an old, but not too old, paper by Edsgar Dijkstra called "On the Cruelty of Really Teaching Computer Science". In it, he refers to software engineering as "how to program if you cannot." That one had me rolling on the floor because, more often than not, it agrees with my own observations and experience.

    Our university teaches software engineering. The professor who teaches most of the software engineering courses is an idiot. For my project, my group and I wrote a pretty kick-ass app with some pretty kick-ass code. How? We snuck in some agile methodology, which just seemed perfect given the size of the group and the size of the project. Even though our project was the best in the class, we got a C because the specifications weren't complete, and she wasn't convinced that our automated tests would really test the code. (The other groups who got A's for testing wrote some very non-specific paragraphs about how they might test their code. None of them actually did any testing)

    What this proves to me is that software engineering is easily the most useless discipline in computer science. I have never had a good experience with it. I've never known anyone who said that software engineering really makes things run smoothly. It's a business-centered/management-centered unrealistic approach to software development. It may make your boss feel all warm and fuzzy, but it won't get the software out the door on time, nor will the developers have any degree of confidence in it.

    --
    If it's not one thing it's your mother.
  71. Re:no by sunhou · · Score: 2

    On the other hand, I wouldn't be able to do my current job without Linear Algebra, and there are many days I wish I'd have paid more attention in all my math classes.

    As someone who teaches Linear Algebra, I'm very curious -- what kind of job do you have? (I figure it may be another motivator for my students.) And don't say you are a Linear Algebra teacher. ;-)

  72. Computer Science is very relevant by borgheron · · Score: 2, Insightful

    Most people think that you can just be sat down in front of a computer and taught to "program". What is the essence of programming? Is it the language? No. Is it the operating system? No.

    It's the *CONCEPTS*! Computer Science teaches the concepts behind the programming and why you should do certain things. It teaches you to discern for yourself how complex systems act. People who have certificates have reduces this profession to something most people think of as a "vocation" which is a crying shame.

    A vocation is something that people learn to do without much understanding of the science or technical justifications behind what they are doing? Do you think a mechanic knows the physics of how a car works down to the smallest level? No, he only knows that which he needs to get the job in front of him done. And guess what, when he needs to learn about a new car he has to go back to school to learn about it.

    Computer Science gives you the tools you need to get the job done AND it provides you with the knowledge you will need in the future to adapt because you have a deep undestanding of how things work, instead of simple rote memorization.

    Understanding the concepts is what give Computer Science and, indeed, any science or engineering discipline it's power over a simple "vocation."

    Don't listen to the guy who wrote the article (I already forgot his name) he sounds like he doesn't know what he's talking about.

    Later, GJC

    --
    Gregory Casamento
    ## Chief Maintainer for GNUstep
  73. Right on. by Malkin · · Score: 2, Insightful

    "People like Dan Zambonini are absolutely wrong, things like 'learning XML' can be done from a book if you know the relivent background about languages and such schemas."

    Agreed completely. When the original RFC for XML hit the scenes, I downloaded it, and read it my own damn self, and later studied up on what to do with it. Who in the hell wants to waste their tuition on stuff like that?

    The technology flavor of the month is the WRONG THING for a university to be teaching. If that's what you want, you can go to a community college, or some tech training school, and save yourself some cash. Theory lasts way the hell longer than specific technologies do. Any university that isn't giving you the fundamentals is wasting your money.

    As an employer, I'm often hiring people for positions which require unusual skillsets. Because it's highly unlikely that I'll find anyone who has the full set of skills they need to do the job, I'm always on the lookout for people with strong theory and fundamentals. They will be more likely to be able to figure out the things they don't know than the guy who studied whatever was hip at the time.

  74. Bleh, you can learn to program on your own by autopr0n · · Score: 2, Insightful

    I did. Having graduated from collage, I now realized I knew enough going in to do most programming jobs out there. Computer science is a branch of mathimatics. If you just want to program without learning anything, take MIS, and quit cha bitching.

    --
    autopr0n is like, down and stuff.