Let's see the doc :

```
* "sparse" -- bool (default: False), whether or not elements are
sparse
```

As far as I understand it, a sparse polynomial stores only the non-zero coefficients (less storage, more computing), whereas a non-sparse polynomial stores *all* its coefficients (more storage, less computing). That can be critical when you have to work with polynomials having few coefficients of very high order...

Those polynomials are compatible :

```
sage: K=GF(17)
sage: R.<z>=PolynomialRing(K,sparse=False)
sage: r1=z^17-z^13+1
sage: r1.parent()
Univariate Polynomial Ring in z over Finite Field of size 17
sage: S.<z>=PolynomialRing(K,sparse=True)
sage: r1.parent()
Univariate Polynomial Ring in z over Finite Field of size 17
sage: s1=S(copy(r1))
sage: s1.parent()
Sparse Univariate Polynomial Ring in z over Finite Field of size 17
```

The use of a *copy* of r1 allows to keep r1's parent set :

```
sage: r1.parent()
Univariate Polynomial Ring in z over Finite Field of size 17
```

One can compute on these two "compatible" sets :

```
sage: t1=r1-2*s1
sage: t1
16*z^17 + z^13 + 16
sage: t1.parent()
Univariate Polynomial Ring in z over Finite Field of size 17
sage: r1.parent()
Univariate Polynomial Ring in z over Finite Field of size 17
sage: s1.parent()
Sparse Univariate Polynomial Ring in z over Finite Field of size 17
```

BTW, the use of `copy`

does not seem necessary (but ISTR that I've been hoisted by this...) :

```
sage: s2=S(r1)
sage: r1.parent()
Univariate Polynomial Ring in z over Finite Field of size 17
sage: s2.parent()
Sparse Univariate Polynomial Ring in z over Finite Field of size 17
```

HTH,