They weed the people who don't want to do the work for the classes. That's all. The classes don't necessarily teach practical things. There are only 2-3 classes you have to take which involve "heavy" programming: data structures, operating systems, and the intro course which used to be based on SICP (if that doesn't count, pick one from the required breadth). Ironically, if you take the software engineering course here, you can end up in a group where your entire role is "testing". About a third of the upper division CS classes involve minimal to no programming whatsoever. There are also plenty of nontechnical classes you can take outside of the department which count towards the major.
It has nothing to do with fakers and everything to do with deadlines. When you have 3 large projects due each week and about a 100 pages of assigned reading it gets hard to find the time to dig around for details on trivial stuff that isn't working.