Yes, in my school they also prohibit teamwork on programming assignments. Many and perhaps most of the students are not particularly good at coding, and do not enjoy it. They got into CS because they were good at math as kids. I am apparently among the few in my classes who actually turn in working programs. Perhaps 10-20% do turn in programs that basically work, and a good number of the rest turn in programs that work only in a certain narrow range, and are what you might call extremely fragile and non-robust.
For the final program in my OS class (UNIX system calls programming assignment), I was apparently the only student among 20 or so to turn in a working program. For the final assignment in advanced data structures only 3 of the 20 or so students bothered to turn in a program at all.
I have some evidence that a few students may follow behind me and some few other codeheads in the CS labs and look for copies of our programs on the hard drive.
As for your comment about the divide between coding and Pure Computer Science, I think you are just regurgitating the standard company line for CS, that coding itself involves less refined skills or thinking in some way, as compared to algorithm design.
It's all very self-serving of course. The fact is that math analysis of programs is necessary but in no way sufficient to good software. And that ivory stuff is really a small part of the work done in the software field. Most of the work is just grind-it-out logic-work on program logic, etc. It requires basic smarts and more importantly a certain patient and curious temperament, and yes, some feel for algoritmic math. But I feel that designing and coding a program is very much like writing an essay--same skills are involved: logical and organizational....
But above that a career in the software field seems to require a voracious need for knowledge and topnotch reading skills and personal initiative & drive. The acquisition of knowledge relating to the operation of large software systems, e.g., Java, Unix, etc., and software design concepts, e.g., OOP, patterns, etc. This is really important stuff, and not all that big in CS departments, generally. This all goes to knowledge acquisition through reading skills, and that is not really what most CS curricula is about, is it? They are about mathematical analysis.
Why does it matter that code is copied? The code is the end product of all that work. It also shows that the student possesses the needed temperament, etc. The employer sees the CS degree as proof that the grad meets these requirements.
As for your comments on how much working with other students helped your understanding, I completely agree! I have had the same experiences. What I would like to see is a class discussion AFTER the programs are turned in. But that would not leave enough time to get through the material. I sometimes get together with other students to look at each other's programs after the turn-in deadline.
In fact, I sometimes have a driving NEED to talk about my programs with others who have worked on the same problem.
Now let's see....how can I work in a troll about media-establishment conspiracies.....?