$$
score = correctness * 0.4 + performance * 0.3 + report
$$
## Correctness (40%)
- $X$: passed tests
- $N$: total number of tests
$$
correctness = \frac{X}{N} * 100
$$
## Performance (30%)
- $T$: time + panelty (from the scoreboard)
- $T_{i, j}$: student $i$'s $T$ of test $j$
- $T_{best, j}$: the minimum $T_j$ of all the students
$$
performance = \sum_{j=1}^N \frac{T_{best, j}}{T_{i, j}} * \frac{1}{N} * 100
$$
## Report (30%)
1. (8%) Describe your implementation. How did you distribute your workload across different threads?
- (4%) Describe the design/overview of the program breifly
- (2%) Describe which scheduling algorithm you choose and why (static/ dynamic / guided...)
- (2%) Other efforts you make in your program.
2. (8%) What are the difficulties encountered in this homework? How did you solve them?
- (4%) Discuss at least 1 difficulty
- (2%) Elaborate on your attempts to solve it
- (2%) Analyze the cause of difficulty / Discuss 2nd difficulty and your attempts to solve it
3. (6%) What are the strengths and weaknesses of pthread and OpenMP?
- (3%) at least 1 pthread pros and 1 pthread cons
- (3%) at least 1 OpenMP pros and 1 OpenMP cons
4. (8%) Performance Analysis
- (4%) Draw a plot showing the relationship between the number of cores used and the program execution time.
- (4%) Analyze the plot: Is the relationship linear? If not, provide reasons for the observed behavior.
5. (0-10%) Any suggestions or feedback for the homework are welcome. 5% for each meaningful suggestions or constructive feedback.
###### tags: `grading policy`