If you are interested in the real $C^{\infty}$ case there are also: Jet Nestruev, Smooth Manifolds and observables, Springer Graduate Texts as well as Gonzales, Salas, C-differentiable spaces, Lecture notes in Mathematics, Springer.
The algebraic definition of the differential consist in composing a derivation $X:\mathcal{O}_M \to \mathcal{O}_M$ with $f^*:\mathcal{O}_N \to \mathcal{O}_M$ which gives you a derivation from $\mathcal{O}_N$ to $\mathcal{O}_M$. It remains to show that this sheave sheaf of $\mathcal{O}_M$ modules is isomorphic to $f^*(\mathcal{T}_N)$. But maybe you did not need ask for that.
If you are interested in the real $C^{\infty}$ case there are also: Jet Nestruev, Smooth Manifolds and observables, Springer Graduate Texts as well as Gonzales, Salas, C-differentiable spaces, Lecture notes in Mathematics, Springer.
The algebraic definition of the differential consist in composing a derivation $X:\mathcal{O}_M \to \mathcal{O}_M$ with $f^*:\mathcal{O}_N \to \mathcal{O}_M$ which gives you a derivation from $\mathcal{O}_N$ to $\mathcal{O}_M$. It remains to show that this sheave of $\mathcal{O}_M$ modules is isomorphic to $f^*(\mathcal{T}_N)$. But maybe you did not need that.