Why I Prefer EECS to LSCS at Cal

来自支纳维基
跳转至: 导航搜索

作者

李志颖

削除前地址

https://winghearn.github.io/blog/why-i-prefer-eecs-to-lscs-at-cal/

正文

I’m actually pretty lazy about updating this blog. But it’s been a long time since my last post and I only get time during the winter break. So it will be a nice idea to write about what I have been doing during these days. To be honest, the previous four months really gave me serious headache. I felt I was already done for it. The reason that I was under huge pressure was I made an “improper” decision which might ruin all my effort, even though I was already admitted to Cal. Yes, it did happen.

EECS and LSCS, what makes a difference?

Before getting into my story, let’s take a look at the EE/CS majors offered at Cal. Generally, there are two majors under EECS Department, EECS B.S. (Electrical Engineering & Computer Science) and CS B.A. (or LSCS). Although they are in the same department, EECS major is in College of Engineering and LSCS major is in College of Letters & Science, which make things quite different.

Application

As a tranfer student, if you are going to apply for EECS major at Cal, you’ll need to finish all the articulated courses in community colleges and fulfill the breadth requirement for general education. This is very similar to common IGETC, the california standard, but with fewer courses, more focused on engineering. You can finish IGETC instead as well, the only difference is IGETC covers more courses. For LSCS, the requirement is almost the same. Both IGETC and major courses are required to apply. However, it requires less math and less computer science courses (only 1 or 2). Since most of the California public school requires IGETC, what I did before I transfer was taking IGETC courses and major courses at the same time. And at the end of last fall, I was still in doubt: Should I choose EECS or LSCS? Well, it didn’t seem to be a problem until you actually made you choice……

Major requirement

Yea… That’s where the story starts. If your application was approved, and you were admitted to the EECS major, congratulations! You’re already in the EECS major of Colllege of Engineering! There’s no other extra work you need to do in order to “claim” your major.

However, it’s not the case for people who applied for LSCS. If you were admitted… Well, you were only admitted to the College of Letters & Science, but not your favorite CS major! In order to declare your major, you’ll have to complete 3 lower division courses (CS 61A, CS 61B and CS 70) with a minimum GPA of 3.3. You think you are a good student in community college? 3.3 is nothing? Let’s do a brief analysis. Here’s the grading scale of Cal:

  • A+/A: 4.0
  • A-: 3.7
  • B+: 3.3
  • B: 3.0
  • B-: 2.7
  • C+: 2.3

From the statistics provided by Berkeleytime, a tool by UCB’s alumni, the average of these course is roughly between B+ to B, which means you have to be better than the other half of the class, in order to get a B+. For the 61 series, there are more than 1500 students in the class. And for 70, there are about 900 students. Let’s say there are half of them who is in CoLS and tends to declare CS major. That means you have to be very, very good compared to you fellow students in order to declare your major. There’s no doubt why it’s so competitive.

Historically, before fall 2015, students are required to finish CS 61A, B, C, and CS 70 with minimum GPA of 3.0. By looking up the official statistics, we can guess part of the reason is the rapidly increasing number of students who apply for LSCS. Since there are more and more incoming students they have to increase the difficulty of declaring the major.

Other than that, everything looks similar. EECS requires 3 more engineering related courses, while LSCS have other requirements for upper division courses. And regardless of what major you choose, you can take any EE/CS courses you are interested in. So it’s not a big deal as long as you get into one of them.

Many people believe that EECS is more EE oriented. But that’s not true. It all depends on what you want to learn. And you are free to take any courses you like.

My story

Originally I had decided to apply for EECS long ago. I took extra courses to fulfill the requirement but eventually I chose LSCS. By the time I sent my application I still believe it was easier to be admitted as LSCS major, and the requirement of LSCS for upper division courses looks easier than EECS. Also, I was overconfident about myself since I though it was easy to get A’s in the college. But when I spent time looking into the syllabi of the courses at Cal, it’s not as easy as I expected.

