Boyfriend issues

Lately things have been different in my relationship. Me and my boyfriend have been on and off for two years.. We usually break up because we go to two different colleges and distance gets hard but lately he has been acting different. He'll get mad when I'm too emotional and get mad at me. He calls me dumb and stupid when I don't say "intelligent" things and he claims it's because he wants to make me stronger and not a "cry-baby" in his words. He called me outside my name once (bitch) and he said he only said cause we were arguing and he said he almost called me something and I said do it and see what happens and now he says it's my fault cause I shouldn't have antagonized him to say it. He has never really acted this way towards me. We've known each other for 6 years now and since I've met him he has been a sweet heart I don't understand the sudden change. What should I do?!?