This sounds very much like extortion, and I'm curious how any school with a purported honor code or sense of academic standards could allow it.
Even if the student didn't have proof of threats, the situation itself should be enough to get the student a new advisor or oversight with the existing one.
I mean "should" in an ideal sense. I think this kind of shit is common.
If the professor in question brings the university a lot of grant money, especially if they're tenured, a lot gets ignored.
As for the honor code I cynically suspect it's more about having an item go use against someone when the university chooses, rather than a true standard that all are held to at all times. If nothing else, it's just tough for a large institution to handle all of its problems at once.
Back when I worked as a tutor, we knew a lot about the professors since most of us were also TAs at some point or worked as TAs concurrently. Some were consistent in busting people for cheating, others tried to avoid it at all costs (because they based their self-worth on their Rate My Professor page), but a few were just capricious and arbitrary. On their good side? "Eh, everyone uses Stack Overflow [or forgets to do anything to hide their plagiarism, not even bothering to edit the author name Javadoc comment on the code they copied] every now and then." On their bad side? "Copying others' work is unacceptable, you can either take an F in the course or plead your case to Academic Integrity."
Of course, the ones who showed favoritism were also the ones who practically printed grant money, so nothing ever happened while I was there (and I doubt anything ever will).
With code, as long as it works, so what. Plus learning a language requires copying to learn how to do it correctly. Would you want to be required to be completely original learning French? It makes no sense to burn people for doing what it took industry decades to figure out.
Working as a lab instructor a lifetime ago, I graded two students' C assignments that both worked (mostly) but clearly without understanding what was going on.
It took me a while to figure out how they worked; as it turned out, they declared the same variables at the top of each function in the same order.
They didn't have globals, they weren't passing values around: the stack was being allocated across the same memory for each function, so the variables "just worked."
I had the same experience when I was a TA a long time ago. Reviewing the code to a homework set I noticed that two students mixed up the naming of two variables (I think min/max were switched).
I ran a whitespace sensitive diff and noticed the only difference between the two files was the author name in the header.
The professor sent a sternly worded letter to the class about not cheating, and nothing else came from it AFAIK.
In my experience, the people who get caught cheating (not necessarily the ones who get punished for it, of course) are usually the ones who don't understand the code to begin with or how they might go about creating their own solution. These people also oftentimes came to us and just openly admitted they copied code they found online and wanted us to check over it before they submitted it.
I never said anything about the accuracy of their code, but I was willing to explain how it worked so they could decide if they thought it was accurate. Most did not take me up on that offer, instead opting instead to bug people in their class until they found someone a) smart enough to help on assignments and b) dumb enough to help them. They didn't care about learning how their code worked or why, they just wanted an easy A.
The few who did take me up on my offer tended to be people who didn't understand the assignment to begin with and, after explaining the problem and how their solution worked, went out and did their own work. I always enjoyed those ones, they tended to want to do things legit but either were too nervous to go the professors/TAs or couldn't make office hours and couldn't get timely answers over email.
The people who just didn't care I was more than happy to talk about at at our weekly meetings. If their TAs weren't also tutors, our supervisor would keep them updated on who came in asking for a thumbs up on copied code.
Because the goal of the assignment isn't to write code, it's to learn what code to write. If you're copy and pasting from someone else you're potentially skipping out on a lot of learning. Granted, good luck passing the exam with copy and paste, but I've seen someone do basically that for 5 years, don't know if they ever graduated but they were grinding it out.
I didn't go to grad school, but because changing advisors is generally a reset, there's no good outcome for the student in this situation.
Status quo: take job forced by advisor; student doesn't get dream job
Drop out and take dream job: student doesn't get degree they were pursuing
Advisor is fired over this: student must find an advisor that will resume advising on current thesis or more likely find a new advisor and start on a new thesis... But if it becomes known that this student was related to the firing, student may have a hard time finding a new advisor.
Advisor is disciplined over this: advisor may retaliate by no longer cooperating with student's progress, and then you're back to finding a new advisor.
Institution backs advisor and disciplines student for 'causing trouble': maybe find a new institution.
So... If there's no good outcomes for the student, it's tricky.
As a current graduate student, the sunk cost can sometimes be too high just to up and move advisors. In small places, you will simply not have someone else whose interest align with yours, and even at a place like MIT, the advisors have their own specialty, and especially after your second year at Ph.D. moving or changing advisor can be quite difficult and basically "reset" all your progress. So, a lot of time, the choice becomes moving and voiding all your work you've done so far, or gritting your teeth and carrying on for "just a couple more years until I graduate."
Source: was an undergraduate and Masters student at MIT, then left to do a Ph.D somewhere else with a much better/less toxic advisor.
>> the sunk cost can sometimes be too high just to up and move advisors.
This isn't really the definition of sunk cost, which is the appearance of having tangible impact on decisions while being independent of the future choice. If it has bearing (as in this case) it's material to the decision and not sunk.
You can ask applicants for grades, but if you get heads up on good candidates, you ask them to work for you before they go looking. So if someone else is getting heads up, you're only getting candidates that didn't pass their filters.
An advisor is your gateway into your field of interest. To graduate, a student must publish a notable work in the field. If you lose your advisor, then you will likely need to start over with someone else - delaying your graduation by 2-6 years depending on the field.
Even if the university offered a new advisor, it would be unlikely to help the student.
Professors are "supposed" to help avoid the retirement effect by not accepting new grad students, in some cases where this is not viable they can continue with an emeritus title and provide the entry point that their students need. Similarly, a professor leaving for another institution will likely make right by their students.
In the case that none of the above is possible the institution will probably try to do right by the student, but it's a bit of a crap shoot. Even if the institution confers the PhD, the student is still beholden to the publish or perish culture of academia - and their (former) advisor would have helped navigate them to a thesis which their former advisors peers would accept. If the latter doesn't occur in a big way; then the student won't have a good career ahead.
I've known 1-2 people who for various reasons decided that the grad student life was the optimal career station for themselves as it provided the benefits of an academic career without the overhead of grant applications etc.
Generally, for retirement, faculty try to "draw down" their labs, and there's very often a "I'm going to see X student through to their defense, and then I'm done" as the end of an academic career.
For unexpected deaths, generally there's a scramble to help cushion the students, get them in with new advisors, etc. But often, their former advisor's grants, data sets, etc. are still available. Unless one is really early in the process, the goal is to help the student finish their current work in a timely fashion.
Even if the student didn't have proof of threats, the situation itself should be enough to get the student a new advisor or oversight with the existing one.
I mean "should" in an ideal sense. I think this kind of shit is common.