I had a demotivating experience in my first computer science course I took in undergrad (Intro to Programming with Java). There were quite a few students who had previous programming experience and the professor began to start catering to them. A quarter of the way through the semester the course changed from a introductory level course to an intermediate/advanced level course. There was a group of students, including myself, who had never programmed before so we began asking the TAs and the professor for assistance. However, we were practically ignored and told we were not studying hard enough and that we needed to fill in the gaps ourselves. Unfortunately, many of the inexperienced students dropped the course and declared another major, including myself.
This was a required course for the major so everyone had to take it no matter his or her background. I believe there should have been a placement test so that students could test out of this course if they had enough prior experience. This would have been great for all parties involved. Or if this was not an option, the professors and the TAs should have been more open to students who needed extra assistance.