UCB/UCLA/USC for compsci?

Hey everyone! I’ve narrowed down my choices to these three, but May 1 is coming up and I still can’t decide.
I applied for computer science, interested in doing a focus in computational biology, computer graphics, or artificial intelligence, though I’m not 100% set on anything yet and may switch to premed and/or BME. All 3 options cost about the same so money isn’t an issue.

UCB: admitted to letters and science, so I would have to complete the prereqs and maintain a 3.3 gpa. I like the proximity to sf and silicon valley, the startup culture among cs/eecs students, the cs facilities and professors, though I’m worried about the rigor, lack of undergrad research opportunities, and lack of flexibility in switching majors.

UCLA: admitted to Samueli, so no prereqs and I won’t have to worry too much about my gpa. my favorite campus and environment out of the three, and as a bay area native I would love to live in LA for a change and not stay in norcal my entire life. Also I heard that UCLA had more flexibility with classes and undergrad research opportunities (especially interdisciplinary research). However, I was not very impressed with their engineering facilities and I’ve talked to some graduates who said that UCLA’s cs curriculum didn’t prepare them well for working in industry.

USC: admitted to Viterbi. Pros include more resources and individual attention, scholarship recipient perks, an emphasis on interdisciplinary research, and the CSBA and CS (games) majors which look pretty interesting. However, it’s still slightly more expensive than the other two and their program isn’t ranked as well.

Any info to help me decide is greatly appreciated! I would love to know more about undergrad research and the quality of the professors at each of the schools to help me make an informed decision.

Just realize that CS programs in general are a very very broad base. They are not teaching you to be a worker at a job. You can do that on the job. They are teaching you foundational ideas about algorithms and data structures (that will be important at jobs), theory, architecture, operating systems, programming languages theory and then depending on the program, security, databases, AI, computer vision…and on it is just a lot of stuff. You learn some programming languages while you are learning all this stuff, as a means to learn this stuff. You might end up working in just one area where they use languages that you didn’t even learn yet, but you have been trained to self learn at that point. Even my daughter was given ‘homework’ as part of a job interview process once and was told she could do it in a language she knew but she decided to to it in a language she didn’t know but one they used extensively–and got the job.

You can help yourself by getting involved in project based work and doing things outside class. Maybe in clubs or on the internet in open source work and of course internships.

Also she grew up in SF and wanted to experience somewhere else too and it’s a good idea if you can afford it. So she went to college on the east coast and has interned in SF but now is going to NY instead of the valley. So I get wanting to check out LA. It is a very different vibe. But one that is hard to love as much as Bay Area imo (die hard.)

I don’t think someone can tell you such a general thing as quality of professors, it is always who you get. I would say department philosophy is more important. And research access is important to know but I don’t know how except talking to students. I do know someone was able to work in a lab at USC summer after freshman year, and invited back the next summer it was discussed by the parent. Research is good in that it prepares you for grad school and to explore if you like it but also CS research is very hands on often in CS. I would read the Math/CS forum or talk to people on the individual schools forums search to see if it has been discussed. But often research comes from doing well in class and also being proactive in finding out what research is going on and who is doing it and approaching people.

Thank you so much for the advice BrownParent! I’ll definitely go check out those other forums. Also, you mentioned “department philosophy” as an important factor. How would I be able to find out about this for an individual school?

Unless you follow a specific track, like Games at USC, there won’t be much to differentiate the undergraduate CS programs of the three schools. I’d rate them all equivalently.

Most CS programs, especially at big research universities, are theoretical rather than practical. They prepare students for graduate school, not industry. You’ll run into this problem at Berkeley, UCLA and USC.

Any good CS department should prepare you for both industry work and graduate study in CS – you should learn both the theory and get plenty of practice in programming assignments and projects where you apply what you learn.

Of course, if you dodge or minimize course work in one or the other, then you may not get as much out of the CS major as you could get.

Big difference between what they should do, and what they actually do. Companies that hire new graduates know those new hires aren’t going to be able to hit the ground running, which is why many companies won’t even hire new graduates.

I have not noticed CS graduates from research universities (including, but not limited to, UCB, UCLA, USC) being particularly unsuited for industry software jobs.

What exactly is your job, ucbalumnus? College guidance councilor?

New CS grads get hired because they have the potential to be trained for software jobs, not because they’re immediately ready for those jobs. The CS grads from UCLA described it correctly when they said they didn’t feel their CS curriculum prepared them for industry. I felt the same way in my first job. It’s a complaint about CS programs that I’ve been hearing from businesses since I got my CS degree in '83.

Well, they are free to recruit any other major they think are better prepared. Maybe ITT or something that has Cisco certs etc.

Software development.

In my first job many years ago, I was ready to write software and did so. And I see new graduate new hires today doing the same.

Of course people are going to write software if their first job out of school is a software developer. The issue is how usable that software will be. The stuff I wrote in my first job was pretty bad, and that’s what I’ve observed with almost all new grads. I’d expect the software you wrote in your first job wasn’t as good as it was after a few years of experience.

That’s why employers place much more importance on practical knowledge than theory. If that wasn’t the case, college graduates would be given preferential hiring over experienced developers.

Being able to write better software with experience is the result of continuing self-education that one should be engaged in as one gains experience. It does not necessarily mean that CS instruction in school are deficient in the way that you describe, although the limitations of a school environment mean that there are other workplace aspects that new graduates typically have little experience with (e.g. group or team projects with more than two people, or long term code maintenance).

Also, in my first job, I saw some really awful code from some more experienced developers (e.g. C code with thousands of non-comment lines in one function with very few or no comments, or no attention paid to compiler warnings). Maintenance by anyone other than the original developer would be more difficult than it should be.