When the semester actually began, everything was moving way, way faster than I imagined, which made me feel uncomfortable at the very beginning. I began to doubt whether I made a wrong choice or am I risking my potential. Everyday I kept studying and studying. When I had nothing to do I studied. These 4 months were like 4 years for me. Luckily, I got all A’s and I am able to declare the major, though it still makes me feel bad when I recall how I went through this semester.

Courses

I took only three courses, CS 61A, 70, and EE 16A. Among them only CS 61A and CS 70 are counted for the minimum GPA. At the beginning I spent almost all my time on 61A and 70, especially 70 because there’s something totally new I need to spend a lot of time to digest. I felt sorry for myself that I couldn’t enjoy and appreciate the materials all the time because of the anxiety of getting lost. But after everything is settled down, I think they might actually pretty amazing, at some point.

CS 61A

This class is generally old-school SICP, based on MIT’s classic SICP class. It was taught in Scheme only years ago. But at present most of the parts are taught in Python, with the same understanding. What I like about this class is it gives you some insight about programming, not just about writing code. And since they use Python to teach the course, it’s very good for both kind of students, those who have programming background and who don’t.

There are homeworks, labs and several interesting projects. The learning curve is not too steep and the staff are friendly. One thing I want to highlight is the professor John DeNero. This guy is amazing. He worked for Google previously on Google Translate. (I guess he’s a master in NLP) What makes this class great is his teaching style. He’s a professional lecturer. It’s never boring listening to his lectures. And he tries to introduce many new terminology as the technology updates every semester.

But as for the grading, it’s as tough as… Well, the exams are very confusing. Even though you did review and you feel prepared for it, it largely depends on your intuitions. And the intuitions come from your experience. And it’s very hard to get an A in this class because of the grading system. It’s not based on how many points you get. It’s based on how many points you lose! Every exam has an cumulative effect for the whole semester. It made me stressed out every time there was an exam.

CS 70

This class is by far the most challenging one I’ve ever taken in my life. The materials in lectures and the discussions took a lot of time to digest. The problem set took me about 10 hours to finish every week. Although it’s a lower division course, it makes you feel like it’s an upper division course. And what makes it even more creepier is, this is the only lower division course that they do a curve, while other courses are grading based on absolute scale.

From the logistics of the course, this is really a “test-based” course. The homework is very hard. Most of the time everyone thought it was way beyond what we were told in the class. (But it’s Berkeley, you are the chosen ones to achieve the impossible! lol) But students are expected to get full credit for the homework.

There are two midterms and one final exam with total of 90% of the course. With the minimum 3.3 GPA in mind, you have to do at least better than the average (or maybe a little higher) in order to receive a reasonable grade. Every time there’s an exam I felt like suffering from a heart attack (no kidding). Because if you mess up one exam you are done, literally.

On the final when there was only an hour left I only finished the first half of the exam and there are more than ten pages I haven’t read through! This is such a course that you feel you did so poor but it actually turns out to be… huh, not bad.

EE 16A(?)

It was a fun course. It was about elementary circuits and linear algebra. I would say with my math and physics background it was all OK. And honestly I didn’t care about the grade in this class because it was not counted for the GPA calculation for declaring the major.

My advice

So let’s close the case. From my personal perspective, as a transfer student, if you already have a solid background in computer science and related technology, it’s always a better idea to choose EECS. People tend to think because there are less people in/getting into EECS major than LSCS, it’s definitely harder. That’s not it. And more people are in LSCS does not mean it’s easier. You have to do very well in the first three classes or else you will lose your chance to Berkeley CS forever. (Yes, there’s always an alternative such as Data Science major but I will feel really bad if I have to do that.)

Making a transition at Cal is already challenging, for the fast pace of the classes and the competitive environment. Meanwhile, you’ll be constantly worrying about not getting a good grade. The pressure comes from everywhere. And I’d say it’s really bad for your mental health. If you are a freshman or who doesn’t have a strong background but want to explore and learn about computer science, then you can consider LSCS.

After all, both majors are great. Regardless of what major you choose the learning experience won’t let you regret. But keep in mind, it’s gonna be competitive.