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

10 of 654 comments (clear)

  1. 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. 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)
  3. 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.

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

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

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

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

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