There are many ways to approach your problem, and which one you should do is probably more a matter of "try them all and pick the best".
You could phrase this as a regression problem, where you predict the score of an individual student's assignment. Then you simply sore the predicted scores and look at the top. This gets more interesting if you also produce confidence intervals, you could then sort on mean prediction of the minimum of the interval.
You could phrase this as a classification problem, label old students and a assignments in the top as "top" and everyone else as "lesser". Then apply classifier on new students. This could get a little awkward if you have too many or few people classified as "top".
You could phrase this as a ranking problem. In this you directly learn to rank the students from best to worst, though you don't necessarily get a score with the ranking like you do if you treat it as a regression problem.
You could also phrase this as an outlier detection problem, as the very top performers are outliers relative to the rest of the students.
Without knowing the details of your data and what further things may need to be done, no one can tell you which is likely to be the best- try them and find out for yourself.