I don't think you can calculate the average across fields using the average function, with or without making it a Totals query as per first post.
WHERE m1 Or m2 is Not NULL You can group things like this in your mind and know what you want, but if you really think about it, what you wrote isn't what you want when it comes to computer logic. The pc will ask "Where m1 is greater than or is less than or equals, etc what? What's going on with m1? I get the Or part - they're saying Or m2 is Not Null. But I don't get the m1 part." For your case, it isn't OR anyway - it's AND. OR means that one can be Null as long as the other isn't. What I didn't do is deal with the possibility that m1 or m2 could be Null in the expression, since the criteria should take care of nulls.
Code:
SELECT tblGrades.Course, tblGrades.[m1], tblGrades.[m2], (([m1]+[m2])/2) AS Expr1 FROM tblGrades
WHERE (((tblGrades.[m1]) Is Not Null) AND ((tblGrades.[m2]) Is Not Null) AND ((([m1]+[m2])/2)>=83) AND ((tblGrades.f) Is Null))
ORDER BY tblGrades.Course;
This also doesn't provide a count - I'm not sure what you intended by that statement in the beginning.
EDIT: I treated m fields as numbers - just remembered there are quotes around 83 in previous posts for some reason.
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.