The best way to ensure fairness in grading is to grade all the answers at the same time. For this reason, other regrading requests most likely will not approved. However, if you have any questions regarding the exam or the grading, feel free to contact Maki Sugimoto and/or the instructor.
General notes:
(Question 1)
Points given for (a) and (b) were swapped, that is, (a) was assigned
4 points and (b) 3 points in order to give more partial credit.
(a) (4 points)
base case (1)
correct recursive call on tail (1)
correct function call on head (2)
- partial credit (1) :attempt to distinguish between
cases where a list and an int were given as function parameter
(b) (3 points)
base case and correct recursive call on tail (1)
correct recursive call implementation on head (2)
- partial credit (1) given in similar fashion as
(a)
(c) (3 points)
mention of "function" (2)
explanation (mentioning arrays and functions both create mappings)
(1)
Alternative answers:
"(nested) tuples","binary tree","recursive data type" (1)
explanation (1-2), full credit given only to complete description of
the answer's features different from nested lists
(d) (4 points)
precise description of time inefficiency due to list traversals (3)
Alternative answers explaining memory inefficiency
due to storing pointers (1-2)
correct consistent argument regarding alternative method answered in
(c) (1)
(e) (3 points)
identification of features that make functional PLs not well-designed
for numerical computing (1)
consistent, correct explanation why (2)
explanation unrelated to (d) (-1)
(f) (3 points)
statement regarding higher-order functions in connection with numerical
computing (2)
- partial credit (1): general statement of higher-order
functions/functional PLs unrelated to numerical computing
explanation of features related to first project (1)
misspelling of "imperative" (-0, so common that I was tempted to give
extra credits to those who spelled it correctly)
(Question 2)
Many answers were based on an imprecise or incorrect understanding
of the excerpted text. In this context, the word "ignore" should be interpreted
as "hide".
(a)-(c) (4 points each)
When you are asked "Are these attributes always irrelevant?", you should
answer the question explicitly using the terms "irrelevant"/"relevant".
Don't rephrase the question unnecessarily (i.e. "important" etc.).
identification of attributes ignored (1)
explicit, consistent argument regarding relevance of the attribute
(1)
- partial credit (1) : identification of only attributes
that are not ignored with explicit consistent argument regarding
relevance
(a)(b)
correct sketch of data structure (2)
most syntactic errors (-0) (dropping keywords "struct"/"typedef"
or dropping tags in union in MLish sketch)
- partial credit (1) : sketch of linked lists instead
of binary trees
(c)
correct sketch of ADT (2)
partial credit for the following items, maximum
is 2 points
partial sketch of signature of ADT (1)
partial sketch of constraints of ADT (1)
partial sketch of concrete type and implementation of signature (1)
(d) (subtotal 4 points)
(i) (2 points) and (ii) (2 points)
identification of features that distinguish the two compared items
(1)
correct explanation why one is more abstract than the other (1)
or
precise identification of features that makes one more abstract than
the other (2)
- incorrect/inaccurate/imprecise explanation
gets maximum of 1 point
(e) (4 points)
definition of "good design practice" (1)
precise explanation of how abstraction helps a program to satisfy the
definition of "good design practice"
definition of "modularity" (1)
precise explanation of how abstraction helps a program to satisfy the
definition of "modularity"
- partial credit (1-3): answers failing to distinguish
"modularity" and "good design practice"
2-3 points given to answers that
manage to identify features distinctive to one but not the other.