7 -20 Egregious violation of style versus design document example
8 -10 Numerous excessively long lines (> 79 characters)
9 -10 Numerous capitalization, punctuation, spelling, or grammar errors
12 -10 Failure to check return value of malloc()
13 -10 Use of ASSERT to check something that can actually fail, e.g. malloc()
16 -10 Inconsistent or bad coding style: no indentation, cramming
17 many statements into one line, other issues at TA's discretion
18 -10 Numerous very long source code lines (> 100 characters)
19 -10 Commented-out or #if'd out code makes real code hard to read
20 -10 Many missing comments on structure, structure members,
21 global or static variables, or function definitions
22 -10 Function(s) should be decomposed for clarity [indicate function]
23 -10 Cut-and-pasted code should be made into function [indicate where]
24 -10 Uninformative or deceptive identifiers
26 Subtotal: /10 (not capped)
28 PROBLEM 1: ARGUMENT PASSING
31 -30 Grossly inaccurate: documentation has no resemblance to code
32 -15 Important inaccuracies: documentation and code differ significantly
34 -5 Minor inaccuracies: documentation and code differ [indicate how]
35 -5 A1: Missing entirely/missing comments or purpose/too long
36 -10 A2: Missing/non-responsive/too long/too short
37 -10 A3: Missing/non-responsive/too long/too short
38 -10 A3: Claims that strtok_r() does not modify the string it parses
39 -10 A3: Claims that strtok() uses a static buffer for parsing
40 -10 A4: Missing/non-responsive/too long/too short
41 -5 A4: Claims time or space advantage for user-space parsing
42 -5 A4: Claims that the shell implements relative paths
43 -5 A4: Claims that user space parsing reduces context switches
44 -5 A4: Claims that the shell enforces security policy
48 -10 Uses global variables, locks, etc.
49 -15 Doesn't check for stack overflow
50 -10 Assumes any command line under N bytes long will fit in a page
51 [change N to the value assumed, where N >= 1,366]
52 -10 Assumes that the command line is capped at 128 bytes
53 -1 Assumes that individual strings must be word-aligned for performance
54 -10 Argument passing code is difficult to read or poorly abstracted
56 Subtotal: /30 (capped at 0)
58 PROBLEM 2: SYSTEM CALLS
61 -60 Grossly inaccurate: documentation has no resemblance to code
62 -30 Important inaccuracies: documentation and code differ significantly
64 -10 Minor inaccuracies: documentation and code differ [indicate how]
65 -10 B1: Missing entirely/missing comments or purpose/too long
66 -1 B1: Omitted global file system synchronization
67 -3 B1: Omitted data for tracking file descriptors
68 -3 B1: Omitted data for "wait" system call
69 -3 B1: Omitted data for "exec" to wait for process loading to complete
70 -6 B2: Missing/non-responsive/too long/too short
71 -2 B2: Claims that Pintos has stderr file descriptor
72 -6 B3: Missing/non-responsive/too long/too short
73 -3 B3: Claims that struct intr_frame's eax member is on user stack
74 -6 B4: Missing/non-responsive/too long/too short
75 -6 B4: Inspects page table for every byte accessed
76 -6 B4: Inspects page table for each N-byte block (N <= 1,024)
77 -6 B4: Can miss inspection for some pages in a block
78 -6 B4: Claims that each byte in 4 kB can be on separate page
79 -6 B4: Wrong answer for "ideal" case
80 -12 B5+B8: Missing/non-responsive/too long/too short
81 -3 B5+B8: "wait" or "exit" disables interrupts
82 -3 B5+B8: "wait" or "exit" calls thread_block() (use semaphores instead)
83 -3 B5+B8: "wait" or "exit" uses global lock or semaphore
84 -3 B5+B8: "wait" always returns -1 if child has already exited
85 -3 B5+B8: "wait" or "exit" searches a global list of all processes
86 -6 B5+B8: "wait" or "exit" has race condition [which]
87 -6 B6: Missing/non-responsive/too long/too short
88 -6 B7: Missing/non-responsive/too long/too short
89 -3 B7: Calls thread_block() directly (use semaphores instead)
90 -3 B7: Success flag in child struct thread needs too much synchronization
91 -6 B9: Missing/non-responsive/too long/too short
92 -6 B10: Missing/non-responsive/too long/too short
93 -6 B11: Missing/non-responsive/too long/too short
94 -6 B11: Claims that Pintos supports multi-threaded processes
98 -5 Global counter for file descriptors lacks synchronization
99 -10 Global table of file descriptors lacks synchronization
100 -5 Global table allows multiple processes to access same file descriptor
101 -5 Added big array (>= 512 bytes) to struct thread without justifying
102 -10 Added big array (>= 1024 bytes) to struct thread
103 -5 Superfluous locking on per-thread data structure [which]
104 -10 System call handler is poorly abstracted or unreadable
105 -5 Failed to update comment on process_wait() function after implementing
106 -5 "open" system call fails to release all resources in error cases
108 Subtotal: /60 (capped at 0)