The state of 70
A crosspost of something I wrote on the Berkeley reddit about a controversial class. Probably makes no sense if you do not go to Berkeley.
Hi, I'm Ani, a former TA for 70 and former JM/SM/AM/CM for CS 70. When I was at Berkeley, I thought about 70 a lot, and tried to make change for the better as much I could. A long time ago (3 years ago) I tried to help solve this problem, and got shut down. In this post, I will try to give my thoughts on the course as it stands.
Core Idea: TL;DR 70 as a course could and should be split in two. It won't be until CS is able to scale.
What is the issue with 70?
Generally, there are a few main issues students have with 70.
The course material is challenging
The course gives students a lot of stress.
Students feel they are missing the point of the course
I don't think anyone would have a problem if the course material was challenging if they weren't stressed and they understood why the material was important.
Point 2 is the one that is most discussed. The problem is generally agreed to be that there is too much content in the course, rather than too much workload. This is despite end of course surveys indicating that students spending a lot more time on this course than they "should" on a four unit course. 70 occasionally has no homework options, but at the end of the day understanding content takes too much time .
Point 3 is important, despite the lack of discussion. Why are stable matching and graph theory in a course called discrete math and probability? Isn't it full enough already? Why Berlekamp-Welsh? Computability? Markov chains aren't even taught half the time, and are taught better in 126 anyway.
It all does fit together in a way. I've debated with plenty of people what should and should be included, but students should know why they are learning what they are learning, and how ideas go together. Unfortunately, most people who do figure out how the pieces fit together do so when they are teaching the course.
On a whim, I checked what the stated goals for CS 70 was this semester. Rao tends to start off by explaining how far reaching discrete math and probability are, but he recently added this goal:
"We teach you to think more clearly and more powerfully.
..And to deal clearly with uncertainty itself"
The point of 70 is to expand your way of thinking, and to give you a conceptual understanding of discrete math and probability. The glut of topics in 70 forces students to spend so much time on the material that they are unable to focus on learning how to learn, deeper understanding, or forming an interconnected conceptual map.
A solution I worked on
A long time ago, I guest lectured for a friend's decal called Introduction to Mathematical Thinking. The creator of the course was one of those people who inspires you to your core. Who seems to just, for a moment, break open what you think possible.
We had talked about how 70 sometimes failed students. Although we would never admit it at the time to avoid trouble, the IMT decal was a solution to that: create a course where students had a much slower pace, and worked on a different set of concepts. There was a little overlap with 70, but there was much less content.
The course was roughly three times slower than 70. It was a decal. There were occasional review lectures. It was focused on learning how to learn.
Students really liked it. Demand was through the roof. It got shut down because it gave some students an unfair edge in the declaration process, and admission to the decal was controlled by students.
What is the real problem?
CS at Berkeley is broke. It is criminally underfunded for its size, an issue that countless people have talked about. This leads to the declaration process, which leads to a counterproductive incentive structure for students.
Learning how to learn and learning how you learn dense technical subjects both take time. When you read the notes or go to lecture for the first time, half the lecture might make no sense. This isn't a failure of the lecture / notes, but part of the process. You aren't supposed to go to lecture and understand everything or all the things you are supposed to know, and this is scary. It's hard to start creating a conceptual map of what you know when you don't even know the full extent of what you are supposed to know. It is a skill. It takes time to learn.
Students are not incentivized to do this, because they feel trying to do so would make them fall behind. For most, just understanding what is being said in the lecture or note takes as much time as most other classes. Afterwards, they don't know where to start to create a flexible understanding. With the time they have left they use the skills they learned in other courses: memorize, write everything on your cheat sheet, and copy and paste what is relevant. It tends to be insufficient for homework and tests.
People who retake 70 by using their emergency late drop tend to do much better the second time. Their understanding of the course is deeper than it was the first time because they already have a vague understanding of the material, and are able to spend their time on deeper understanding.
If the department had the funds, they could allow people who didn't make the grade cutoff to retake the course without spending an emergency late drop. They could split the course in two. They could make a CS 10 equivalent for CS 70. Unfortunately, all of these solutions require spending more money per student, and Berkeley EECS does not have that luxury.
As a result, until funding issues are resolved, 70 will stay in an unhealthy state for students.
Counterarguments to various takes I have seen
It is a resource problem: 70 has more resources than many courses in the department. 61A/B have more resources, true, but students already have enough resources to spend >15 hours understanding the material per week. For a course like 70, you should probably be spending roughly half your time understanding the material and half of your time poking and prodding at your understanding, trying to deepen it. Ideally, notes and lecture give understanding where discussions and homework deepen it. In practice, everything but homework is where students learn the material, and they lack the time to deepen it.
More staff would solve the issue. The only area where TA support was ever an issue was peak demand office hours. The reason there is so much demand for office hours the last day is the pace of the course and the lack of depth of understanding students have going in to days of homework. Most OH and discussions are underutilized (see advice below).
If the course was easier people would just procrastinate it for other work. Possibly, maybe even probably. But revisiting concepts and repetition - which is hard to do with the pace of 70 - is essential to learning. And workloads for the course on average exceed the four unit "12 hours per week". I don't think the course should be easier, just that it should be slower. If you procrastinate studying to the last day, you will be in just as much trouble as before.
It prepares students for upper div rigor. 70 is harder than most of the upper divs when you factor in the experience of the people who take it. Many upperclassmen will say that 70 was the hardest course for them when they took it. My roommate took 70 twice and got an A+ in 189. Anecdotal and atypical evidence but true.
Some students want more rigor. If you want a fast pace, take five techs. Your goal is to reach upper divs as fast as possible, so take a course in both the CS61 and EE16 series. To beef up your conceptual understanding skills, take a course in the Physics 5 series. Finally, add a math course on there. I have heard great things about 110. Your courseload will have sufficient rigor even with an easier 70.
Addendum: Actual advice for taking 70
Three years ago (time flies!) I was one of the writers for the CSM worksheets. Here is some advice I wrote back in the day, with edits:
Don't fall behind. Homework will become a miserable experience because you will try to learn and digest content at the same time.
Do make use of resources: join CSM, and come to office hours 2 days or more before the homework deadline.
Experiment with study schedules. I like notes for gist -> lecture -> notes to check understanding -> discussion -> notes to figure out what I thought I understood but didn't -> do hw -> get stuck -> figure exactly what I'm stuck on -> go to OH/ HW Party and and get unstuck -> go back to "do hw"
Do find people to work with, but understand everything on your own. Homework matters too little pointwise for copying to help you.
Mathematical intuition is a fancy word for this process
Understand the problem.
Think of all the techniques you have at your disposal
Try to match the different techniques to the problem based on previous problems you have solved
If one leads to an answer, check if it makes sense
If you are planning on taking this course in the future and want to prepare, try to teach yourself the "gist" of everything now, where you are able to attempt the discussions. Then when you take it, focus on how to tackle problems and how concepts fit together.
Most discussions, at least when I taught, had quite low attendance. Prime time discussions (soon after lecture and in a convenient spot) were highly attended, but my first semester TAing I taught in genetics plant biology the day after. The first day there were only ~10 attendees, and I consistently had 2-3 people for most of the semester. If you are in the course, go to an unpopulated discussion and office hour and try to get the equivalent of conceptual 1 on 1 tutoring. The resource is available, not utilized (at least when I taught).
There is no such thing as "fully understanding." You can teach the course and take grad level content in the area and still have more to learn. Once you think you can wrap your head around a concept, try to find the holes in your understanding, and rinse and repeat. Ask why like an annoying toddler.
You belong here, and every TA and mentor is happy you are taking this course. We hope to see you around!