I'm still severely lacking in background at the moment, but I'm interested in doing something with congruence properties of modular forms (relations between coefficients of the q-expansions that hold modulo a prime).

I'm trying to compute these things using SAGE, and I'm wondering what the relation is between

1) Taking the q-expansion of a modular form (of level $N$) defined over $\mathbb{Z}$ and then reducing the coefficients modulo $p$ ($\mathbb{Z}[[q]]\rightarrow \mathbb{F}_{p}[[q]]$).

and

2) Taking the q-expansion of a modular form defined over $\mathbb{F}_{p}$?

I vaguely know that there is a definition of a modular form as a functor that takes in data $(E/S,\alpha_{n})$ and outputs a section of $(\omega_{E/S})^{\otimes{k}}$ or some rule that takes in $(E/{\rm Spec}(R),\alpha_{n},\omega)$ and outputs an element of $R$. So I'm pretty sure the answer is easy to get if one is comfortable with these notions, but I wouldn't trust my answer (pullback the Tate curve under some map ${\rm Spec}(\mathbb{F}_{p})\rightarrow {\rm Spec}(\mathbb{Z})$, hope this means all the formulas are reduced modulo $p$, then evaluating on the Tate curve hopefully just means reducing the coefficients modulo $p$...)

(As for the computation I'm trying to make in SAGE:

I don't think it lets me take a basis of modular forms defined over $\mathbb{Z}$:

ModularForms(1,12,ZZ).basis() Traceback (click to the left of this block for traceback) ... TypeError: Argument K (= Integer Ring) must be a field.

I can do it over a field, but I'm not sure how to interpret what SAGE is telling me when I plug in a finite field. If I do:

ModularForms(1,12,QQ).basis()

[ q - 24*q^2 + 252*q^3 - 1472*q^4 + 4830*q^5 + O(q^6), 1 + 65520/691*q + 134250480/691*q^2 + 11606736960/691*q^3 + 274945048560/691*q^4 + 3199218815520/691*q^5 + O(q^6) ]

I get denominators. If I plug in $\mathbb{F}_{p}$, where $p$ does not divide 691, then I think I just get the coefficients reduced modulo $p$:

ModularForms(1,12,GF(5)).basis() [ 1 + O(q^6), q + q^2 + 2*q^3 + 3*q^4 + O(q^6) ]

But if I plug in 691, I'm not sure what SAGE is telling me:

ModularForms(1,12,GF(691)).basis() [ 1 + 316*q^2 + 477*q^3 + 34*q^4 + 362*q^5 + O(q^6), q + 667*q^2 + 252*q^3 + 601*q^4 + 684*q^5 + O(q^6) ]

Thanks!