The undergraduate computer science program is fucking awful.
1. As you say, the introductory classes are enormous. For the math classes this means less feedback on your assignments. What this also means is that you have other undergrads grading your work. If that doesn't terrify you, then it should.
2. Inadequate preparation. Similar classes in other departments have more prerequisites. I'm currently attending a machine learning class where more than half the class is probability-illiterate. Take a look at how the core math curriculum is taught (algebra, analysis)
3. Professors and graduate students are out of sync about the material and assignments, which leads to situations where nobody can answer your questions. See cs162, cs61c. I've heard similar rumors about 161.
4. Only 5-10 upper division undergraduate cs classes. Interested in type theory? Practical encryption? Computer algebra? You're out of luck. Most other universities seem to offer a lot of variety.
5. Less treatment of the fundamentals. Our systems class no longer goes into any depth about malloc. They've replaced it with a section on map reduce. Similar situation with the operating systems class and I believe the security class.
6. The people who rise to the top are the people who were probably going to be successful anyway. That's just my experience/bias though.
//1. As you say, the introductory classes are enormous. For the math classes this means less feedback on your assignments. What this also means is that you have other undergrads grading your work. If that doesn't terrify you, then it should.//
As someone who is an undergraduate TA (for computer science), this doesn't terrify me any more than overworked and underpaid graduate students grading assignments, or overworked research faculty who don't have any incentive to grade well. My anecdotal experience has been that it's generally the top 1-3% of undergrads who end up TAing or grading (in CS, at UVa; mileage elsewhere may vary), and those who do take it pretty seriously (here, at least, we're paid and it's a job). Most of the people I've TA'd with (and myself) take at least one graduate course and actually know the material better than most graduate students (since we've taken the course and universally done very well in it). UVa also rotates graduate TAs out after a year (to research or other things), whereas undergraduate TAs can stay on the same course for two or three years, which offers much more continuity for the professor and fewer TAs who are completely lost. I might be biased (see also: I get paid to do exactly what terrifies you), but I think that if the undergraduates aren't just unpaid volunteers, you get better results than using graduate students for the same things. Unpaid volunteers are much worse: you don't have to pay much, but paying someone for something makes it a job, which switches people's headspace from 'I can drop this' to 'This is my job, and I will do it well'.
4. Only 5-10 upper division undergraduate cs classes. Interested in type theory? Practical encryption? Computer algebra? You're out of luck. Most other universities seem to offer a lot of variety.
I know of almost no university besides maybe MIT where there's no bias in the teaching and research towards certain fields and away from others. It's quite unfortunate, but you have to choose your educational institution based on what specialties you want to enter.
Comments
The undergraduate computer science program is fucking awful.
1. As you say, the introductory classes are enormous. For the math classes this means less feedback on your assignments. What this also means is that you have other undergrads grading your work. If that doesn't terrify you, then it should.
2. Inadequate preparation. Similar classes in other departments have more prerequisites. I'm currently attending a machine learning class where more than half the class is probability-illiterate. Take a look at how the core math curriculum is taught (algebra, analysis)
3. Professors and graduate students are out of sync about the material and assignments, which leads to situations where nobody can answer your questions. See cs162, cs61c. I've heard similar rumors about 161.
4. Only 5-10 upper division undergraduate cs classes. Interested in type theory? Practical encryption? Computer algebra? You're out of luck. Most other universities seem to offer a lot of variety.
5. Less treatment of the fundamentals. Our systems class no longer goes into any depth about malloc. They've replaced it with a section on map reduce. Similar situation with the operating systems class and I believe the security class.
6. The people who rise to the top are the people who were probably going to be successful anyway. That's just my experience/bias though.
//1. As you say, the introductory classes are enormous. For the math classes this means less feedback on your assignments. What this also means is that you have other undergrads grading your work. If that doesn't terrify you, then it should.//
As someone who is an undergraduate TA (for computer science), this doesn't terrify me any more than overworked and underpaid graduate students grading assignments, or overworked research faculty who don't have any incentive to grade well. My anecdotal experience has been that it's generally the top 1-3% of undergrads who end up TAing or grading (in CS, at UVa; mileage elsewhere may vary), and those who do take it pretty seriously (here, at least, we're paid and it's a job). Most of the people I've TA'd with (and myself) take at least one graduate course and actually know the material better than most graduate students (since we've taken the course and universally done very well in it). UVa also rotates graduate TAs out after a year (to research or other things), whereas undergraduate TAs can stay on the same course for two or three years, which offers much more continuity for the professor and fewer TAs who are completely lost. I might be biased (see also: I get paid to do exactly what terrifies you), but I think that if the undergraduates aren't just unpaid volunteers, you get better results than using graduate students for the same things. Unpaid volunteers are much worse: you don't have to pay much, but paying someone for something makes it a job, which switches people's headspace from 'I can drop this' to 'This is my job, and I will do it well'.
4. Only 5-10 upper division undergraduate cs classes. Interested in type theory? Practical encryption? Computer algebra? You're out of luck. Most other universities seem to offer a lot of variety.
I know of almost no university besides maybe MIT where there's no bias in the teaching and research towards certain fields and away from others. It's quite unfortunate, but you have to choose your educational institution based on what specialties you want to enter.