Graduating from UC Berkeley Computer Science in Two Years
Currently I am doing a 5th year EECS research masters student at UC Berkeley. This is a program for undergrads to complete their degree in computer science or electrical engineering and computer science in four years and complete an additional masters in one year with a focus on research. While the program is a 5th years masters, my friends joke that I am actually doing a 3rd year masters. That math doesn’t add up, right? Well Instead of doing my undergrad in four years, I did it in only… two years (mic drop).
A lot of people get really impressed when I tell them I graduated in two years and ask how the heck did I do it. Since it’s a cool and unique story, I wanted to write it out here!
High School and AP Credits
The biggest reason people are able to graduate early is that they have a lot of AP credits going into college. I was no exception, I took 16 AP tests in high school, taking 13 AP classes and self studying 3. 16 is definitely extreme, and totally unnecessary! You only get units out of taking the tests and rarely get requirements out of the way, except for AP Calculus BC and AP English (Language and Composition and Literature and Composition).
I will be honest, I had a bad motivation for taking so many AP tests. When I was a sophomore, my high school counsellor talked about a program called Running Start where you could go to community college for your junior and senior years. That way you would get college credit and could graduate from a state college like the University of Washington in two years. She also said if you were planning to go out of state, it would be better to do AP classes because those were standardized and the college admissions would be able to judge them better. So me, being the smart-ass I was, though I would go to Stanford and decided to stay in high school.
My junior and senior year, I became very miserable. A lot of my friends went to Running Start, so I was lonely and felt like I was falling behind them. I tried to take as many AP classes to not fall behind and still be at a level to graduate in two years. Part of my motivation was personal pride, but the other part was that it was a wise economic decision. A $100 AP test is a huge savings compared to spending $10,000 for a college course.
If you think about it, the seeds of graduating in two years from Berkeley, actually started as a sophomore in high school. Crazy.
Going to Berkeley and Taking CS 61A the Summer before Going to Berkeley
Then came college admissions season. I applied to one reach school in the Bay Area, and got accepted! At that point, I had thought I would go to the University of Washington and had thought maybe I could try graduating early there. When I looked at their classes, I wanted to major in Applied Math - Data Science there and it would be a stretch to graduate early; the best I could do is probably three years.
So getting into Berkeley was a surprise, but a pleasant surprise indeed. At this point, I thought it would be good to study computer science. I wanted to study math, but computer science would have lot of math and more practical skills for a job so it was a wise choice to go into.
One thing though was at Berkeley, you don’t directly get into a major. You have to reapply to get into the computer science major. It is a pretty meritocratic system, you need to get an average of 3.3 in the intro computer science classes CS 61A, CS 61B, and CS 70.
I had experience with the competitive major system at the University of Washington, where I had taken CS 143: Computer Programming II to wanted to learn more CS in high school. There, I got a 3.4 in the class, which isn’t that bad. Unfortunately, their computer science department is over constraint with students and could not scale to meet the demand of number of students that want to study computer science. A 3.4 is a death sentence where even people with 3.9s get rejected from UW CS.
From this experience, I knew it would be a shame to spend so much money to go to UC Berkeley and get rejected from computer science again. And thus I schemed an interesting strategy.
Having taken a CS course in the summer at the University of Washington, I thought it might be possible at UC Berkeley. Indeed, you were able to take CS 61A, the first intro CS course at UC Berkeley, in the summer before Berkeley. My logic was that I would be able to focus on one class instead of the school year where there are multiple classes that take your focus. If I could get an A in CS 61A, there would be a huge buffer for CS 61B, and CS 70 in making the 3.3 cutoff.
That summer was one of the funnest summers I ever had - getting independence, meeting new people in the dorms, having time in the summer to explore San Francisco, hike, go to concerts, and even seeing the solar eclipse in Oregon, while learning a lot in CS 61A. The class was tough, both projects and absurd tests, but the hard work paid off and I received an A in the class.
University of Washington English Classes
Another detail was that my senior year of high school, our English class was offered by the University of Washington. We would basically go through the same material as the Fall and Spring UW English courses in high school and get credit. This was extremely helpful! The first semesters Language Composition got me out of Reading and Composition Part B and the second semester Environmental Literature got me out of the Arts and Literature requirement.
There was a bit of a headache getting it approved; it took nearly 2 month for it to happen. The problem was my high school English teacher had accidentally put the wrong course number on the syllabus, which confused the Berkeley transfer credit office. Ultimately, I was able to solve it by emailing my high school teacher and having her email UC Berkeley.
The rest is just scheduling classes! I’ll write it out with difficulty and enjoyment to help others gauge what classes they might want to take.
In our gen-z ranking system, 😭 is most difficult and 😁 is least difficult and 😭is least enjoyable whereas 😁 is best class evar.
|CS 61A: Structure and Interpretation of Computer Programs||4||😐||🙂|
|CS 61B: Data Structures||4||😐||😁|
|CS 70: Discrete Math and Probability Theory||4||😫||😐|
|ASAMST 128AC: Muslims in America||4||😁||😫|
|ASIANST 10: Introduction to Asia||4||🙂||🙂|
ASAMST 128AC fulfilled the American Cultures requirement and the Historical Studies Requirement. This was also an Upper Division course. ASIANST 10 fulfilled the International Studies requirement.
Additionally, when I finished Fall semester, I had declared the Computer Science Major! This was in only one semester of Freshman year.
|CS 170: Algorithms||4||😭||😐|
|CS 188: Artificial Intelligence||4||🙂||🙂|
|EE 16A: Designing Information Devices and Systems I||4||😐||😐|
|ESPM 106: American Wildlife: Management and Policy||3||😁||😁|
|EE 199: Research||2||🙂||🙂|
ESPM 106 fulfilled the Biological Science and was also an Upper Division course. It’s really enjoyable and interesting too - National Park, Hunting, Conservationism vs Preservationism, etc. I also got my first experience doing research!
|CS 61C: Machine Structures||4||😫||😁|
|CS 161: Computer Security||4||🙂||🙂|
|EE 16B: Designing Information Devices and Systems II||4||😐||🙂|
|ECON 100A: Microeconomics||4||🙂||🙂|
CS 61C fulfilled the Physical Science breadth. ECON 100A fulfilled the Social and Behavioral Sciences was an Upper Division course, and a Technical Elective.
|CS 162: Operating Systems||4||😭||😭|
|CS 186: Databases||4||😐||😁|
|ECON 100B: Macroeconomics||4||😐||😐|
|ESPM 162: Bioethics||4||🙂||😁|
CS 162 was an EECS Design Course. This was a very difficult class for me, but I can see the value in this class. ECON 100A was an Upper Division course and another Technical Elective. ESPM 162 fulfilled the Philosophy and Values requirement and was an Upper Division course. It’s a really fun class too, learning about John Rawls and the Veil of Ignorance applied to Environmentalism and Society was enduring to see.
And bam I graduated!
This shows the academic side of my college experience which was intellectually enriching and fulfilling. Also very very very challenging but somehow I survived.
My favorite class was CS 61B: Data Structures. That class is difficult. However, it took me from a complete n00b at programming to having confidence as a programmer. Writing Gitlet from scratch is an extremely hard challlenge with many long nights debugging, but I got past my lowest points and somehow did it which felt extremely rewarding. Heck, I was able to do an Amazon internship using only my CS 61B knowledge!
My favorite upper division CS class was CS 186: Databases. A lot of people think it is dry and don’t like it because it is fully online, but I love it. It feels like the most real world class with real world tools such as Java, Intellij, Docker on real world work - building a large scale system where each project builds on top of each other. I am fascinated by all these large scale systems how they work work and reliability. Part of this itch coming from interning at Amazon and AWS, where reliable large scale systems are the cornerstones of the business.
My least favorite class and the class I struggled the most with is CS 162: Operating Systems. This class took me to my lowest, with huge projects that felt impossible and lots of time debugging and the material just felt like it did not stick. I struggled with working in a team too, but that pushed me to later take business classes and become more effective in working on large projects in teams. Finally, since the class made me really depressed and defeated, I went to counselling. Being able to speak to a counsellor and going to group counselling helped a lot, I realized a lot of other students faced the same issues, and it gave me comfort that since they got through the hard times, I could as well.
My favorite non-CS class was ESPM 162: Bioethics. Our GSI was extraordinary, a lawyer who came back to school with an interest in environmental protection. Most of my electives were in environmental science or economics, both areas I am interested in. Being able to see environmentalism and society from a philosophical frame was enlightening. You get to deal with morally ambiguous problems like designer babies. I choose to write my final paper on AI, and argue a position for AI using the philosophical frameworks we were taught.
Finally, some advise in scheduling and graduating early. Look at your requirements/academic progress report! So many people spend extra time because they miss a requirement such as not having enough upper division units. Second, balance difficult and easy classes. I tried not to take over 4 classes, and would balance hard CS classes with easier breadth classes, and was liberal in using P/NP for breadth classes. Finally, you can always learn material yourself! Lot of CS people are interested in Machine/Deep Learning, I watched the webcasts online and the websites are online too. Currently I have some interest in compilers so I might try to learn it on my own.
I’ll also write about how I got into grad school at Berkeley and two internships at Amazon. This is just too long for that, lol.
Lets be honest, on the internet, people have no attention span. I spent too much time writing this.
How did I graduate from UC Berkeley Computer Science in Two Years?
- I had a lot AP credits coming in.
- I took a UW English class in high school that got me out of school requirements.
- I took CS 61A the summer before I came to Berkeley.
- I was efficient and effective in planning my schedule.