I think it is great to have children interact with computers. My parents had me on a computer from day one, and taught me to program on an old Atari PC from 1979. The encouraged me to learn about computers, and focused me on solving problems with them. The result? I got my BS in Computer Science, now work for NASA, and in the Fall will be attending the University of Illinois to get my PhD in Computer Science.
I think exposure to computers from an early age had a lot to do with this, and would encourage all parents to do the same to their kids.
I agree, April fools is supposed to be about funny postings on Slashdot of jokes other websites are running.
The chicken warmed nukes were hilarious, and the Omniscience Protocol was a good laugh as well. But what the heck is the point of the "anonymous reader" posts by michael which don't even have links to stories in them and consist of crap that isn't even funny? Come on michael! There is an excellent joke up on google today you could link for us, and I am sure there are hundreds of other hilarious stories you could dig up.
Why must you post such lame crap michael? It isn't funny, and there are plenty of truly funny stories to post. Do your job, and edit out the crap.
KMart? is that some online shopping utility that comes with KDE?
No, KMart is the kingdom of the grand high demon queen who seeks to subjugate the world with cheap mechandise and tips on being a housewife. It is a realm of pure evil ruled by a merciless overlord whose very looks can slay the living... or at least turn them into a tastefully tacky center piece.
She carves doilies out of the flesh of the living, makes mobiles out of their entrails, and bakes their bones into wedding cakes. Fear her, the bringer of doom, lest she varnish her deck chairs in your blood!
Even more annoying to me is the shortening of the new season that has been going on. It seems that lately a season of a TV show these days is made up more of reruns than original material. For all but one of the shows I watch regularly (only about five), there hasn't been a new episode since mid february, and no new ones promised till mid april. Give me a break! If you want me to watch the crap you put on TV (which is so bad, I only watch five shows in the first place, one only because it happens to be on the TV in the gym while I work out), at least put out new crap! These actors are making millions for what amounts to very little work each season.
Don't you wish you could get payed a normal salary for less work every year?
You obviously know nothing at all about repairing machinery. Mechanics still must have a good understanding of how the systems that they are repairing work. Otherwise they would have no hope of figuring out what the problem was.
My point isn't that they don't understand "How" they work, they just don't understand "Why" they work. The "Why" is the important part of the two. You must know "How" before knowning "Why", but for one who knows "Why", the "How" becomes elementary.
"How" allows you to fix a broken engine. "Why" lets you design a more efficient one.
Horowitz and Hill is a great book, and a great place to start some basic EE (ISBN: 0521370957). Other than that, just take classes in your spare time, and don't worry about the degree, work on doing the class work and learning what you can. A University lab is really the best way to do this. EE has a huge initial materials cost as you need at bare minimum an oscilloscope, a multimeter, an iron, and some other various tools, along with some space to work.
Spoken like someone one has never hard to apply what they have learn't in the real world(tm). Well as someone who did a Computer Science degree and now works as a programmer I think you are spouting intellectual elitist bollocks.
Given that I work in aircraft modeling and design, I can say you are wrong. My computer science degree has payed off in the way I have described, and I've been pivotal to my team because of it. One day you'll be flying in something I helped to build, and make safer because of these skills.
If the whole of programmers had training as computer scientists, maybe we'd have more quality software and less unacceptable crap.
Of course, as a pragmatist I would be foolish to discount the utility of cs theory entirely... but it would be an even worse folly to rely entirely upon theory. And besides, lots of talented individuals have bottled their knowledge inside of API's and stuff that I can use (let's hear it for Open Source!), so most of the time, I don't need to know how it works, anyway.
I think perhaps we had very different university experiences. The vast majority of my courses consisted of teaching theory, implementing a few toy problems to prove we knew what we were talking about, and then launching into an independant study of some problem, and implementing a solution for it that was better than existing solutions. As an example, in one class, I chose to look at schedulers on heterogenous clusters, worked with the scheduling algorithm, and then worked out a predictive modeler to make scheduling changes based on what workload we experienced on a previous day to improve the scheduling policy.
The end result is that you only spend time teaching the theory, and grade the practice along the way, in the end forcing them to apply everything in a meaningful fashion, proving they know what they were doing. I gained a lot from every class, no matter how much I hated the material, and it has payed off in a very real fashion in my work.
It was, at one point in time an auto mechanic was often a degreed mechanical engineer. They had to understand the complexities of early automotives, an internal combustion engine, and the complex controls in the vehicle. Just like, once upon a time, it took real knowledge to assemble a computer.
Just like the original computers, autos have no become something that one can easily repair with semi-standardized parts, and a high school education plus some on the job training.
Mechanical engineers have moved to new levels, and so have computer engineers, leaving auto mechanics, and IT people in their old places in the now relatively unskilled positions.
I won't dispute your central point. I think it's vital to make a distinction between hard programming and soft programming. But the gap between the theory and practice just isn't as clear cut with computer science as with other disciplines. There is a big difference between designing an engine and building one. The difference is much less pronounced in software, because at some point the design or description becomes a program in its own right.
I'll definitely agree with you here, the gap between theory and practice is very foggy, however it is there. I'm not saying practice is bad, it's very important, just that the question is "What to practice". Languages and the concept of programming are just tools. Like a hammer and a drill, the knowledge of how to use them properly is important, but also fairly self explanitory to the architech who is using them. The importance isn't that knowledge, but rather the knowledge of how to use them in efficient ways to make new things that have never been seen before.
Programmers design ways to make a computer most efficiently process mathematical representations. And not just mathematical representations, either. All kinds of representations, in fact.
Here I disagree. A "programmer" does not design anything, most implement things that others have, for the most part, come up with. And all representations in a computer are mathematical, you may have painted over it with an abstract model, but at the heart, it's all boolean algebra.
Sorry, but you are 180 degrees wrong.
It is this slacker approach that is responsible for all the crap software out there. Get it through your head: software engineering is compeletely different from writing a self-recursive factorial function demo.
Academia likes to push Abstract Data Types, but when you force them to sit down and write any moderatly sized program in the language of their choice, (say, a game demo or desktop calculator), you'll find many of them totally at a loss on how to apply their ADTs or even structure their programs in a way that others can read. Usually this is accompanied by some lame-ass statement about "in a real program we'd do it this other way". Well what are people going to school FOR? To write non-real programs? I think not.
You are missing my point entirely, I'm not saying that one shouldn't code in a class, in all of the classes I took, I was required to code, often in a particular language, and we were graded on how well we coded as well, but coding was never taught beyond that. We were required to implement the various theories, and come up with our own solutions. Programming, however, was never taught beyond the introductory class, we were expected to pick that up in our spare time, or suffer from low grades if we didn't.
This culminated in several very large projects in later classes. In systems we had to implement a networked board game, including the GUI, sockets, and communications protocals. In another class we had to implement a 3-D rendering engine so as to visualize some of our results. All of this written from scratch.
Almost everyone was able to do this, the ones that couldn't moved on to other majors, because quite frankly, they had no business being computer scientists if they couldn't handle this on their own.
Algorithms are easy - just read a book or search the web. Good software development on large projects is much harder.
Yes, you are right, learning a prexisting algorithm is a cake walk, it's forming a new one, or making serious improvements on a current one that are important. This is what a computer scientist does. It's not enough to know that "quicksort is better than bubble sort", you need to be able to see why, and figure out how to make a better algorithm, or understand it enough so that when you run into something you've never seen before, like calculating core sizes of vortices in an efficient way, you'll know how to do it, regardless of the language used to do so.
Any computer scientist worth his salary can code in any language, and code well, even if he has never seen it before. The problem with coders this days, is that most are just that, coders. They know how to program, but have no clue what they are really doing mathematically and algorithmically.
The difference between theory and practice is very small in theory, but rather large in practice.
Spoken like someone who has never studied computer science theory. The vast majority of what I've studied in theory has paid off directly, in fact I can show you exactly how. For example: working with scientific computing, cache limitations, and matrix operations, I can show you real results that prove that when linear algebra is programmed in what seems to be the natural way, in fact your performance is often bad due to cache boundaries. If you take the theory into account and check your cache boundaries, performing your operations so as to maximize cache-hits, you end up with a much better performance.
In computer science, we have a (mostly) controlled environment, so most of the theory applies.
This is why you need to study computer science, rather than "programming". Programming is a skill that can be useful, but is, by its very nature, transient. Remember, at one point in time, auto mechanics were considered a very skilled white collar position.
Computer Science on the other hand, is a mathematical discipline which involves working out how to do things better, faster, and with less energy. It's about algorithm design, and ways in which to make a computer most efficiently process mathematical representations. It'll be useful far beyond the use of general "coding".
Coding itself is becoming more and more prevalent. I have many friends who aren't even scientists who know how to code, and were even required to for their humanities classes (from English, to History, to Foreign Language). This is a good thing, IMHO. Coding is a great general purpose skill.
Don't devote your life to the practice of programming, devote it to understanding why certain things work better, and how to further refine our techniques of computation. Work on understanding the hardwaresoftware interface, and you open up all kinds of new fields, from embedded engineering, to robotics.
Take the hint from the majority of good Universities who teach computer science, where you are simply expected to pick up a language in your spare time, because that aspect is secondary to the theory, and the easier of the two.
Notice I never said "Don't use inheritence", just that it was overrated. Programming OO forces people to use encapsulation, left to their own devices, people will just cobble together shit that barely functions. OO approaches force a structure, which to me is the beauty. Inheritance is nice when you can use it, and I have before on a few occasion. But most of the time, I can deal without it.
Written like someone who has never used a functional language before. And I know a lot of functional programmers that would argue that OOP is not the way.
Give Haskell [haskell.org] or Erlang [erlang.org] a try. If you've never done functional programming it'll take a while to get used to it but it's worth it. I wouldn't bother with O'Caml straight away because it's kinda convoluted and the default syntax sucks.
Personally I feel future better languages will combine OOP and functional programming. Some languages are already doing it but I haven't seen any really tasty combinations yet.
Actually I've done a lot of functional programming before, mostly LISP, and while it is great for some things it isn't for others. Imperitive programming works best for the majority of situations, especially considering its wide spread use.
So why do you assume OOP is the better way to go?
I don't assume that OOP is the better way to go. I know it is from experience. I work with a lot of OPC (other people's code for those who don't know the term), and let me tell you, working with objects is about 10x easier for maintence, and for adding functionality. OOP isn't an excuse to code poorly though, I will take non-OOP that is well written over OOP that is poorly written, however as most of the code I deal with is poorly written, the OOP does make it easier.
OOP enables you to easily swap out modules, or replace existing code. As long as you know the inputs and outputs of an object, it can be seemlessly removed for a newer version. This makes maintence much easier, and so long as public/private/protected conventions are followed, it can allow for some really smooth upgrades.
IMHO inheritance is an overrated feature of OOP, I primarily like it because it forces people to work in a black box model, which makes the whole problem of updates and bug fixes 100x easier for the person who has to deal with your otherwise crappy code.
Publications help to define how well known the faculty is, and how active they are in their research. Degrees from MIT connect you in a way that few other places are. Unless your CS degree is from a top 10, or at the least a top 20 school, you'll never compete with those candidates. Does it matter if you go to MIT or Wisconsin? Not in the long run, but WPI isn't going to get you as far.
Top 10 Computer Science Programs:
Stanford, MIT, Berkeley, Carnegie Mellon, University of Illinois at
Urbana Champaign, Cornell, Princeton, University of Texas at Austin,
University of Washington, University of Wisconsin at Madison.
Top 20 Computer Science Programs:
Harvard, CalTech, Brown, UCLA, Yale, Maryland - College Park, NYU,
Massachusetts at Amherst, Rice, University of Southern California,
University of Michigan.
People know these programs are the best because of the work they produce, the research labs that they run, and the training they give to their students. These places give you jobs. Publications are a GREAT way to see how well the faculty are doing because publishing means your advisor will be well known and well connected, and that he can pass on those connections to you.
Just like with people, you cannot just shove a test in their face and guage them based on the results. There are factors that cannot be easily determined.
The classic response of someone who "couldn't hack it". WPI is not a good institution, and as someone else has pointed out, there are good solid ways to point it out.
First off, publications, how often do the faculty publish work that gets accepted by a real journal? This is a good measure of how well the faculty can do their job, and affect their field.
At MIT, 77% of the CS faculty publish on a regular basis, averaging 3.8 publications per faculty member. In addition they have a Gini coefficient of 6.0, meaning that these works are only 6% concentrated, in otherwords, almost all of the faculty publish at or near the average.
At WPI, 58% of the CS faculty publish on a regular basis, averaging 1.1 publications per faculty member. Not only do most faculty not publish, and few articles are published from WPI at all, but their Gini coefficient is 18.3%, meaning that these publications are concentrated over twice as much than as MIT. Furthermore, these "star publishers" at WPI who make up the bulk of WPI's publications are publishing less frequently than the low people on the totem pole at MIT.
Face the facts mate, WPI is not a good institution.
Perhaps you're a WPI grad like me? Personally, I'll admit that it sucks to see MIT get all of the attention for tech schools in the northeast and a certain amount of jealousy will always reside in me.
But then again, to ignore the fact that MIT is also obviously a really good school is just silly and petty.
Well one could always look to the rankings to see why MIT gets pushed above WPI.
From www.cra.org, MIT scores a 4.91/5.00, and WPI a 1.13/5.00
From the looks of it, WPI has a pretty crappy program.
Actually, Linux can't be severely damaged by a virus if you are smart and run as a user, and not as root. Why? Permissions.
My machines do nightly backups to disk, and weekly backups to CD. If I got a virus, sure it could wipe my user space if it REALLY wanted to, but assuming it did... no big deal, I wipe it clean, and do a restore, voila! I've lost less than 24 hours of work.
B) Perhaps I was typing it rather fast, and did not bother to proof, seeing as this is slashdot, and not an important piece of work
C) Perhaps I simply don't care as the post was for amusement
D) Perhaps you are just an anal S.O.B, who needs to find something better to do with his or her life, such as pull your head out of your anus, and go on and do important things with your life.
I think it is great to have children interact with computers. My parents had me on a computer from day one, and taught me to program on an old Atari PC from 1979. The encouraged me to learn about computers, and focused me on solving problems with them. The result? I got my BS in Computer Science, now work for NASA, and in the Fall will be attending the University of Illinois to get my PhD in Computer Science.
I think exposure to computers from an early age had a lot to do with this, and would encourage all parents to do the same to their kids.
I agree, April fools is supposed to be about funny postings on Slashdot of jokes other websites are running.
The chicken warmed nukes were hilarious, and the Omniscience Protocol was a good laugh as well. But what the heck is the point of the "anonymous reader" posts by michael which don't even have links to stories in them and consist of crap that isn't even funny? Come on michael! There is an excellent joke up on google today you could link for us, and I am sure there are hundreds of other hilarious stories you could dig up.
Why must you post such lame crap michael? It isn't funny, and there are plenty of truly funny stories to post. Do your job, and edit out the crap.
UT - Austin is tied for 7th currently, with Washington, it is an excellent school.
Also of is Rice University (in Houston), a top 20 school in CS.
KMart? is that some online shopping utility that comes with KDE?
No, KMart is the kingdom of the grand high demon queen who seeks to subjugate the world with cheap mechandise and tips on being a housewife. It is a realm of pure evil ruled by a merciless overlord whose very looks can slay the living... or at least turn them into a tastefully tacky center piece.
She carves doilies out of the flesh of the living, makes mobiles out of their entrails, and bakes their bones into wedding cakes. Fear her, the bringer of doom, lest she varnish her deck chairs in your blood!
Even more annoying to me is the shortening of the new season that has been going on. It seems that lately a season of a TV show these days is made up more of reruns than original material. For all but one of the shows I watch regularly (only about five), there hasn't been a new episode since mid february, and no new ones promised till mid april. Give me a break! If you want me to watch the crap you put on TV (which is so bad, I only watch five shows in the first place, one only because it happens to be on the TV in the gym while I work out), at least put out new crap! These actors are making millions for what amounts to very little work each season.
Don't you wish you could get payed a normal salary for less work every year?
You obviously know nothing at all about repairing machinery. Mechanics still must have a good understanding of how the systems that they are repairing work. Otherwise they would have no hope of figuring out what the problem was.
My point isn't that they don't understand "How" they work, they just don't understand "Why" they work. The "Why" is the important part of the two. You must know "How" before knowning "Why", but for one who knows "Why", the "How" becomes elementary.
"How" allows you to fix a broken engine. "Why" lets you design a more efficient one.
I thought you meant the things that were being represented. I must have expressed myself poorly.
;)
Nah, it's just the mutually hard job of getting through what one means in the space of an internet post, it never works very well
Horowitz and Hill is a great book, and a great place to start some basic EE (ISBN: 0521370957). Other than that, just take classes in your spare time, and don't worry about the degree, work on doing the class work and learning what you can. A University lab is really the best way to do this. EE has a huge initial materials cost as you need at bare minimum an oscilloscope, a multimeter, an iron, and some other various tools, along with some space to work.
Spoken like someone one has never hard to apply what they have learn't in the real world(tm). Well as someone who did a Computer Science degree and now works as a programmer I think you are spouting intellectual elitist bollocks.
Given that I work in aircraft modeling and design, I can say you are wrong. My computer science degree has payed off in the way I have described, and I've been pivotal to my team because of it. One day you'll be flying in something I helped to build, and make safer because of these skills.
If the whole of programmers had training as computer scientists, maybe we'd have more quality software and less unacceptable crap.
Of course, as a pragmatist I would be foolish to discount the utility of cs theory entirely... but it would be an even worse folly to rely entirely upon theory. And besides, lots of talented individuals have bottled their knowledge inside of API's and stuff that I can use (let's hear it for Open Source!), so most of the time, I don't need to know how it works, anyway.
I think perhaps we had very different university experiences. The vast majority of my courses consisted of teaching theory, implementing a few toy problems to prove we knew what we were talking about, and then launching into an independant study of some problem, and implementing a solution for it that was better than existing solutions. As an example, in one class, I chose to look at schedulers on heterogenous clusters, worked with the scheduling algorithm, and then worked out a predictive modeler to make scheduling changes based on what workload we experienced on a previous day to improve the scheduling policy.
The end result is that you only spend time teaching the theory, and grade the practice along the way, in the end forcing them to apply everything in a meaningful fashion, proving they know what they were doing. I gained a lot from every class, no matter how much I hated the material, and it has payed off in a very real fashion in my work.
Not to put too fine a point on it, but again, how is this different from what "programmers" do?
Someone who is simply a programmer, codes algorithms which someone else has come up with. This covers most coders I have known.
A computer scientist makes new things, and them implements them by programming.
I don't think this was ever true.
It was, at one point in time an auto mechanic was often a degreed mechanical engineer. They had to understand the complexities of early automotives, an internal combustion engine, and the complex controls in the vehicle. Just like, once upon a time, it took real knowledge to assemble a computer.
Just like the original computers, autos have no become something that one can easily repair with semi-standardized parts, and a high school education plus some on the job training.
Mechanical engineers have moved to new levels, and so have computer engineers, leaving auto mechanics, and IT people in their old places in the now relatively unskilled positions.
I won't dispute your central point. I think it's vital to make a distinction between hard programming and soft programming. But the gap between the theory and practice just isn't as clear cut with computer science as with other disciplines. There is a big difference between designing an engine and building one. The difference is much less pronounced in software, because at some point the design or description becomes a program in its own right.
I'll definitely agree with you here, the gap between theory and practice is very foggy, however it is there. I'm not saying practice is bad, it's very important, just that the question is "What to practice". Languages and the concept of programming are just tools. Like a hammer and a drill, the knowledge of how to use them properly is important, but also fairly self explanitory to the architech who is using them. The importance isn't that knowledge, but rather the knowledge of how to use them in efficient ways to make new things that have never been seen before.
Programmers design ways to make a computer most efficiently process mathematical representations. And not just mathematical representations, either. All kinds of representations, in fact.
Here I disagree. A "programmer" does not design anything, most implement things that others have, for the most part, come up with. And all representations in a computer are mathematical, you may have painted over it with an abstract model, but at the heart, it's all boolean algebra.
Sorry, but you are 180 degrees wrong. It is this slacker approach that is responsible for all the crap software out there. Get it through your head: software engineering is compeletely different from writing a self-recursive factorial function demo. Academia likes to push Abstract Data Types, but when you force them to sit down and write any moderatly sized program in the language of their choice, (say, a game demo or desktop calculator), you'll find many of them totally at a loss on how to apply their ADTs or even structure their programs in a way that others can read. Usually this is accompanied by some lame-ass statement about "in a real program we'd do it this other way". Well what are people going to school FOR? To write non-real programs? I think not.
You are missing my point entirely, I'm not saying that one shouldn't code in a class, in all of the classes I took, I was required to code, often in a particular language, and we were graded on how well we coded as well, but coding was never taught beyond that. We were required to implement the various theories, and come up with our own solutions. Programming, however, was never taught beyond the introductory class, we were expected to pick that up in our spare time, or suffer from low grades if we didn't.
This culminated in several very large projects in later classes. In systems we had to implement a networked board game, including the GUI, sockets, and communications protocals. In another class we had to implement a 3-D rendering engine so as to visualize some of our results. All of this written from scratch.
Almost everyone was able to do this, the ones that couldn't moved on to other majors, because quite frankly, they had no business being computer scientists if they couldn't handle this on their own.
Algorithms are easy - just read a book or search the web. Good software development on large projects is much harder.
Yes, you are right, learning a prexisting algorithm is a cake walk, it's forming a new one, or making serious improvements on a current one that are important. This is what a computer scientist does. It's not enough to know that "quicksort is better than bubble sort", you need to be able to see why, and figure out how to make a better algorithm, or understand it enough so that when you run into something you've never seen before, like calculating core sizes of vortices in an efficient way, you'll know how to do it, regardless of the language used to do so.
Any computer scientist worth his salary can code in any language, and code well, even if he has never seen it before. The problem with coders this days, is that most are just that, coders. They know how to program, but have no clue what they are really doing mathematically and algorithmically.
The difference between theory and practice is very small in theory, but rather large in practice.
Spoken like someone who has never studied computer science theory. The vast majority of what I've studied in theory has paid off directly, in fact I can show you exactly how. For example: working with scientific computing, cache limitations, and matrix operations, I can show you real results that prove that when linear algebra is programmed in what seems to be the natural way, in fact your performance is often bad due to cache boundaries. If you take the theory into account and check your cache boundaries, performing your operations so as to maximize cache-hits, you end up with a much better performance.
In computer science, we have a (mostly) controlled environment, so most of the theory applies.
This is why you need to study computer science, rather than "programming". Programming is a skill that can be useful, but is, by its very nature, transient. Remember, at one point in time, auto mechanics were considered a very skilled white collar position.
Computer Science on the other hand, is a mathematical discipline which involves working out how to do things better, faster, and with less energy. It's about algorithm design, and ways in which to make a computer most efficiently process mathematical representations. It'll be useful far beyond the use of general "coding".
Coding itself is becoming more and more prevalent. I have many friends who aren't even scientists who know how to code, and were even required to for their humanities classes (from English, to History, to Foreign Language). This is a good thing, IMHO. Coding is a great general purpose skill.
Don't devote your life to the practice of programming, devote it to understanding why certain things work better, and how to further refine our techniques of computation. Work on understanding the hardwaresoftware interface, and you open up all kinds of new fields, from embedded engineering, to robotics.
Take the hint from the majority of good Universities who teach computer science, where you are simply expected to pick up a language in your spare time, because that aspect is secondary to the theory, and the easier of the two.
Notice I never said "Don't use inheritence", just that it was overrated. Programming OO forces people to use encapsulation, left to their own devices, people will just cobble together shit that barely functions. OO approaches force a structure, which to me is the beauty. Inheritance is nice when you can use it, and I have before on a few occasion. But most of the time, I can deal without it.
Written like someone who has never used a functional language before. And I know a lot of functional programmers that would argue that OOP is not the way.
Give Haskell [haskell.org] or Erlang [erlang.org] a try. If you've never done functional programming it'll take a while to get used to it but it's worth it. I wouldn't bother with O'Caml straight away because it's kinda convoluted and the default syntax sucks.
Personally I feel future better languages will combine OOP and functional programming. Some languages are already doing it but I haven't seen any really tasty combinations yet.
Actually I've done a lot of functional programming before, mostly LISP, and while it is great for some things it isn't for others. Imperitive programming works best for the majority of situations, especially considering its wide spread use.
So why do you assume OOP is the better way to go? I don't assume that OOP is the better way to go. I know it is from experience. I work with a lot of OPC (other people's code for those who don't know the term), and let me tell you, working with objects is about 10x easier for maintence, and for adding functionality. OOP isn't an excuse to code poorly though, I will take non-OOP that is well written over OOP that is poorly written, however as most of the code I deal with is poorly written, the OOP does make it easier.
OOP enables you to easily swap out modules, or replace existing code. As long as you know the inputs and outputs of an object, it can be seemlessly removed for a newer version. This makes maintence much easier, and so long as public/private/protected conventions are followed, it can allow for some really smooth upgrades.
IMHO inheritance is an overrated feature of OOP, I primarily like it because it forces people to work in a black box model, which makes the whole problem of updates and bug fixes 100x easier for the person who has to deal with your otherwise crappy code.
Publications help to define how well known the faculty is, and how active they are in their research. Degrees from MIT connect you in a way that few other places are. Unless your CS degree is from a top 10, or at the least a top 20 school, you'll never compete with those candidates. Does it matter if you go to MIT or Wisconsin? Not in the long run, but WPI isn't going to get you as far.
Top 10 Computer Science Programs:
Stanford, MIT, Berkeley, Carnegie Mellon, University of Illinois at Urbana Champaign, Cornell, Princeton, University of Texas at Austin, University of Washington, University of Wisconsin at Madison.
Top 20 Computer Science Programs:
Harvard, CalTech, Brown, UCLA, Yale, Maryland - College Park, NYU, Massachusetts at Amherst, Rice, University of Southern California, University of Michigan.
People know these programs are the best because of the work they produce, the research labs that they run, and the training they give to their students. These places give you jobs. Publications are a GREAT way to see how well the faculty are doing because publishing means your advisor will be well known and well connected, and that he can pass on those connections to you.
And I'm supposed to trust those "statistics" why?
Just like with people, you cannot just shove a test in their face and guage them based on the results. There are factors that cannot be easily determined.
The classic response of someone who "couldn't hack it". WPI is not a good institution, and as someone else has pointed out, there are good solid ways to point it out.
First off, publications, how often do the faculty publish work that gets accepted by a real journal? This is a good measure of how well the faculty can do their job, and affect their field.
At MIT, 77% of the CS faculty publish on a regular basis, averaging 3.8 publications per faculty member. In addition they have a Gini coefficient of 6.0, meaning that these works are only 6% concentrated, in otherwords, almost all of the faculty publish at or near the average.
At WPI, 58% of the CS faculty publish on a regular basis, averaging 1.1 publications per faculty member. Not only do most faculty not publish, and few articles are published from WPI at all, but their Gini coefficient is 18.3%, meaning that these publications are concentrated over twice as much than as MIT. Furthermore, these "star publishers" at WPI who make up the bulk of WPI's publications are publishing less frequently than the low people on the totem pole at MIT.
Face the facts mate, WPI is not a good institution.
No it's just prophetic for Free Software moving into areas once thought to be the territory of Microsoft. Such as PC's.
Perhaps you're a WPI grad like me? Personally, I'll admit that it sucks to see MIT get all of the attention for tech schools in the northeast and a certain amount of jealousy will always reside in me.
But then again, to ignore the fact that MIT is also obviously a really good school is just silly and petty.
Well one could always look to the rankings to see why MIT gets pushed above WPI.
From www.cra.org, MIT scores a 4.91/5.00, and WPI a 1.13/5.00
From the looks of it, WPI has a pretty crappy program.
Wrong, this is more akin to pulling a firearm on someone, sticking it to their head and saying "Bang, you're dead".
Guess what, that is illegal too, it's called brandishing a firearm, and possibly assault. You'd get tossed in prison, just like these bozos should.
Actually, Linux can't be severely damaged by a virus if you are smart and run as a user, and not as root. Why? Permissions.
My machines do nightly backups to disk, and weekly backups to CD. If I got a virus, sure it could wipe my user space if it REALLY wanted to, but assuming it did... no big deal, I wipe it clean, and do a restore, voila! I've lost less than 24 hours of work.
Or one of the following:
A) Perhaps english isn't my first language
B) Perhaps I was typing it rather fast, and did not bother to proof, seeing as this is slashdot, and not an important piece of work
C) Perhaps I simply don't care as the post was for amusement
D) Perhaps you are just an anal S.O.B, who needs to find something better to do with his or her life, such as pull your head out of your anus, and go on and do important things with your life.