Since you didn’t really give more details, we can only give you broad pointers.
First Check out: Stable Marriage Problem.
And also search the web for Bipartite matching (or in cases of weighted edges: Assignment Problem, which can be solved using: Hungaring Algorithm).
Note that a solution to the stable marriage problem might also solve your problem, albeit with a fake project->student preference.
I expect one of the above (stable marriage/bipartite matching/assignment) will work for you, but can’t really tell without more information.
0
solved Student-Project allocation algorithms? [closed]