Slashdot Mirror


Is Computer Science Dead?

warm sushi writes "An academic at the British Computing Society asks, Is computer science dead? Citing falling student enrollments and improved technology, British academic Neil McBride claims that off-the-shelf solutions are removing much of the demand for high-level development skills: 'As commercial software products have matured, it no longer makes sense for organizations to develop software from scratch. Accounting packages, enterprise resource packages, customer relationship management systems are the order of the day: stable, well-proven and easily available.' Is that quote laughable? Or has the software development industry stabilized to an off-the-self commodity?"

29 of 641 comments (clear)

  1. Wow! by OverlordQ · · Score: 5, Interesting

    Accounting packages, enterprise resource packages, customer relationship management systems are the order of the day: stable, well-proven and easily available.

    And who made those packages?

    Software don't write itself.

    --
    Your hair look like poop, Bob! - Wanker.
    1. Re:Wow! by daranz · · Score: 5, Funny

      They arrived from lands far away thanks to the magic we call outsourcing?

      --
      This is a sig. It is appended to the end of comments I post.
    2. Re:Wow! by codonaill · · Score: 5, Insightful

      There are 3 other jobs I can see that require CS skills, but are not product development/design jobs.

      1. Who buys it? What skills do Computer Scientists need to differentiate between Brand X and Brand Y billing system? Basically, proper product selection is as tough a job as product design - because you have to beat down sales jargon and work out what a system actually does - generally without unfettered access to the system itself.

      2. Who builds the Middleware/Integration layer? This is so specific to individual companies that you'll never get a solution that fits all the heterogenous parts of your network.

      3. Who builds large networks of products - i.e. works out that Portal solution 1 goes well with reporting solution 2 and alarm system 3. Who breaks down the business flows between these and who keeps track of strategic direction in each area?

      Dunno, still think there's plenty of non-dev jobs out there for CS graduates...

      C.

    3. Re:Wow! by -noefordeg- · · Score: 5, Insightful

      No only that...

      "stable, well-proven ... "
      I've yet to see, say, a well written and stable ERP system.
      In Norway some of the more popular ERP/logistic and sale-systems are CS (Client System), Movex, Visma Unique and IBX. Systems which are just "ok". Terribly modules, inane logic, most likely a lot of bad code all over, but since it's closed source it's impossible to tell. From all the errors (some, really strange), lack up updated documentation and integration specifications, system resources used, and just from looking at the system documentation, you can easily tell that the systems are not "state of the art".

      What most of these complex systems really are, are a collection of small modules of which many are most likely writtin at different times, by different people, for different projects and just barely working together. The companies developing the systems probably have thousand and tens of thousand bugs and points for optimizations which will never be fixed. Any work done on these systems which is not directly connected to a new deployment and paid for by one or many customers are simply a loss for the company.
      Much of the "valuable" experience people get from using such a system, is actually how to use it without breaking it/how to use it despite all bugs, errors and strange quirks and twists.

      What my small company has been busy with the last years, is to move a lot of logic and data outside such systems. Because it's just to expensive to try and "upgrade" these huge behemoths. We develop external databases to store different data feeds, most likely recieved in XML-format which some of these systems is not capable of using. Actually, one of those systems are only capable of importing/exporting data with fixed lenght ASCII-files.

      I don't see any less work needing to be done on these systems in the coming future. Rather, the need for more developers working both inhouse and independent, to patch them up, make small adjustments here and there, and/or write "connectors" for logic/data processing will probably increase.

    4. Re:Wow! by Scarblac · · Score: 5, Insightful

      How about imaging research (stuff like using image processing to learn about the state of food stuffs with infrared cameras), or the hard problems that need to be solved to get to the Semantic Web?

      There is a lot of CS work out there. But it's science work, not programming or product development. That's not CS, that's engineering or just programming.

      --
      I believe posters are recognized by their sig. So I made one.
    5. Re:Wow! by morgan_greywolf · · Score: 4, Insightful

      Right. The term 'computer science' has become so muddled because people confuse applied computer science (computer information systems) with actual computer science. Computer science is pure science -- solving the hard problems to advance computing technology. People who have programming or computer engineering jobs are NOT computer scientists any more than mechanical engineers are physicists or pharmacists are chemists. Not that CS majors don't get jobs in the computer information systems arena, just as many physics majors go off and do engineering jobs. But the work of a software engineer just ain't science.

    6. Re:Wow! by Dan+Ost · · Score: 4, Insightful

      Knowing how to handle data structures, how low level network layers work, and a whole lot of theoritical math, doesn't help in any of these things.

      This statement makes me weep inside.

      The number one issue that governs how how well a team can work together is how well they communicate with each other. If everyone on the team has a basic understanding of the theory, then they share a common vernacular which is their most valuable asset when it comes to actually getting work done. Without a common vernacular, they will be required to invent their own which is a time consuming and error-prone endeavor which inevitably results in a late and bug-ridden product.

      You don't need to have a CS degree, but if I have to go to the white board to explain stuff that could have been quickly and clearly communicated verbally to anyone who had studied the basics, I'm probably better off not giving you development assignments in the first place.

      --

      *sigh* back to work...
    7. Re:Wow! by Bill_the_Engineer · · Score: 5, Insightful

      But the work of a software engineer just ain't science.

      My collegues and I, being software engineers in X-Ray astronomy, disagree with you

      Sure some CS majors go on to make a new computer language or new technique for image analysis, but that doesn't make the software engineer less scientific. The systems we develop are used by X-Ray astronomers and would not exist without the Electronic Technician, Electrical Engineers, Mechanical Engineers, Computer Engineers, and Software Engineers.

      It has been my observation that most of the science is done by physicists (and other scientists) who understand enough about computers to code their own small routine to illustrate their point, and hand it off to us software engineers to clean up, make reliable, and integrate in to a complete hardware system that is capable of performing the science work they need.

      When spending millions of dollars on one-of-a-kind hardware, you not only depend on the computer algorithm being correct but also reliable, thoroughly tested, and an integral part of a well engineered system. All of our science is done in unmanned flights, so we can't simply reboot when something goes wrong.

      Before you correct me and say that we are not capable of computational science, my collegue developed a tracking system that calculates vehicle orientation based on images of stars captured by a telescope mounted on the vehicle...

      Anyway my point is that science is more engineering than algorithm these days. I'm not saying pure computer science is not important. I'm saying that we must introduce engineering practices into computer science to tackle the hard problems. This is why I believe that Computer Science is evolving into Software Engineering.

      As for the non-scientific information systems, thats a job for a MIS graduate.. :P

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    8. Re:Wow! by Anonymous Coward · · Score: 5, Insightful

      1. computational science is not the same as pure computer science; if anything, pure CS resembles discrete mathematics.
      2. computer science might be spinning off "engineering" disciplines, but only after certain hard problems are solved; I seriously doubt that in your effort to create your positional system you discovered anything new about graph theory, cryptography, or algorithm analysis.

      I work with people like you everyday who think that because they write highly technical programs to convert their specialized knowledged into something that runs is doing "computer science." That is "applied" CS, and if you wanted to get into it you are really doing an engineering task.

      I have an undergrad in mechanical engineer, a MS in CS, and am working on my PhD in CS right now. I know the difference between real CS and applied CS/software engineering - and it is vast. I'd also argue that MIS people are vastly more useful than people who call themselves computer scientists because they have a formal education in some technical discipline yet work mostly with computers.

    9. Re:Wow! by Bill_the_Engineer · · Score: 4, Insightful

      computer science might be spinning off "engineering" disciplines, but only after certain hard problems are solved; I seriously doubt that in your effort to create your positional system you discovered anything new about graph theory, cryptography, or algorithm analysis.

      Have you? I admit its been a couple of years since I studied cryptography (S-Boxes, Fiestel Networks, Self synchronizing stream ciphers, oh my!). However I do perform algorithm analysis, and I use and try to improve the current working state of graph theory. You assumed that since I use engineering practices that somehow I am incapable of performing science. I admit my last internal paper was over 2 years ago, but in lieu of publishing I have been working within a couple of science missions.

      I work with people like you everyday who think that because they write highly technical programs to convert their specialized knowledged into something that runs is doing "computer science." That is "applied" CS, and if you wanted to get into it you are really doing an engineering task.

      I'm sorry I thought science required using specialized knowledge to prove a hypothesis (or create a program that does). I'm glad you corrected me... I have worked with people who think that because they are pursuing a PhD, that somehow they know better than the rest of us on how things are done.

      I do work with people who have actual PhDs in CS (and physics), and they never once considered me a code jockey or strictly "applying" computer science. We have mutual respect in our field of work. Just because I have a degree in Software Engineering, does not mean that I just code. I am not a manager of a large software project, I am a member of a 3 person software team (within a larger program) tasked with doing cutting edge work. If current technology can't do what we need, we must invent it. Admittingly, I do need to publish more.

      My point in my previous message was not that all software engineers are scientists, but rather some computer scientists are software engineers. Well, I'll let you get back to pumping lemmas...

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
  2. A question of "R" vs "D" by ZombieEngineer · · Score: 4, Insightful

    Computer Science graduates can go one of two directions:

    Academic Research - Which has grown at a steady rate

    Corportate Development - Which collapsed at the end of the dot-com boom.

    There is still a need for "pure" computer science research for the next big improvement in the field of computing (where is the next "Google" going to appear?)

    ZombieEngineer

  3. dead no, dying? yes by rucs_hack · · Score: 5, Insightful

    Over the last six years I've been increasingly worried by the falling level of ability in CS students.

    I've encountered CS students recently who in their third year are unable to do such basic things as understand memory allocation. As for algorithm design? Well that's simply unknown by the majority. That scares the shit out of me.

    The Mantra is 'don't re-invent the wheel'. This is used as an excuse for students taking off the shelf components for assignments (sorting classes for java being used for sorting assignments for example), or being given virtually complete assignments by lecturers and being walked slowly through the assignment to the point where little or no original thinking is required.

    Now it is true that re-inventing the wheel is a bad move at times. However whilst studying for their qualification, they should learn how to build the wheel in the first place.

    Back to the memory allocation point. I currently know of no final year students with a decent understanding of this topic, and yet it is the main cause of security problems in code. They should at least have a working knowledge.

    The ephasis is more and more on using languages designed to try and remove the main problems in code, but who writes these languages? It sure isn't the people who are only taught to use them, not create them.

    The normal course of action is to blame Java, since it has led to a simplistic approach to CS assignments. I'd love to blame it, I ferkin hate the language, but that isn't the root cause.

    Computer science is a hard topic that they are trying to make simpler to encourage more students. This has the result that CS students are graduating with ever reducing levels of ability, so people no longer see it as a worthwhile topic. Nowadays a CS student who wants to do really well has to work on independent study entirely apart from the course they are attending, and has also to face the unpleasant reality that their education as provided by the university is so poor that they may face years of further study to gain a useful level of ability.

    Post graduate study can reduce this problem, but there are fewer post grads too, and often it is funding, not interest in a topic, that guides the selection of a course.

    1. Re:dead no, dying? yes by rucs_hack · · Score: 4, Insightful

      Self study.

      Of the people I knew who did well, those who self studied alongside their normal course did things like website design, search algorithms, micro kernel design, robotics and advanced study in certain languages (lisp, c++, C, Object Pascal, assembler), everyone I knew did the last thing, but the languages varied.

      You can pass and get a 2.1 or 2.2 easily just by following the course guidelines. I got my phd offer not by doing this, but by cramming every day (almost every day, have a blowout night at the weekend, you've got to have some fun time) with additional study. I exceeded the requirements of every assignment (I wasn't alone in doing this), and studied around every topic taught. The result was a lot of very interesting phd offers when I graduated, it rocked. I was tired a lot, I will admit, but the benefit was vast, I was so far ahead of the students who just followed the course that I actually tutored some.

      Don't assume I'm that clever though, I sweated blood sometimes trying to get assignments done early, and the extra learning was oft times very difficult. Every evening spent on it was one well spent however.

      Most of the people I know personally who did this are now in great jobs, one heading towards millionaire status at 25. In his case he worked like a dog, even more than I did. You wouldn't beleive what he was capable of on graduation.

      So work hard, and study around the subjects.

    2. Re:dead no, dying? yes by Geoffreyerffoeg · · Score: 4, Interesting

      The normal course of action is to blame Java, since it has led to a simplistic approach to CS assignments.

      You should blame Java. And you should blame C++, Python, and any other similar medium-high level language, if that's the intro language and your sole teaching language.

      Here at MIT we have 4 intro courses. The first, the famous Structure and Interpretation of Computer Programs, is taught entirely in Scheme, a purer and more pedagogical dialect of Lisp. You learn how to do all the high-level algorithms (e.g., sorting) in a purely mathematical/logical fashion, since Scheme has automatic object creation / memory handling, no code-data distinction, etc. At the end of the class you work with a Scheme interpreter in Scheme (the metacircular evaluator), which, modulo lexing, teaches you how parsing and compiling programs works.

      The next two are EE courses. The fourth starts EE and quickly moves to CS. You use a SPICE-like simulator to build gates directly from transistors. (You've done so in real life in previous classes.) Then you use the gate simulator to build up more interesting circuits, culminating in an entire, usable CPU. From gates. Which you built from transistors. The end result is, not only are you intimately famliar with assembly, you know exactly why assembly works the way it does and what sort of electrical signals are occurring inside your processor.

      Once you know the highest of high-level languages and the math behind it, and the lowest of low-level languages and the electronics behind it, you're free to go ahead and use Java or whichever other language you like. (Indeed, the most time-consuming CS class is a regular OO Java software design project.) You're not going to get confused by either theory or implementation at this point.

      So yes, blame Java, if you're trying to teach memory allocation or algorithm design with it.

  4. Pertinent part of the article by mccalli · · Score: 5, Insightful

    From the article:Here at De Montfort I run an ICT degree, which does not assume that programming is an essential skill. The degree focuses on delivering IT services in organisations, on taking a holistic view of computing in organisations, and on holistic thinking.

    ie. not Computer Science. For those not familiar with the UK education set up I should also explain that De Montfort University is the old Leicester Polytechnic. The Polys were set up to provide much more practical education than the theoretical stances of the Universities, and a damned good job many did of it too - I'm certainly not playing the one-upmanship card that some do about the old polys, Leicester Poly was a good place and its successor De Montford has reached even further.

    But the point stands - this point of view is coming from an academic teaching at a more practically-oriented institution and already running a non-science based course. His viewpoint should be considered against that background.

    Cheers,
    Ian

  5. Re:Graduates are in short supply by cyclop · · Score: 4, Interesting

    This doesn't mean CS is dead.

    Surely computing is much more accessible, and there is a hella lot more ready-to-go software and libraries compared to what was there 10 years ago, but this means nothing. New applications will always be needed/invented, and someone will need to code them. And even with the latest and easiest programming languages, doing things well needs some kind of education.

    I am a biophysics Ph.D. student. I have never had a formal CS education nor I am a code geek (although I like to code), and just building a relatively little data analysis application with plugin support in Python is making me smash my nose against things that would make my code much better, that probably are trivial for people with a CS education (what's currying? what is a closure? how do I implement design patterns? etc.) but that for me are new and quite hard (btw: a good book about all these concepts and much more?): so I understand why CS is of fundamental importance.

    --
    -- Patent no.123456: A way to personalize /. comments with a sig attached to the end.
  6. But look where it comes from... by prefect42 · · Score: 4, Insightful

    "Neil McBride is a principal lecturer in the School of Computing, De Montfort University."

    De Montfort, one of the new universities that traditionally advertises on the TV and offers vocational courses in media and the like.

    Academic really doesn't mean much these days. He's not even consistent:

    "Interrupts, loops, algorithms, formal methods are not on the agenda."
    vs
    "The complexity of embedded systems, of modern computing applications requires a different way of thinking."

    I'd not like to use an embedded system he'd developed, unless by embedded he was thinking Windows Mobile + Flash.

    Sorry, a rant from someone who works at a real university, and knows he isn't an academic.

    --

    jh

  7. The hard sciences are all dying by SmallFurryCreature · · Score: 5, Insightful

    For that matter so is education in general. I am not a computer scientist, my education is technical instead. (LTS/MTS/HTS for the dutch)

    When I attended the LTS we had real shop class, learning how to work with wood, steel, electricty with real world equipment in an area that looked much like you would expect to find in industry.

    I recently had the occasion to visit a modern school that supposedly teaches the same skills, yet what I found was an ordinary classroom with a very limited and lightweight set of equipment. The kind of stuff you would find at home, NOT at work.

    Yet somehow todays kids are supposed to learn the same skills.

    And as if that ain't enough the number of hours of shop class have been reduced while the number of theory hours has been increased. Worse, the amount of technical theory has decreased as well and instead the amount of soft theory like history and such has taken over.

    This has TWO negative impacts. First young kids coming to work can't hold basic equipment and don't understand the theory behind it and even worse the kinds of kids (like me) that used to select a techincal education because they don't like theory have that choice removed. I myself was far too restless to do a theorectical class, 18 hours of shop class per week however made the remainign theory that much easier to handle and because theory and practice were linked it all made sense.

    Even worse, the modern education is supposed to make kids fit better into society, so how come they are bigger misfits then any generation before them?

    No this is not old people talk. Notice even here on slashdot how the art of discussion is dying out, say anything remotely controversial and be labelled a flamebaiter or a troll by some kid who can't handle the heat. I actually had a 20 year old burst in tears about two years ago because I chewed him out for drilling through the work bench. Modern education is so much about empowerment that kids who think they are the top of the top can't handle suddenly being the lowest of the low when they enter a working life. This is already a shock simply because you just went from being the youngest in school to the oldest in school and now suddenly you are the youngest again.

    Simply put, I think education in general is less and less about turning out skilled proffesionals and more and more about just keeping kids of the job market. Comp Sci ain't the only victim. Just try to get a good welder nowadays. Hell I settle for anyone who can knows the difference between a steel drill bit and a stone one. (And no, that doesn't mean one is made out of stone, rather what it is for drilling into).

    --

    MMO Quests are like orgasms:

    You may solo them, I prefer them in a group.

  8. If you only want to do pure research, maybe by Moraelin · · Score: 4, Insightful

    You know, I don't buy it. On one hand you have all the corporates bitching and moaning about how they don't have enough people to do the work, and how everyone should outright give citizenship to any immigrant who can use a computer. See Bill Gates's speech recently, it was linked to right here on Slashdot. Plus, they've surely created a lot of jobs in India lately. And then we have guys like this one coming out and saying "oh, we just don't need more CS people." Something doesn't add up. Either one gang is right, or the other is right, but they can't both be right at the same time.

    Way I see it, reality is a lot more... perverse. Everyone still needs programmers, still needs an IT department, etc, they just don't want to pay for it.

    And enrollment has just reflected this. Studying engineering or CS is hard work, and there are only a limited number of people who do it for fun. And even those can do it as a hobby at home if all else fails. For most people you have to pay well to get them to do the extra effort. If you don't pay up, they'll go do something else.

    At any rate, the jobs do exist. Sure, not most of them involve researching the next great algorithm, but they exist. There are a ton of companies who need very specialized internal applications, or their own "B2B" applications, and I just don't see the off-the-shelf software who does those. Of course, most of it doesn't involve researching any new algorithms, but rather researching what the users really want. Then again, most computer-related jobs weren't exactly academic research in the past either. There were maybe more companies making compilers and new computers and what have you, but the bulk of the jobs was always in doing corporate software.

    At any rate, _maybe_ if all you're seeing yourself doing after college is researching the next paradigm shift in computing, yeah, that market has somewhat shrunk. If you don't have any qualms with writing some buzzword-ladden application for some corporation, it's as strong as ever. It just doesn't pay as much as in the dot-com times any more.

    --
    A polar bear is a cartesian bear after a coordinate transform.
    1. Re:If you only want to do pure research, maybe by ZombieEngineer · · Score: 4, Interesting

      I don't know if this was meant to be a flame bait but I'll bite.

      I am an engineer by trade (making training simulators for chemical plant operators) and I have encountered more than my fair share of Computer Science graduates.

      A lot of these people are focused on "how do I meet this product spec?" and not necessarily a solution fit for purpose. I routinely encounter situations where enumeration comparisons are done using strings and searches are implemented using a linear search (I kid you not, I once reduced a program run from 90 mins to 4 mins by replacing a single linear search with a binary search). Just because every 6 months there is a more powerful CPU on the market doesn't justify ever increasingly sloppy coding.

      There are a few people who are focused on "how do I make this better?". For these people making a compiler that would recognise linear search and replace with a more appropriate technique automatically is there objective, before people jump up and down saying there is no way a compiler could determine this I will point out that there was a consulting company who 20 years ago had a FORTRAN compiler that would silently replace nested loops with equivalent BLAS matrix calculations (said consulting company was bought out by Intel several years ago). So what is the big deal? FORTRAN died several years ago... Well it is a bigger deal today with Dual Core processors where things like BLAS calculations are perfectly suited to parallel processor architecture.

      Moving on to address some of your other comments: "Everyone still needs an IT department"
      If your IT department is stacked with CS people then someone isn't doing their job properly. I found IT support (did it for a University department while working on my post-grad) is highly dependent on the level of planing and implementation. A well planned system with appropriate lock-downs (era of Win 3.1, we mirrored the HDD of the local machine from the network server when people logged in) resulted in no viruses or other on-going issues (you had a network drive for personal storage but the desktops were a shared resource, you could install software, use it but the moment you logged off and back on again - Poof!). Prior to having a planned strategy, IT support consisted of firefighting & band-aid patching.

      "There are a ton of companies who need very specialized internal applications, or their own "B2B" applications"
      Oh Please!!! Specalised applications are a pain in the neck to support, the real issue here is that who ever implemented them did not fully understand what the end user requirements were. There is a real art of extracting that sort of information out of people and it requires an inquiring mind, good communication and people skills. There are application houses that milk corporations of money due to scope changes because they couldn't get the original spec right (I am not going to enter into the argument of whose is to blame for a defective spec, there are valid arguments for both sides).

      ZombieEngineer

    2. Re:If you only want to do pure research, maybe by Sobrique · · Score: 4, Interesting

      I'm starting to agree. I look around my 'IT office' and most of it _isn't_ CS degree level. It's helpdesk, RFTM and 'rebuild my PC' level. Now, the infrastructure development and systems architecture is still very definitely a specialist IT role, which is my current focus, but most of the people on the 'coalface' need about as much IT literacy as the guy using MS word.

  9. Is computer science dead? by jandersen · · Score: 4, Funny

    No, no, it just smells funny.

  10. Don't worry, be happy :-) by Anonymous+Brave+Guy · · Score: 4, Informative

    You shouldn't be intensely worried, but reading around your subject is pretty much always a smart move if you're a serious student. I learned this lesson very late in my academic career, and now wish I'd understood what the phrase really meant a couple of years earlier.

    In this business, knowing multiple programming languages (and in particular, knowing multiple programming styles -- OOP, procedural, functional, etc.) is a big asset. It helps you to think about problems in more varied ways, even if you will ultimately code the solution in whatever language is required by your particular professor or, in due course, employer.

    There are two suggestions I've heard in the past that I appreciate more as time goes by: try to learn a new programming language and to read a new book about programming every year. In the former case, if you're learning Java, that's OK, it's a pragmatic tool that's widely used in industry and it will teach you one way of thinking about a problem. I suggest the following as complementary languages, to be explored as and when you have the opportunity:

    • C, or even some version of assembler, to understand what's going on under the hood and what a low-level programming language really is;
    • Haskell or a dialect of ML, to understand that not all programming languages are block-structured procedural languages, and what a high-level programming language really is;
    • Python or Perl, to understand the costs and benefits of requiring less formal structure, and the use of dynamic type systems, and to learn a few neat ideas like regular expressions;
    • when you're ready, LISP, to understand what the old sayings "code is data" and "data is code" really mean, and what concepts like macros and metaprogramming are really all about.

    There are various other unique things you'll take away from each of the above, but if you spend perhaps a few months exploring each of them in some detail, it will make you a much more rounded programmer. I'd suggest either the above order, or swapping the first two around and going for a functional programming language and then something low-level. The requirements of your course or good advice from friends/teachers may guide you otherwise. Go with what works for you.

    To make your learning practical, pick some simple projects, perhaps to practise whatever algorithms you happen to be studying lately in other courses, and write a few small but real programs in each language. For example, if you're learning about operating system basics, try rewriting a couple of simple OS utilities or networking tools in C or assembler. If you're learning about databases, try writing a simple web front-end for a database, and power it with a few CGI scripts written in Perl or Python that use SQL to look up and modify the data in your database. If you're learning about graphics and image processing, write a simple ray tracer in Haskell or ML.

    Along the way, you'll develop potentially useful real world experience with things like OS APIs (and perhaps how they vary between platforms, and thus why standards are useful for these things), HTML/CSS and CGI for web development, SQL for database work, and so on.

    As you go through this, consider buying a good textbook on major subjects (programming languages, databases design and SQL, graphics algorithms, etc.) or make sure you've identified some good reference and tutorial material on the web. The latter is a big advantage for the modern compsci student, though you have to be careful to check your sources are well-regarded and not just a pretty web site with an authoritative tone of voice written by someone very enthusiastic but regrettably ill-informed. Things like FAQs and newsgroups can be valuable sources of information, but sometimes, there's just no substitute for a well-written, well-edited, authoritative textbook.

    Anyway, this post is now far too long, so I'll stop there. Please consider it "the approach I'd take if I could have my university days again" and take it for whatever it's worth to you. Good luck. :-)

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  11. no, no, no by tomstdenis · · Score: 4, Insightful

    This has been asked repeatedly ever since I was a wee lad [20 years ago]. The idea then was BASIC would replace comp.sci because it was so simple to program. Of course, it overlooked the fact that BASIC is wickedly inefficient. No, the answer is no. No. No. No. Why? Someone's gotta maintain the scene.

    For starters, the more automated tools are not efficient enough for most computing platforms (hint: think running that nice VB.NET application in 32KB of ram). Then combine that with the need for algorithms (re: 16MHz processors) and you can see that RAD tools don't apply.

    Tom

    --
    Someday, I'll have a real sig.
  12. Computer Science "is too hard" by Rik+Sweeney · · Score: 5, Interesting

    That's why people don't do it. When I was at University in the UK (Portsmouth if anyone cares), I did Maths and Computing.

    The first year consisted of learning how to format a floppy disk and write a Word document. Oh, and there was some Java thrown in there, but people found Java too hard and complained. Java then got removed from the curriculum and we did crap like theories in Artificial Intelligence instead.

    We had the option of doing C++ in our final year but this largely consisted of printing out to the console and writing some text to a file. No fancy shit like Pointers or anything like that. Most people didn't elect to do this option as programming is hard work and they just stuck to Matlab instead.

  13. Listen to these dudes by DingerX · · Score: 4, Insightful

    Parent, and ABG below. It's true for just about every undergraduate field.

    Undergraduate education has a few factors that drive the curriculum: one is enrollment (make it too hard, and nobody shows up; require everybody to take it, and everybody has to pass it), another is vocational preparation (what does the job market demand? or -- mixing enrollment and vocation -- what do the students think the job market demands?). The folks doing the teaching aren't really interested in either of these, and nor are the "good students".

    The "vocational" side of university education has always been there, and it's always been looked down upon by the really sharp people. And, you know what? In spite of the political rhetoric you hear around the US and Europe, the students who "Hit it out of the park" career-wise, the big successes, the Googles, Netscapes, Yahoos, Nokias and so on, aren't the ones who stick to a vocational curriculum. The ones who just did what the course told them to do are the guys who end up seeing their Technical Support jobs get outsourced.

    The "enrollment" issue is even more pernicious. No department wants to lose students -- since students are tied to money and power in the universities. So if a subject gets "less popular", the curriculum gets "easier" to boost retention.

    University courses, like other forms of professional formation, do teach a major professional skill: that to achieve results you need to be willing to do lots of crap-work, and that a good job involves doing boring stuff much of the time.
    Outside of that, the true strength of universities is that you're given some good resources to play with, and are surrounded by smart, curious, interested people. Find your passion, pursue it, and don't sweat money or jobs. Any employer you'd want to work for will recognize your abilities.

  14. Computing Disciplines by LordLucless · · Score: 5, Insightful

    One problem is that the computing disciplines have become intermingled and are often used interchangeably. Let me outline my definitions:

    Computer Science: This is the theoretical, researchoriented discipline. It deals with developing new algorithms, optimization and that side of things.
    Software Development: This is the application side of Computer Science. It takes the algorithms developed by CompSci and makes useful applications out of them.
    Information Technology: This is the techie discipline. Building computers, setting up networks, administrating systems. I'm not sure why it got that name, but it seems to have.

    The problem that this guy has is that he has conflated Computer Science and Software Development. And it used to be the case that they were pretty much mixed - if you wanted to program, you needed to understand all the theoretical stuff yourself. But in these days of large, freely-available libraries and modular software design, the two have become very distinct disciplines.

    It's not that Computer Science is dying out; it's that it has subdivided into two separate disciplines, and of the two, there is a much greater demand for Software Developers than Computer Scientists.

    --
    Just because you're paranoid doesn't mean there isn't an invisible demon about to eat your face
  15. Bingo by benhocking · · Score: 4, Interesting

    There is a lot of CS work out there. But it's science work, not programming or product development. That's not CS, that's engineering or just programming.

    Leaving aside the issue of whether there is plenty of programming or product development work still out there (I think there is), you're absolutely right. We might as well argue that physics is dead because there are so few jobs for physicists. The supply/demand ratio for physicists is quite high. However, that doesn't mean that there isn't plenty of good science left to do. (No talking about string theory here - too volatile a topic.)

    Examples of very interesting areas in computer science, besides software development, compilers, networking, programming languages, graphics, and architecture include: quantum computing, neural networks, genetic algorithms, and genetic algorithms with neural networks. (Perhaps I'm wee bit biased here.) I guess to be fair I should also mention the tremendous growth in bioinformatics.

    --
    Ben Hocking
    Need a professional organizer?
  16. Econ 101 by GCP · · Score: 4, Insightful

    I program because I love it. I've been doing it since before the Internet boom brought in all the carpetbaggers.

    Some years back, before the boom, I decided that Moore's Law (and other economic forces) were going to increase the number of programmable devices exponentially for decades to come, creating an insatiable economic demand for programmers. When the iBoom arrived, I saw it as a short-term overreaction, but still a part of long term extreme ramp up in demand for programmers.

    Then I started studying economics seriously and discovered the mistake in my thinking. Demand for programmers is not proportional to the amount of code running in the world. I've written code that will soon be on a billion (with a "B") devices, but it's the same code it was when it was on fewer than 100 M devices, and those of us who wrote it easily fit in one small cubicle pen.

    Real demand for programmers depends on how much NEW code has to be written and HOW FAST. (And by "new" I certainly include maintenance, glue code, customization of existing packages, etc.) If the number of programmable devices explodes (as I still believe--and observe), much of it will run code written by very few people, customized a bit, tweaked and glued by a few more people for other devices, and massively replicated. And if that customization can be done slowly enough, it can be done by an arbitrarily small group of programmers. Custom code for your own personal needs and those of your business group will constitute most new code, and that will be supported by tools that do what you want with a minimum of "programming" on your part--tools like Excel.

    Then the same Moore's Law and other forces that create the "everything will run software and be connected" world of the future also brings a hundred million or more new potential programmers into the developed world economy (without ever leaving their local undeveloped economies) each year to meet the demand for however much new code needs to be written each year, and the job of "programmer" is going to look more and more like various factory worker jobs (the decent ones, not the dangerous ones.)

    So the professor is decrying the falling interest in Computer Science. How would enrollment look in a "Factory Science" department at his university, I wonder....

    --
    "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."