1) Void means that the function doesn't return a value. The sort() function is sorting the array passed to it. Because it is an *array* that is being passed, all changes to the array do show up in the calling function. 2) a) It sums the first "num" elements of "list[]" other than the N lowest scores, where N is specified by "drop". b) It uses sort to figure out which are the lowest scores (and thus drop from the sum) c) 72. (5 is ignored because only the first 4 elements are summed. The 1 is ignored because it gets dropped) 3) ((30+25)/60)*4=(55/60)*4=3.6667 4) ((90+20+133.33)/333.33)*50=36.5 5) (160/200)*5=4.0 (3.75 if the sort isn't fixed) 6) a) Which project is which is determined by order. Sorting would mess that up b) sort(), sumList(), contrib() all would cause the list to be sorted. 7) There are two big ones. First of all, the function "examValue()" exists but is never used. Secondly, the comments really could use a LOT of help. There are lots of minor issues. 8) a) assert() causes the program to exit if the statement in the assert is false. b) assert(WEIGHT_EXAM+WEIGHT_HW+WEIGHT_INLAB+WEIGHT_PROJECT+WEIGHT+PRACTICAL+ WEIGHT_QUIZ==100) The best place to put this is probably at the start of the main after all the variables have been declared. 9) Since sumList() sorts the data, the best score must be in courseGrades.exam[2]. So best= courseGrades.exam[2]; would be a replacement for the line that currently computes "best". 10) It is checking to see if the file which was opened as "scoreFile" failed to open.