<p>So I plan on taking 12 upper division EECS courses for my last two years at Cal starting this coming fall. I've already decided what 6 EE classes I want to take, but there are 9 CS classes I want to take and since I can only take 6 I'm wondering which you'd choose out of those 9. Thanks!</p>
<p>(Also if you're going to say "which one is most intersting to you?" I find them all equally interesting although I'm definitely planning on taking CS 162, CS170 and CS188, so I guess there's only 3 choices left :P)</p>
<p>Of course, add those courses in your likely area of interest for either industry software jobs or graduate school. E.g. game developers probably want to add 184, 188, and 160.</p>
<p>Note that 170, 172, 174 are more like math courses in terms of workload (i.e. significantly lower workload than CS courses with programming or hardware design assignments and projects). So if you find 172 and 174 interesting, you may be able to take those as “extra” courses, or take both them them together in place of one “normal workload” CS course. If you want to take both 172 and 164, it is beneficial to take 172 first.</p>
<p>^As of now I think I like the AI/Robotics side of CS, but the only experience I’ve had internship-wise is “Big Data” Distributed Computing stuff (which I find ok but not super exciting). </p>
<p>So if I had to choose between CS184 or CS186, I’m guessing CS186 is more important but I feel like I’d enjoy CS184 more.</p>
<p>Also how useful is CS164, the programming languages and compilers class?</p>
<p>186 is probably more generally useful than 184, since many computer programs in all areas have to store and manage data (either on their own or using some sort of database or database library). 184 is obviously useful for specific applications, but not so much for others.</p>
<p>164 is often recommended for preparing for CS graduate school due to it touching on all of hardware (computer architecture), software (generally), and theory (language and automata theory) topics and how they relate. It is less specifically useful for industry software jobs, although it can be useful if you have to do a project involving parsing a non-trivial input language.</p>
<p>That’s actually 13 classes instead of 12, but if CS 172 and 174 and 170 are not programming intensive then I should be able to pull off taking 4 techs instead of 3 one semester.</p>
<p>Do you see yourself doing more AI software or, robotics hardware? Because some of those EE classes seem only marginally useful for software jobs.</p>
<p>12 or 13 upper div classes in 4 semesters? Are you sure about this? It’s certainly doable but I don’t see the benefit of it. The return of (time) investment is pretty low. If I were you I would chose an area to specialize in, take classes related to that area, and do more stuff outside of school with my other time. Relatively few people/employers will care about how many classes you have taken. All that matters is that you’ve taken classes for the relevant topics. If you don’t care about that and just want to really learn this stuff and give up a bit of your social life, all the power to you :)</p>
<p>Anyway, back to topic.
161: Not recommended unless you’re really into security. The class is very high-level and you don’t get much out of it.
162: The original OS class was great, but they changed the class to a general “distributed system overview with some OS mixed in” class which teaches you a little of everything but nothing in depth. I heard they wanted to create a separate class for the old OS class and make 162 a prereq for it. Habe they done this by now? Anyway, 162 is good to get an overview of things, so you should take it as early as possible if you do take it. If you already have experience with the stuff covered in class though you probably won’t learn anything new. IMHO the only good part is the first third of the class that covers OS, the rest is high level and straightforward.
164: Mostly useful if you’re going into research and want to do something related to languages/compilers. Can be a challenging class.
170: Highly recommended whatever you do. Also highly relevant to the industry.
172: Didn’t take it but it’ll be useful if you want to go to grad school and do research. Mostly theoretical class with a lot of Math / Proofs. Also relevant for the compiler class.
174: Didn’t take it.
184: If you want to get into Graphics, Rendingering, Animation, etc, take it. If not, I don’t see any reason to take the class.
186: Highly recommended unless you already have lots of experience with databases, possibly from the industry. As relevant to the industry as it is to research.
188: One of the easier classes, but recommended. AI and Machine Learning is everywhere these days. Relevant to both industry and research.</p>
<p>Hope that helps.</p>
<p>
This is not necessarily true. It depends on your aptitude. If logic and proofs is something that easily comes to you then this may be the case. However, if you have a lot of practical experience and not as talented in math then the opposite may be the case. Personally I know many people who spend an insane amount of time on the assignments in 170, others can finish them in 1-2 hours. I haven’t taken 172 and 174 but looking at the class websites tell me that the assignment are very similar in nature. The same applies to project-based classes. There are people who can finish 162 and 186 projects in as little as 2-3 hours per week. Others needs 5 times longer. It’s hard to generalize, it really depends on the individual.</p>
<p>I took CS162, CS170, and CS186 this semester and it sucked. My friend had the same schedule and didn’t seem to need to study as much as I did, so it really depends on the person as to whether or not s/he can handle three technical CS courses. My schedule this semester is comparable to what you’re planning for next because CS188 and CS186 are pretty similar in workload.</p>
I am assuming that you are taking something else besides the 3 technicals. Some kind of humanities that is. I general I would say 3 are pretty heavy but it depends on the classes. If you were to attempt something like 150 + 164 + 162 it would most likely kill you All of these are very project-heavy and time intensive (Well, the new version of 162 maybe not as much). 188 + 170 + 162 on the other seems totally fine to me, depending on how “well suited” you are for 170. As I said, for some it’s easy, for some it’s very difficult. Also note that the choice of professor plays a large role as well. Some are way easier than others.</p>
<p>TAing depends on the class as well. I was TAing for a while and there are weeks that require a lot more time investment (exam grading or when you’re supervising the project) than others. You can only hope that these weeks don’t overlap with those your regular classes have midterms…</p>
<p>It depends on which they are. Large project courses like 150, 152, 164, and 184 are much heavier in workload than theory courses like 170, 172, and 174 (assuming you are ok with doing math problems and proofs).</p>
<p>It does look like your selected EE courses are not heavy project courses, but 125 and 128 do have labs (120, 123, and 126 look more math-like in terms of work).</p>
<p>So I would suggest arranging your schedule (of the courses listed in #5) so that the heaviest project courses are taken alongside two of the math-like courses (120, 123, 126, 170, 172, 174), while taking up to two of lighter project and lab courses together along with one of the math-like courses.</p>
<p>Be careful of humanities and social studies courses that have large term projects or voluminous amounts of reading, since those can consume a lot of time.</p>
<p>Just wondering, how crucial is it that I know Math 55/CS 70 for the upper div courses? The ones I’m planning to take are CS 162, CS 169, CS 186 and CS 188. They have Math 55/CS 70 as a prerequisite. It’s been awhile since I took Math 55. I guess I still remember some of the main concepts but that’s about it. I took it at a CC too so maybe we didn’t cover the topics in depth like at Berkeley, although the prof I had used to teach Math here at Cal too.
Anyway, it seems that some prerequisites are still listed even though its not really required. For example, CS 61A or CS 61B being required for CS 61C. I’m a little worried about this. I did fairly average on the CS 61 series, so I’m not sure how I’d do on upper div courses. Would you guys recommend retaking 55?</p>
Not important for most classes, I don’t know why it’s a prerequisite. In most cases the professor covers the relevant mathematical topics, or they are easily looked up.</p>
<p>
No. You could take it P/NP if you think it may help you or if you’re interested in the topics.</p>
<p>Great. I kind of figured it wouldn’t be that important. They always list something as a prerequisite but the material usually isn’t even used. Thanks for confirming that for me :-)</p>
<p>^That sounds like a neat schedule (I really want to take EE/CS 149 but I have no space, maybe I’ll do it in grad school)</p>
<p>Yeah for now I’ve finally decided:
EE: 120, 122, 123, 125
CS: 162, 164, 170, 172, 174, 184, 186, 188</p>
<p>I guess in terms of robotics/mechatronics, I’d be more into the AI CS part of it rather than the EE control part of it (although I feel like I’d like that too but maybe not as much)</p>
<p>Sigh this damn EECS field is so large and awesome…I wish I could learn everything but that’s not practical…how do people manage to specialize themselves? I’d feel sad specializing knowing that while I become at expert at one thing, all these other unrelated topics are expanding in depth and I’ll never be able to know it because I’m focused on this one topic…</p>