This is a placeholder answer; I'm just posting this to record for posterity [something I posted in the chatroom](http://chat.stackexchange.com/transcript/message/4829800#4829800) a not-so-long time ago. As I noted there, the following routine will only do smoothing; I had a more general routine for generating the differentiation coefficients, but I still have not been able to find it. As with Virgil's method (the one in Alexey's answer), this is based on [Gorry's procedure](http://pubs.acs.org/doi/abs/10.1021/ac00205a007) (though I have traced the spirit of the algorithm going as far back as [Hildebrand's book](http://books.google.com/books?id=hqucruPBheQC&pg=PA357)):

    GramP[k_Integer, m_Integer, t_Integer] :=
         (-1)^k HypergeometricPFQ[{-k, 1 + k, -m - t}, {1, -2 m}, 1]

    SavitzkyGolay[n_Integer, m_Integer, t_Integer] := 
            Table[Sum[(Binomial[2 m, k]/Binomial[2 m + k + 1, k + 1])
                      GramP[k, m, i] GramP[k, m, t] (1 + k/(k + 1)), {k, 0, n}, 
                      Method -> "Procedural"], {i, -m, m}]
    SavitzkyGolay[n_Integer, m_Integer] := Table[SavitzkyGolay[n, m, t], {t, -m, m}]

The complete routine I once had entirely skips having to define the Gram polynomials separately and is also able to produce the derivative coefficients. I'll post the routine as soon as I find that notebook...