Last time I taught ECS 110 (Data Structures) I asked on the first day of class for a show of hands from people who had heard frightening stories about my classes. Half the class raised their hands! I'm really not such an ogre ... so where could this be coming from?
The truth is, my courses are a bit unusual (possible translate: hard) because of the extent to which I try to use homeworks and (to a somewhat lesser extent) lectures to help teach clear, creative thinking. I know very well that you're going to forget almost all of the facts that you learn each term, and so the only way that I can do something of value is to get at something which goes beyond the material. I want you to improve a certain skill. Roughly, it's the ability to think in the style that, I believe, makes for a good computer scientist. Some students are quite good at this coming in, and for them my classes are fun and not so hard. Other students never get it; they can finish class quite clueless about what was going on. Most students, I suppose, are somewhere in between.
Don't misunderstand; you will be expected to learn the material, and I'll do my best to help you do that. But you'll be asked to assimilate material, not just recall it. You'll need to use the material in creative ways. If you try to do a Rogaway class using recall and pattern matching, you won't get out of the class what I had hoped.
I particularly like to talk with top students who are interested in going to graduate school. Such students ought to see a faculty advisor two or three years prior to graduating. Most students have serious misunderstandings about what is important for getting into a top graduate school.
Josie Valdez (our UG advisor, to be found in the CS office) knows a lot more than me about what is required and what is permitted and what is the process to do whatever it is you're hoping to do. I can help on these matters, but I'm forever looking things up or calling Josie or running to someone who actually remembers stuff.
Please come talk to one of the faculty advisors if you have this question. One thing I'm sure of: there are an awful lot of students in our majors who ought to be somewhere else. If your main reason for being in the major is that you think that a CS/CSE degree is just the ticket for landing a good-paying job, or you're in the major because your parents think that, then I strongly encourage you to find another area of study. There's no shortage of great things to do at UCD.
Who belongs in the major? CS and CSE are good majors for people who enjoy (and are good at) problem solving. People who like creating, and like thinking about problems clearly and abstractly. If you like to work puzzles, that's a good sign. If you dislike math and physics, that's a bad sign. From my point of view, the characteristics of a good CS/CSE students are uncommon, and so CS and CSE ought not be popular majors. But they are extremely popular. We have roughly 700 undergraduates in our majors (and we service a great many non-majors, too).
Good people in industry understand this. A couple months ago I was speaking to a top manager at a major electronics company. I asked him from what undergraduate major he prefers to hire. His answer? English. His least favorite major? Engineering. "English majors can communicate," he claimed. "Engineering majors can't."
Travel. If you're US-born but have never left the US, or have only ventured to Canada or Western Europe, travel will help you understand things about our world you never even knew to ask. If you choose a country with an under-valued currency, travel can cost you far less than you think. Travel inquisitively. Travel with an open mind. Bring the attitude of one who comes to learn, and not with the attitude of a tourist. You've never been to a region in turmoil? A "developing" country? A "communist" country? Go!!
And one last piece of advice. Don't smoke. It makes you smell bad and then it kills you.