Given the frequency distribution of scores, we expand the data list based on the frequencies:
\[
\text{Scores: } [1, 2, 3, 4, 5, 6, 7, 8]
\]
\[
\text{Frequencies: } [1, 5, 6, 4, 3, 6, 3, 2]
\]
The expanded data list is:
\[
\text{Data: } [1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 8, 8]
\]
To find the median, we first determine the rank using the formula:
\[
\text{Rank} = Q \times (N + 1) = 0.5 \times (30 + 1) = 15.5
\]
Where \( N \) is the total number of data points, which is 30.
Since the rank is 15.5, we need to average the values at ranks 15 and 16. From the sorted data:
\[
\text{Sorted Data: } [1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 8, 8]
\]
The values at these ranks are:
\[
X_{\text{lower}} = 4 \quad \text{(rank 15)}
\]
\[
X_{\text{upper}} = 4 \quad \text{(rank 16)}
\]
Using the averaging formula:
\[
Q = \frac{X_{\text{lower}} + X_{\text{upper}}}{2} = \frac{4 + 4}{2} = 4.0
\]
The median is:
\[
\boxed{4.0}
\]