What I remember the uni was that functional languages don't have state. That is you have names (i.e. variables) and values - but you don't have memory locations (for the variables). This makes it a distinct computing model from languages that do have the notion of state, maybe calling them 'imperative' is kind of semantic overloading - but it is quite clear distinction. This distinction does not nullify their Church equivalence (i.e. that they can compute the same class of functions), but it might mean that algorithms written in them have different computational complexity.
As to assignments - same thing. Yes you can simulate a turing machine using a functional language, in terms of what they can compute they are equivalent, but they are not equivalent in terms of how you write programs in them. In functional languages you can simulate state with arrays - but it is easier to just use the language as it is. You can dig the same hole with a spoon as with a spade - but this does not make them equivalent, because with the spoon it would take you much more time.