Which is better
This one is pretty easy. Cal has the better rep. But Brown also has a fine undergraduate program, and potential education available outside of CS is arguably better.
Agreed, the Berkeley CS department is more highly regarded in academia and in the industry. But don’t discount tha advantages of studying CS at a smaller, well-regarded institution like Brown for an undergraduate student. There are a ton of interesting opportunities at Brown CS that you may not get in a large department like Berkeley. Brown lets their undergraduate students be teaching assistants and it is a large part of their program of instruction; Berkeley uses their huge graduate school population as teaching assistants. Thus my D has had three (paying!) jobs working directly with CS professors at Brown and she is just a junior. And it certainly will help in her interviews for internships, jobs and graduate school, to be able to talk about all the experience she has had teaching CS. I venture to say that internships and jobs are more plentiful to Brown CS graduates because they are competing with fewer CS majors at Brown. As an illustration, would you rather compete for the 10 Google internship slots slated for Brown’s 75 CS majors or would you rather compete for the 25 Google internship slots slated for Berkeley’s 700 CS majors? (I don’t know the exact numbers, but I think they are somewhere around this order of magnitude.)
Also, think honestly about whether you will thrive at a competitive place like Berkeley. Everyone thinks they are better than average, but Berkeley is really going to put you to the test. If you are a superstar programmer, going to either school will be fine and your talent will push you to the top. The danger at Berkeley is that you will be weeded out before you are ever able to show your talent. UCB requires you to either apply as a freshman to their ultra competitive EECS program (where you will spend the next 4 years) or, if later, you need to achieve a 3.3. GPA in the basic CS curriculum before you can even petition your way into a CS major. That makes it a real competitive grind. If you’re up for it, good luck, but I think for most people it’s a riskier prospect for success.