I would like users to be unable to change formulas of some calculated columns, both from the list settings and from datasheet view. I am currently trying this via event receiver but I have went back to the drawing board after a couple failed attempts. I am certainly not opposed to doing this in some way other than an event receiver.
If you create the column in Visual Studio, you can make it to a calculated field and then seal the column.
Here's one i have in my sollution.