How should project based assessments be implemented in order to prevent cheating?
I can, perhaps, give you a few ideas, but note that I've never had to deal with this scale. Many of my courses (CS) were project based.
First, make it very explicit what you expect of them. Have some sort of honor code that they agree to by taking your course. Don't assume that the already know what is right and what is wrong. University wide honor codes are effective in some places. And also make it clear that the purpose of the exercises is less to &quot;get answers&quot; (which you already have) than to &quot;get learning&quot;. Shortcuts are a form of self-defeating behavior.
Next, is that if you want to prevent cheating you won't be able to do it. You can, at best, reduce it, unless you are willing to run the course in a way in which cheating can't happen because it is irrelevant. I don't think that a first course in math analysis is especially amenable to this, but the idea is that students are allowed to use any source that they cite, just as if they were actual researchers. But to make learning, not just copying, happen, the questions you ask of them need to be a bit deeper and require some reflection beyond what they are likely to find in print or online. It is difficult, of course, to create such exercises.
The next idea has two parts. The first is to make all of the projects team (or at least pair) based so that the scope is reduced a bit. For 500 students you have 250 pairs or 100 teams. My preference with pairing would be to have a lot of small exercises where the pairs switch for each exercise. This may be easier now, in the zoom era, that it was when people mostly got together physically.
The second part of that is to use some form of peer assessment with the pairs/teams. Search this site for that or for peer evaluation to get a better idea of how to do that. Note that it isn't peer grading, but each member of a team can give you some idea of who the best players are and what those people contributed as well as listing their own primary contribution. Over many projects you will get an idea of who is doing a good job and you will sometimes be surprised.
One alternative you might be able to do is to partially &quot;flip the classroom&quot; so that the &quot;tutorials&quot; become work sessions and the projects are then done under the eye of someone with some skills. If the instructor can also do this twice a week then you have seven smaller groups, to which the &quot;graders&quot; might also contribute. Having students work in pairs in such a situation reduces the number of questions that must be answered by faculty and TAs, since partners will have the answers to some questions. If they work alone, then there will probably be too many questions and people will get stalled waiting for help. It might, however, be necessary to make the &quot;tutorial sessions&quot; longer and to move some of the content to videos and other online resources. And having students to their graded work under the eye of staff reduces the opportunity for cheating (but doesn't eliminate it in large groups).
One of the big problems with huge classes is that you have such a variety of ability, but also a huge variety of student goals and expectations. One way to make it possible for students to define and meet their own goals is to use cumulative grading rather than percentage grading. See this answer to a different question for a description. Not every student needs to reach for top marks. And this grading scheme lets every student know exactly where they stand in the course and what needs to be done to meet their goals. With a lot of smaller projects, every team member gets the same grade for a given project. In bigger projects you may need to make occasional exceptions.

Notes: I will probably add to this over the next day or so.

Spreading the grading out over many projects also means that no single project is &quot;high stakes&quot;. This means that there is less incentive to cheat on a given project and to &quot;cheat your way to success&quot; means you need to do it repeatedly, increasing the chance of being caught.

Requiring writing projects rather than computational ones makes some kinds of auto checking for cheating a bit more reliable, reducing false positives (at least). For a mathematician, learning how to write is a valuable skill of its own. But this is admittedly difficult for an analysis course.

Permitting students to resubmit work is very useful for learning, though the scale is probably out of whack here. In fact, I think the scale and the ratio of students to staff in this scenario makes any sort of learning difficult. It is very difficult to give feedback to individuals to permit re-work to have a valid effect.