A free market doesn't require people to weigh the costs and benefits of others. The whole wonder of a "true" free market is that is that, in such a market, everyone can act purely in her own self interest and collectively produce an efficient social welfare outcome. Of course "social welfare" is defined in terms of economic agents preferences here so, even in a free market, if people have preferences that don't jive with their actual welfare (basically what you're calling uneducated consumers) you can still get rather perverse outcomes.
From a theoretical standpoint this is true, and actually even worse. Arrow's theorem shows that there might not be any transitive social ranking of alternatives out there. It isn't just that the order can be gamed, there might not be any way to aggregate people's preferences into a single ordering fairly (See http://en.wikipedia.org/wiki/Arrow's_theorem for a definition of "fairly"). On the other hand, voting cycles seem to be relatively uncommon in the real world when enough voters are involved (http://www.cup.cam.ac.uk/us/catalogue/catalogue.a sp?isbn=0521536669), so maybe this isn't a hopeless cause after all, at least for the top n results returned (I'm pretty sure that things get uglier as the number of results->infinity even in real data).
BEAM bots are cheap, relatively easy to make, and provide a great introduction to both electronics and basic robotics. They aren't the most sophisticated bots in the world, but they are a great place to start. And, because they use analog electronics instead of microprocessors, they require no programming skills (if that matters to you).
In the professional sense, many engineering schools have faculty specializing in robotics. They tend to dwell in CS, EE, or MechE departments. The CS deparment I got my degree in had courses in robotics and plenty of opportunities for students to work with bots.
by Timothy Budd, may be what you're looking for. My uni taught intro cs in Java but in our OO development class, C++ was the language of choice. They threw this book our way to ease the transition. It didn't hurt, although Stroustrup's book, Meyers' Effective C++ and STL, and Lippman and Lajoie's C++ Primer are more useful in the long run. Also pick up a nice STL reference like Josuttis.
As someone studying political science with a strong interest in game theory, complexity theory, and computational modeling, I have only one thing to say: please don't make me watch--much less analyze--NASCAR!
While dual licensing is fine in most cases (free for individuals, not for corporations), double-standards almost always spell a potential for danger. For example, what happens if someone decides their source is open to members of the Inuit community but closed to all other ethinic groups? Then we might have a problem. Worse yet, could the precedent set on the resulting court case place all dual licensing schemes into jeopardy? If the ruling were too broad (multiple licensing standards are illegal vs "group"-biased (race, ethnicity, sex, sex pref, etc) licensing is illegal) competitors could use this issue to destroy dual licensing schemes all together.
Exactly. Guns aren't the issue although they may be part of the problem. I don't believe that guns cause violence and I'm not the slightest bit convinced that they prevent it either. In fact, we spend so much time arguing about guns that we completely ignore the underlying causes. But the issue of media is just another smokescreen. The real issues are poverty, poor education, racism, classism, and everything that goes along with these problems. Violence is a social problem, influenced by many factors.
There's been a lot of discussion about the Canadians in this thread. They have a *lot* of guns. They also have universal health care, higher average wages for factory workers, massive social welfare expenditure, and taxes like you wouldn't believe. Comparing gun violence in the US to Canada or Switzerland or any other nation is like comparing apples and oranges. They are too many external variables.
Getting back to the original post, to analyze guns and violence you have to look at specific communities' violence rates before and after substantial changes in gun policy. Of course, you'll have to ensure that there weren't important violence-modifying policy changes in other arenas going on at the same time. New York City is a good example. Gun laws in NYC have become increasingly strict over the past decade. Many anti-gun lobyists note that this correlates with a large drop in the homicide rate in the city. But gun control was only one aspect of a large anti-crime/social package implemented in New York. Did gun control reduce violence? Maybe. But it may not have been the most important change; it may not really have made any difference at all.
My overall point is that you are correct not to trust either side of the gun control issue. Eliminating guns isn't the solution to America's violence problems but letting everyone own a fully automatic AK doesn't make a lot of sense either. If you really want to deal with violence in America it probably isn't sport shooting that you need to give up, it's a higher portion of your paycheck to taxes.
New York Statehas some of the strictest gun-control laws in the Union. In NYC it is very difficult to purchase a firearm. Seems that the drop in violent crime in the city correlates roughly with increased gun-control, although there may very well be a third (fourth, fifth, etc) variable issue.
According to a recent article in the Washington Post, "In today's Hollywood, box office revenue makes up less than a quarter of a film's total take. The largest piece of a movie's money pie comes from sales and rentals of its DVDs." It goes on to note that while "Monster's Inc." grossed $255 million at the box office it is expected to generate $380 million+ from DVDs (DVD sales have already topped $140 million). Seems like hollywood will be running pretty strong even if box office sales do decline.
In general, it seems unlikely that an industry could destory itself economically when the products in competition both generate revenue for the same industry. Of course, it might have some effect on quality. The low overhead for DVD production relative to theater releases allow crappy films to generate profits. Something akin to what video did to the porn industry a la "Boogie Nights." Of course, this also means good things for indy films and pieces that appeal only a cross-section of society, which could yield some high quality pictures.
I realize that your average Linux system has a lot more GNU code in it than kernel code, but all the GNU compilers and utilities are pretty worthless without a *stable* kernel to run them on (and it seems like GNU just can't quite jump this hurdle themselves, at least not yet), so I don't think this "GNU is the primary contributer" thing holds water. The question is, can the FSF settle for being second in line?
Anyone else notice point 18 of Ross Anderson's FAQ? It notes that TCPA and Palladium can be used to circumvent the GPL. TCPA enhanced version of open source software (i.e. TCPA GNU/Linux) would have to be certified by the TCPA consortium. Such certification would cost a substantial amount of money, which means businesses could do it but individuals couldn't. This means that corporations would be able to steal open source code without breaking copyright law. The source would still be free, but that would mean nothing because any modified version of the source would require revalidation, making it somewhat worthless in a practical context. Microsoft could even open-source windows media player with absolutely no fear because only certified systems would be allowed to access the content necessary to make wmp useful.
This isn't only scary because it is a disincentive for open source development. Think of its use as a smokescreen. We all yell "uncompetative business practices" because Microsoft and Intel have a stranglehold on the computing market maintained by DRM and "trusted" computing, but they say, "what are you talking about, all of our software is open source." Also, note that it is going to be hard to brand this uncompetative in any case because TCPA is an open standard maintained by a consortium, which might more aptly be called a cartel (see Anderson's point 20).
The GPL was created with the assumption that open source meant open computing. How do we protect ourselves in an environment where protecting the source code may not be enough?
Okay, I can't take it anymore. No one on slashdot knows the difference between your and you're. In a post body, fine, I won't nitpick. But in a sig? Don't even get me started on the different forms of there. These are things even engineers should know.
I was a cs student at Wash U until May and I saw Lewis running around the halls quite a bit. The robot itself is just a general purpose machine for many robotics applications, the software could be moved to a more purpose-specific robot in an actual commerical wedding photographer. So it doesn't have to be a big red trashcan.
But the real breakthrough is the ability to identify a target among a group of people. Let's just say that this project was DOD funded.
I almost agree with the above , but not quite. The problem is that we are talking about Linux as if it were a single entity. Linux has DISTRIBUTIONS. If we make a distribution that looks just like Windows, it doesn't mean that all the other distributions will go away. Debian users will still have Debian and Redhat users will still have Redhat, and etc, etc. That's the wonder of an open source OS, it can be tailored to specific needs.
Companies like Mandrake and Ximian are working towards friendlier iterfaces. The one problem they have, as I see it, is that it is very difficult to roll a Linux distribution for inexperienced users when such users don't use Linux yet in the first place. They have to continue to support geeks, or they won't have any business. This leads us to a much more interesting quandary than "What's wrong with Linux?": how do we create a distro for non-geeks and actually get anybody to use it?
Here's a response I wrote to the author upon reading the article. Sorry for the length, but I sort of went off on a rant. People like to argue that honor codes in CS are silly because they don't reflect the real world. This is true, but it is only partially true. If you cheat all through college you won't have the skills to use other people's stuff in the real world. This is obvious simply from working on group projects in upper level courses and having to deal with a lot of pain and misery caused by the ineptitude of fellow group members.
I'm a senior at Washington U. majoring in both computer science and political science. I have also served as a student grader in the CS department. The computer science department here has an honor code almost identical to the one at Georgia Tech. Although I have found the code restrictive at times, I understand why such a hard line is necessary, especially in introductory CS courses.
It is very difficult to catch cheaters in CS. Even when a student has full access to another student's solution before beginning a programming assignment, that student may be able to obfuscate the code in a manner that makes detection very difficult. Such a student would have to be a decent programmer to begin with, but the fact that she is a decent programmer doesn't mean that she understands the concepts/algorithms presented by the particular assignment. You mentioned that the student in question in the Georgia Tech incident had 30 lines of suspicious code in his program; 30 lines is a lot of suspicious code (even in a large piece of software) and students here have been implicated for less.
More generally, I believe that strict honor codes are necessary in introductory courses, and, at least here at Wash U, upper level courses tend to encourage a lot more cooperation and group work than intro courses. The problem is that a student who had too much help in an intro course will make a poor group member in an advanced course. If she can't pull off the basics on her own, she won't learn much at the upper levels either. Almost every group assignment I've done has involved an all-nighter or two, typically because someone hasn't pulled her weight. In such cases, we don't have time to teach the offending group member what she did wrong. We just rewrite her portion and salvage what we can.
In my political science courses we are encouraged to work together and to gather as much material as possible on the topic at hand, whether from the library or online. But CS is different. You don't just need to understand the material presented or have a good grasp of the literature, you need to be able to develop and implement algorithms for novel problems. This is learned only from experience and only on your own. When a proof of a particular algorithm is presented in class, I tend to understand it on the first go; seeing the logic in someone else's idea isn't that hard. Proving your own algorithm correct is a whole other ballpark. You need to learn how to make that little breakthrough that makes everything come together. Even something as innocent as discussing the problem with a classmate can ruin the whole experience should that classmate provide the keystone to the solution by mentioning some aspect of the problem they thought was obvious. In addition, similar classes in computer science tend to have similar assignments with similar solutions. Every advanced algorithms class in the nation covers the same fundamental concepts. If a class at another university is a week ahead of you, the internet can be a treasure trove of homework solutions.
In addition, intro classes in CS are really designed to weed out a portion of the incoming class, much like they are in common pre-med courses. This is unfortunate but unavoidable. Computer science isn't for everyone, not because it is difficult, but because most people find it mind-numbingly boring. I know quite a few students who entered the CS curriculum thinking they were going to get the chance to play with computers only to realize what they'd gotten themselves into was really a specialized branch of applied mathematics. It is no coincidence that no small number of these students were caught cheating in CS101.
Finally, you mentioned using in-class tests to force students to really learn the material. I really don't feel that CS lends itself to pencil-and-paper exams. For one thing, you simply can't figure out if someone is able to build a production-level piece of software in an exam; one has to do this in front of a computer. On a more normative level, I've always absolutely hated CS exams. My take-home assignments, both programming exercises and logical proofs, take me a lot of time, but I learn the material and I do well on them. In tests, on the other hand, without the luxury of a blackboard and some time to ponder the problem, I often do a mediocre job, especially when the exams attempt to test the same sort of material normally reserved for projects or take-home assignments. Tests are fine for regurgitating facts or working out short problems but they are not predictive of a student's ability to perform at the workplace or in the laboratory.
I work with and help maintain a small mosix (now openMosix) cluster at a university. While mosix only really shines when you are running many long, computation-intensive jobs which are not I/O bound, there is no reason you can't mix mosix with other clustering implementations.
For example, we run a LAM MPI implementation on our cluster which allows us to carefully arrange which parts of each job go on each CPU and maximize efficiency. What's more, if we miscalculate, and one job on a heavily loaded machine tears off on a long cpu-burst, mosix will step in and migrate it over to a less loaded system for the duration of the burst.
None-the-less, it helps to inform your users not to start up 50 I/O bound jobs on one node and expect them to migrate. You end up having to give users access to multiple nodes to help balance load and this reduces security.
All in all, I've found mosix is very useful if your users know how to code for it. Standard software will typically not benefit too much. That said, if you have a couple of cd-rom drives in your machine, grip performs quite nicely: the ripping takes place wherever the drives are, but the mp3 encoding tends to migrate across the cluster beautifully:).
Most of the disussion in this thread has focused on whether or not this action violates the GPL. Let's say it doesn't. What incentive does this company have to do this? The GPL does not do a very good job of defining "source code." What it is pretty clear about is that you must maintain the license on any work derived from a work covered by the license. The license also expressly allows other parties to take your work and re-release it under the license, with or without modification. So if you release obfuscated source for a highly lucrative project under the GPL, I can take that source, add a few inane features (or not), release more GPL'd gobbledygook, and undercut your price for the binaries and support. And you've given me permission to do so by slapping the GPL on your unreadable source. Unfortunately, this argument also shows some inherent flaws in the open source business model, but if you're just into free software (as in speech) it all works out quite nicely.
I doubt OO will help with computational efficiency in the problems you mentioned. Where it could help is in the man-hours department. Creating reusable and extensible OO objects can reduce your coding time on any particular problem a great deal.
For example, I am a contributor to the Scythe Statistical Library which is essentially a big matrix object which supports many common operations. Scythe was initially designed by two professors who do a lot of monte carlo simulation. They still write programs that are essentially procedural to do each simulation, but the library greatly reduces the overall coding effort on each project. Other portions of the library (random number generators, numerical optimizers, etc) are as procedural and stand-alone as a standard c library. But matrices are so important that it makes sense to create an object for them. If needed we could create extending objects like triangular matrices, etc with little effort.
In essence, if you can think of some portion of your coding effort that is object-like (a matrix, a polygon, an engine part) and important enough to many different projects, creating an object for it makes sense. This is especially true if you can think of sub-objects which you might use in the future.
A free market doesn't require people to weigh the costs and benefits of others. The whole wonder of a "true" free market is that is that, in such a market, everyone can act purely in her own self interest and collectively produce an efficient social welfare outcome. Of course "social welfare" is defined in terms of economic agents preferences here so, even in a free market, if people have preferences that don't jive with their actual welfare (basically what you're calling uneducated consumers) you can still get rather perverse outcomes.
The real issue here is that the environment is a common pool resource.
From a theoretical standpoint this is true, and actually even worse. Arrow's theorem shows that there might not be any transitive social ranking of alternatives out there. It isn't just that the order can be gamed, there might not be any way to aggregate people's preferences into a single ordering fairly (See http://en.wikipedia.org/wiki/Arrow's_theorem for a definition of "fairly"). On the other hand, voting cycles seem to be relatively uncommon in the real world when enough voters are involved (http://www.cup.cam.ac.uk/us/catalogue/catalogue.a sp?isbn=0521536669), so maybe this isn't a hopeless cause after all, at least for the top n results returned (I'm pretty sure that things get uglier as the number of results->infinity even in real data).
BEAM bots are cheap, relatively easy to make, and provide a great introduction to both electronics and basic robotics. They aren't the most sophisticated bots in the world, but they are a great place to start. And, because they use analog electronics instead of microprocessors, they require no programming skills (if that matters to you).
http://www.solarbotics.net/
In the professional sense, many engineering schools have faculty specializing in robotics. They tend to dwell in CS, EE, or MechE departments. The CS deparment I got my degree in had courses in robotics and plenty of opportunities for students to work with bots.
Somehow I can't see your friendly representative voting to ban political solicitations...
a ll.htm. Seems like most states do the same. Here's florida http://www.800helpfla.com/nosales.html and Tennessee http://www2.state.tn.us/tra/nocall.htm, for example.
They are exempted from the federal rule http://www.ftc.gov/bcp/conline/pubs/tmarkg/donotc
perhaps
If the DRM bothers you, there's always SharpMusique http://www.nanocrew.net/software/sharpmusique/.
by Timothy Budd, may be what you're looking for. My uni taught intro cs in Java but in our OO development class, C++ was the language of choice. They threw this book our way to ease the transition. It didn't hurt, although Stroustrup's book, Meyers' Effective C++ and STL, and Lippman and Lajoie's C++ Primer are more useful in the long run. Also pick up a nice STL reference like Josuttis.
You know what this calls for...mini-putin magazine!
And I'm sure you check all of that super-extra-safe source by hand before you compile it ;)
TOO!!!!!!
As someone studying political science with a strong interest in game theory, complexity theory, and computational modeling, I have only one thing to say: please don't make me watch--much less analyze--NASCAR!
While dual licensing is fine in most cases (free for individuals, not for corporations), double-standards almost always spell a potential for danger. For example, what happens if someone decides their source is open to members of the Inuit community but closed to all other ethinic groups? Then we might have a problem. Worse yet, could the precedent set on the resulting court case place all dual licensing schemes into jeopardy? If the ruling were too broad (multiple licensing standards are illegal vs "group"-biased (race, ethnicity, sex, sex pref, etc) licensing is illegal) competitors could use this issue to destroy dual licensing schemes all together.
Exactly. Guns aren't the issue although they may be part of the problem. I don't believe that guns cause violence and I'm not the slightest bit convinced that they prevent it either. In fact, we spend so much time arguing about guns that we completely ignore the underlying causes. But the issue of media is just another smokescreen. The real issues are poverty, poor education, racism, classism, and everything that goes along with these problems. Violence is a social problem, influenced by many factors.
There's been a lot of discussion about the Canadians in this thread. They have a *lot* of guns. They also have universal health care, higher average wages for factory workers, massive social welfare expenditure, and taxes like you wouldn't believe. Comparing gun violence in the US to Canada or Switzerland or any other nation is like comparing apples and oranges. They are too many external variables.
Getting back to the original post, to analyze guns and violence you have to look at specific communities' violence rates before and after substantial changes in gun policy. Of course, you'll have to ensure that there weren't important violence-modifying policy changes in other arenas going on at the same time. New York City is a good example. Gun laws in NYC have become increasingly strict over the past decade. Many anti-gun lobyists note that this correlates with a large drop in the homicide rate in the city. But gun control was only one aspect of a large anti-crime/social package implemented in New York. Did gun control reduce violence? Maybe. But it may not have been the most important change; it may not really have made any difference at all.
My overall point is that you are correct not to trust either side of the gun control issue. Eliminating guns isn't the solution to America's violence problems but letting everyone own a fully automatic AK doesn't make a lot of sense either. If you really want to deal with violence in America it probably isn't sport shooting that you need to give up, it's a higher portion of your paycheck to taxes.
New York Statehas some of the strictest gun-control laws in the Union. In NYC it is very difficult to purchase a firearm. Seems that the drop in violent crime in the city correlates roughly with increased gun-control, although there may very well be a third (fourth, fifth, etc) variable issue.
According to a recent article in the Washington Post, "In today's Hollywood, box office revenue makes up less than a quarter of a film's total take. The largest piece of a movie's money pie comes from sales and rentals of its DVDs." It goes on to note that while "Monster's Inc." grossed $255 million at the box office it is expected to generate $380 million+ from DVDs (DVD sales have already topped $140 million). Seems like hollywood will be running pretty strong even if box office sales do decline.
In general, it seems unlikely that an industry could destory itself economically when the products in competition both generate revenue for the same industry. Of course, it might have some effect on quality. The low overhead for DVD production relative to theater releases allow crappy films to generate profits. Something akin to what video did to the porn industry a la "Boogie Nights." Of course, this also means good things for indy films and pieces that appeal only a cross-section of society, which could yield some high quality pictures.
Your first sentence isn't possessive...
I realize that your average Linux system has a lot more GNU code in it than kernel code, but all the GNU compilers and utilities are pretty worthless without a *stable* kernel to run them on (and it seems like GNU just can't quite jump this hurdle themselves, at least not yet), so I don't think this "GNU is the primary contributer" thing holds water. The question is, can the FSF settle for being second in line?
Anyone else notice point 18 of Ross Anderson's FAQ? It notes that TCPA and Palladium can be used to circumvent the GPL. TCPA enhanced version of open source software (i.e. TCPA GNU/Linux) would have to be certified by the TCPA consortium. Such certification would cost a substantial amount of money, which means businesses could do it but individuals couldn't. This means that corporations would be able to steal open source code without breaking copyright law. The source would still be free, but that would mean nothing because any modified version of the source would require revalidation, making it somewhat worthless in a practical context. Microsoft could even open-source windows media player with absolutely no fear because only certified systems would be allowed to access the content necessary to make wmp useful.
This isn't only scary because it is a disincentive for open source development. Think of its use as a smokescreen. We all yell "uncompetative business practices" because Microsoft and Intel have a stranglehold on the computing market maintained by DRM and "trusted" computing, but they say, "what are you talking about, all of our software is open source." Also, note that it is going to be hard to brand this uncompetative in any case because TCPA is an open standard maintained by a consortium, which might more aptly be called a cartel (see Anderson's point 20).
The GPL was created with the assumption that open source meant open computing. How do we protect ourselves in an environment where protecting the source code may not be enough?
Okay, I can't take it anymore. No one on slashdot knows the difference between your and you're. In a post body, fine, I won't nitpick. But in a sig? Don't even get me started on the different forms of there. These are things even engineers should know.
I was a cs student at Wash U until May and I saw Lewis running around the halls quite a bit. The robot itself is just a general purpose machine for many robotics applications, the software could be moved to a more purpose-specific robot in an actual commerical wedding photographer. So it doesn't have to be a big red trashcan.
But the real breakthrough is the ability to identify a target among a group of people. Let's just say that this project was DOD funded.
I almost agree with the above , but not quite. The problem is that we are talking about Linux as if it were a single entity. Linux has DISTRIBUTIONS. If we make a distribution that looks just like Windows, it doesn't mean that all the other distributions will go away. Debian users will still have Debian and Redhat users will still have Redhat, and etc, etc. That's the wonder of an open source OS, it can be tailored to specific needs.
Companies like Mandrake and Ximian are working towards friendlier iterfaces. The one problem they have, as I see it, is that it is very difficult to roll a Linux distribution for inexperienced users when such users don't use Linux yet in the first place. They have to continue to support geeks, or they won't have any business. This leads us to a much more interesting quandary than "What's wrong with Linux?": how do we create a distro for non-geeks and actually get anybody to use it?
Here's a response I wrote to the author upon reading the article. Sorry for the length, but I sort of went off on a rant. People like to argue that honor codes in CS are silly because they don't reflect the real world. This is true, but it is only partially true. If you cheat all through college you won't have the skills to use other people's stuff in the real world. This is obvious simply from working on group projects in upper level courses and having to deal with a lot of pain and misery caused by the ineptitude of fellow group members.
I'm a senior at Washington U. majoring in both computer science and
political science. I have also served as a student grader in the CS
department. The computer science department here has an honor code
almost identical to the one at Georgia Tech. Although I have found the
code restrictive at times, I understand why such a hard line is
necessary, especially in introductory CS courses.
It is very difficult to catch cheaters in CS. Even when a student has
full access to another student's solution before beginning a programming
assignment, that student may be able to obfuscate the code in a manner
that makes detection very difficult. Such a student would have to be a
decent programmer to begin with, but the fact that she is a decent
programmer doesn't mean that she understands the concepts/algorithms
presented by the particular assignment. You mentioned that the student
in question in the Georgia Tech incident had 30 lines of suspicious code
in his program; 30 lines is a lot of suspicious code (even in a large
piece of software) and students here have been implicated for less.
More generally, I believe that strict honor codes are necessary in
introductory courses, and, at least here at Wash U, upper level courses
tend to encourage a lot more cooperation and group work than intro
courses. The problem is that a student who had too much help in an
intro course will make a poor group member in an advanced course. If
she can't pull off the basics on her own, she won't learn much at the
upper levels either. Almost every group assignment I've done has
involved an all-nighter or two, typically because someone hasn't pulled
her weight. In such cases, we don't have time to teach the offending
group member what she did wrong. We just rewrite her portion and
salvage what we can.
In my political science courses we are encouraged to work together and
to gather as much material as possible on the topic at hand, whether
from the library or online. But CS is different. You don't just need
to understand the material presented or have a good grasp of the
literature, you need to be able to develop and implement algorithms for
novel problems. This is learned only from experience and only on your
own. When a proof of a particular algorithm is presented in class, I
tend to understand it on the first go; seeing the logic in someone
else's idea isn't that hard. Proving your own algorithm correct is a
whole other ballpark. You need to learn how to make that little
breakthrough that makes everything come together. Even something as
innocent as discussing the problem with a classmate can ruin the whole
experience should that classmate provide the keystone to the solution by
mentioning some aspect of the problem they thought was obvious. In
addition, similar classes in computer science tend to have similar
assignments with similar solutions. Every advanced algorithms class in
the nation covers the same fundamental concepts. If a class at another
university is a week ahead of you, the internet can be a treasure trove
of homework solutions.
In addition, intro classes in CS are really designed to weed out a
portion of the incoming class, much like they are in common pre-med
courses. This is unfortunate but unavoidable. Computer science isn't
for everyone, not because it is difficult, but because most people find
it mind-numbingly boring. I know quite a few students who entered the
CS curriculum thinking they were going to get the chance to play with
computers only to realize what they'd gotten themselves into was really
a specialized branch of applied mathematics. It is no coincidence that
no small number of these students were caught cheating in CS101.
Finally, you mentioned using in-class tests to force students to really
learn the material. I really don't feel that CS lends itself to
pencil-and-paper exams. For one thing, you simply can't figure out if
someone is able to build a production-level piece of software in an
exam; one has to do this in front of a computer. On a more normative
level, I've always absolutely hated CS exams. My take-home assignments,
both programming exercises and logical proofs, take me a lot of time,
but I learn the material and I do well on them. In tests, on the other
hand, without the luxury of a blackboard and some time to ponder the
problem, I often do a mediocre job, especially when the exams attempt to
test the same sort of material normally reserved for projects or
take-home assignments. Tests are fine for regurgitating facts or
working out short problems but they are not predictive of a student's
ability to perform at the workplace or in the laboratory.
I work with and help maintain a small mosix (now openMosix) cluster at a university. While mosix only really shines when you are running many long, computation-intensive jobs which are not I/O bound, there is no reason you can't mix mosix with other clustering implementations.
:).
For example, we run a LAM MPI implementation on our cluster which allows us to carefully arrange which parts of each job go on each CPU and maximize efficiency. What's more, if we miscalculate, and one job on a heavily loaded machine tears off on a long cpu-burst, mosix will step in and migrate it over to a less loaded system for the duration of the burst.
None-the-less, it helps to inform your users not to start up 50 I/O bound jobs on one node and expect them to migrate. You end up having to give users access to multiple nodes to help balance load and this reduces security.
All in all, I've found mosix is very useful if your users know how to code for it. Standard software will typically not benefit too much. That said, if you have a couple of cd-rom drives in your machine, grip performs quite nicely: the ripping takes place wherever the drives are, but the mp3 encoding tends to migrate across the cluster beautifully
Most of the disussion in this thread has focused on whether or not this action violates the GPL. Let's say it doesn't. What incentive does this company have to do this? The GPL does not do a very good job of defining "source code." What it is pretty clear about is that you must maintain the license on any work derived from a work covered by the license. The license also expressly allows other parties to take your work and re-release it under the license, with or without modification. So if you release obfuscated source for a highly lucrative project under the GPL, I can take that source, add a few inane features (or not), release more GPL'd gobbledygook, and undercut your price for the binaries and support. And you've given me permission to do so by slapping the GPL on your unreadable source. Unfortunately, this argument also shows some inherent flaws in the open source business model, but if you're just into free software (as in speech) it all works out quite nicely.
I doubt OO will help with computational efficiency in the problems you mentioned. Where it could help is in the man-hours department. Creating reusable and extensible OO objects can reduce your coding time on any particular problem a great deal.
For example, I am a contributor to the Scythe Statistical Library which is essentially a big matrix object which supports many common operations. Scythe was initially designed by two professors who do a lot of monte carlo simulation. They still write programs that are essentially procedural to do each simulation, but the library greatly reduces the overall coding effort on each project. Other portions of the library (random number generators, numerical optimizers, etc) are as procedural and stand-alone as a standard c library. But matrices are so important that it makes sense to create an object for them. If needed we could create extending objects like triangular matrices, etc with little effort.
In essence, if you can think of some portion of your coding effort that is object-like (a matrix, a polygon, an engine part) and important enough to many different projects, creating an object for it makes sense. This is especially true if you can think of sub-objects which you might use in the future.