Improve run-tests.
[pintos-anon] / grading / threads / review.txt
1 TESTCASES [[/10]]
2 -----------------
3   -2 Problem 1-1: no test cases/no test output/no description in TESTCASES
4   -1 Problem 1-1: not enough testing/inconclusive test output
5   -2 Problem 1-2: no test cases/no test output/no description in TESTCASES
6   -1 Problem 1-2: not enough testing/inconclusive test output
7   -2 Problem 1-3: no test cases/no test output/no description in TESTCASES
8   -1 Problem 1-3: not enough testing/inconclusive test output
9   -2 Problem 1-4: no test cases/no test output/no description in TESTCASES
10   -1 Problem 1-4: not enough testing/inconclusive test output
11
12
13 DESIGN [[/40]]
14 --------------
15
16  -20 Missing or far too brief DESIGNDOC
17   -2 Troublesome or unexplained dependencies
18   -2 Changing interfaces, each (max -6)
19
20 DESIGNDOC (per problem):
21   -1 Minor details missing
22   -2 Major details missing
23   -5 Totally missing
24
25 Overall:
26   -1 Gratuitous use of malloc() (e.g. for allocating a list or a lock)
27   -1 Inappropriate use of ASSERT (e.g. to verify that malloc() succeeded)
28
29 Problem 1-1: Alarm Clock
30   -1 Uses lock/interrupt disabling without justifying
31   -1 Uses a lock within interrupt handler
32   -3 Busy waiting
33   -2 Wakes up too often, e.g. by using semaphores with negative values
34   -1 Traverses entire list of sleeping threads every tick
35   -1 Doesn't protect data structure in timer_interrupt
36   -1 Doesn't protect data structure in timer_sleep
37   -3 Bad design
38
39 Problem 1-2: Join
40   -3 Busy waiting in thread finish when waiting on the parent's join
41   -3 A static list of all parent-child pairs is extremely wasteful
42   -3 Obviously wasteful with memory (not deleting threads)
43   -2 Finished parent deletes children which may still be running
44   -1 Enable/disable interrupts
45   -2 Joinable child lets its struct thread be deleted before parent dies
46   -1 Race condition between join and thread exit
47
48 Problem 1-3: Priority Scheduler
49   -3 Doesn't use sorted queue scheduler, and don't justify why they didn't
50   -2 sema_up() doesn't pick highest-priority waiting thread
51   -1 Should use sorted queue in semaphores, unless explained in DESIGNDOC
52   -1 cond_signal() doesn't pick highest-priority waiting thread
53   -1 Should use sorted queue in conditions, unless explained in DESIGNDOC
54   -2 Yield should pick the highest-priority thread (including current)
55   -3 Bad design
56   +2 Used a heap or other advanced priority queue for ready_list
57
58 Problem 1-4: Advanced Scheduler
59   -2 Isn't table-driven
60   -5 Bad design
61
62
63 STYLE [[/10]]
64 -------------
65   -1 No attempt to conform to existing coding style
66
67
68 COMMENTS
69 --------