CS70 at UC Berkeley during Summer 2019 was the hardest class I've ever taken. It takes centuries of development in Discrete Mathematics and Probability Theory (some theories took decades to prove or refine) and shoves abstract concepts down your throat in a span of 8 weeks.
I believe that there is no other class at Berkeley in which the disparity between the ability of the students in the course is so stark - students range from International Math Olympiad medalists who have years of rigorous contest math experience to beginning computer science students who hate math and just want to declare the major (a pity that this course is required for that purpose). I fall somewhere in the middle, a math-loving CS student with a bit of contest math background, but little experience in formal proof writing or anything beyond basic probability.
French is beautiful |
The course is divided into two parts: Discrete Mathematics and Probability Theory (as can probably be inferred by my previous 2 references to the class title). Each section was covered in a span of around 3 and a half weeks, with the last week being final review and special topics. The only graded materials in the class were distributed as follows - Homework (10%), Midterm 1 (22%), Midterm 2 (22%), Final (45%) and Participation (1%, hell yea!). This meant the time you spent on the course was really up to your own ability - certain people breezed through the problem sets in 5 hours and spent minimal time studying for exams, while others spent upwards of a couple dozen hours on problem sets and another couple for exams (a full-time job, for some!). Homeworks were ridiculously difficult at times, as were some exam problems, but overall I felt the exams were structured to accurately reflect your knowledge of the material based on easier homework problems and discussion questions, as well as conceptual facts from lecture.
Here are a few of my favorite and least favorite topics from each section:
Discrete Math - Favorites:
- Graph Theory (hated graph-coloring, but everything else was super cool especially hypercubes)
- Public Key Cryptography (who knew so much of our lives revolve around prime numbers?)
- Infinity and Uncountability (super unintuitive but fascinating, ex. real numbers between 0 and 1 have the same cardinality as a set of all real numbers)
Discrete Math - Least Favorites:
- Polynomials (Hey, I learned this in Algebra I! Nvm...)
- Self-Reference and Uncomputability (I still love Turing, but I did not understand a single question on this topic)
- Propositional Logic (I thought this was a math course, not a language course)
Probability Theory - Favorites (I mostly just enjoy the names of the mathematicians):
- Geometric and Poisson Distributions (I swear the coolest thing about France are the names of their mathematicians)
- Markov Chains (Drawing pictures on exams actually warrant points!)
- Concentration Inequalities (A love-hate relationship, I thought I hated this topic but then did well on the final exam so now I love it, plus Chebyshev is such a cool name)
Probability Theory - Least Favorites:
- Counting (I thought I knew how to count. I was wrong)
- Joint Probability (One random variable is bad enough, now you add 2??)
- Continuous Probability in General (The mecca of complained-about topics in CS70. Brush up on your Calculus)
Final Verdict:
I probably have never felt as braindead in my life as I did trying completing some of these homework assignments, especially the ones on Concentration and Continuous Probability. The exams show no mercy either, even if it's on a topic as "simple" as counting. However, I also did not get to spend as much time as I wish I could have, really trying to internalize and grasp the material. I strongly believe to build a solid foundation through CS70, it is not worth taking it over the summer. It requires a level of mathematical maturity that is difficult to build up in such a short period of time, especially without formal proof writing experience or well-tuned calculation skills. Visualizing each topic, especially in probability, is TREMENDOUSLY important in developing an intuition for these abstract concepts - a website that really helped me is Seeing Theory.
Most people view this course as an obstacle between them and declaring the CS major, and it is true that the summer version of CS70 is curved more nicely. However, looking back, I would have enjoyed the course a lot more if I had more free time to delve into the topics in my own free time without the pressure of deadlines - the course really is a basis for CS Theory, Security, and Artificial Intelligence, and its beautiful topics should not be ignored.
Comments
Post a Comment