One way is 2 queries. First a totals query that groups on student and returns the max score. The second query joins the table with the first query on both fields, and returns the other data from the table.
Oh rats! of course I forgot to specify the most important part of the question: can it be done with just ONE query. It seems there should be a trick, as long as I am only specifying 1 field to be aggregated (MAX of score) it logically follows there is a corresponding set of field values (in the same record) for each returned MAX.
Thanks pbaldy and r937! I think you are both saying the same thing that there's no way around a nested query (it will require 2 "select" statements) so I will go with the nested query. Thanks again for taking time to respond!