I'll put in my advice/perspective, if it's already been stated, sorry, tl;dr.
First, the girls that go out with the douche-bags thinking they can change them, the ones attracted to ass-hats, they are generally immature. Case in point, by your prof, I can see you are about 20, 10 years my junior, and I can honestly say I saw a lot of the same at that age. It kinda sucks, but you just have to wait it out, they do eventually change, some of them.
Second, learn how to be a dick. I know it goes against everything you believe, but the unfortunate truth is that at the age you're at, girls really do tend to fall for the "he's not showering me with attention, I must win his approval" trick. Don't give them everything they want, don't tell them everything they want to hear. You have to occasionally be rude, though the best way is pick you moment, then be brutally honest about something about them you don't like, and tell them how to fix it. Occasionally through the soft anti-compliment their way. Believe me, it actually does work. In ten years, I've gone from an average size 8 to a petite size 2, and I am far from the best looking guy around.
Or third, and maybe most importantly of all, don't date your age. generally the guy being older works out better, but you could always go for the slightly older woman. Try your luck at bagging a 25, but be aware, the older woman expects more from you than the younger.
Most important, don't take that crap from them. Like others have said, make your intentions known. Practice some flirting. Complement their looks in a blatantly "I'd hit that" manner. And if they straight up shoot you down, don't get frustrated, shrug it off and chalk it up to her not being the caliber of person you thought she might be (extra points if you let them see that it doesn't bother you, and that they lost ground in your eyes for it).