Computer science is often considered one of the more difficult majors to work towards, and with good reason. The major itself requires skills like math, language learning, abstract puzzle solving, and memorization. There's no wonder why it's thought of as difficult, which justifies the high demand and salaries for careers in the major; but maybe it's too hard.
Classes, especially higher level courses, often operate like this: a teacher gives you a biweekly project with small assignments between, leaving class time for lessons on abstract concepts. This isn't bad on its own, but if you're just learning a language or its more advanced methods, this teaching schedule can often leave you feeling lost or behind. If you don't understand how to write a certain line of code, you will find it difficult, if not impossible to finish your assigned programs.
Computer science classes are structured uniquely compared to other STEM major courses, or any other course for that matter. You could say that it's because the class is different from most other sciences and majors, but I argue it doesn't have to be that way. Programming is like a mix of mathematics and language, so it should be taught more like those types of classes.
A good math teacher will go over problems in class and give examples to help you apply their solutions to other problems. Language teachers will repeat phrases and promote speaking in class to help you learn proper speech and word relations. Computer programming courses will rarely go through examples of programs in class, unless they are small blocks of code, leaving most of the learning up to you during assignments.
If programming classes were to be reformed, I think they should follow suit of math and language classes. Having a teacher code in class while explaining what they're doing, and having students call out solutions would be greatly beneficial. Learning by example is arguably one of the most effective methods of teaching, and students can learn a lot by watching a skilled programmer talk their way through solutions. This would also reinforce student's ability to recognize methods by repeatedly hearing and seeing them in class lectures.
It can be argued that if a student is having trouble with programming they can talk to their professor, but that shouldn't be required for a student to fully understand their class. Computer Science's similarities with other majors should be utilized as strengths rather than a reason to make it exclusive. The fact that something like the FizzBuzz question confuses 99 percent of prospective programmers is evidence that something is missing in the teaching methods. The courses don't have to change overnight, but if professors were more willing to demonstrate coding in class, it would make a huge difference in the education of Computer Science majors.