The comprehensive guide
|CS 10||CS 61A||CS 61AS|
|Format||Lectures, with regular guest lectures by well-known Computer Scientists; discussions and labs||Lectures; discussions and labs||Lab-centric; discussions|
|Time Commitment||4 units||4 units, but people often say this is their most time-consuming course||Variable, you can take 1-4 units over one or two semesters.|
|Counts toward major?||No. CS 10 does not count toward the CS major||Yes. CS 61A also covers some other majors’ pre-reqs, such as BioE and CogSci.||Yes. 4 units of 61AS is equivalent to any major req that requires 61A.|
|What if I've never programmed before?||CS 10 is designed for students without previous programming experience.||Despite its fast pace, CS 61A has many different avenues for support, including extra review sessions and tutoring.||CS 61AS has an optional “unit 0” (1 P/NP unit of CS 98) designed for a gentler introduction to CS and programming.|
|What programming languages are taught?||Mainly Snap!, and a bit of Python during the last 4 weeks||Python. A bit of Scheme (build a Scheme interpreter) and SQL.||Scheme/Racket. A bit of Python (build a Python interpreter) and Logic.|
|Brief list of topics discussed||
||Very similar to 61A. Instead of databases (SQL), we teach Logic, but the other 95% of concepts are the same.|
|Rough class sizes (as of Fall 2014)||300||1200+||100|
CS10 is, in many ways, unique. A large goal of CS10 is to expose students to many topics of computer science, including graphics, Game Theory, Human-Computer Interaction, distributed computing and some others depending on the semester. There is a sizable discussion about the social aspects of computing and how that affects everyone, which is enjoyable for many students because it’s a different thought process than programming, but is also something that some students may prefer to skip.
CS10 focuses on helping you figure out how to structure programs and solve problems, like any other CS class. The use of Snap! is a really good starting point if you’re unsure about CS or programming but does require some transition to a language like Python, which is done during the final third of CS10. CS10 covers about 85% of topics that CS61A does, but at a bit less depth than 61A. For example, in both classes you learn about recursion and memoization (among many topics) but in CS 61A, you will spend more time analyzing complex recursive functions or implementing memoization whereas CS10 will cover these topics but you won’t be assessed at as deep a level.
People who are motivated by personal creativity will almost certainly find CS10’s personal projects more fulfilling, IMO. CS10 projects certainly give you more free reign, and emphasize the creative aspect of computer science, rather than the technical aspect.
From my experience, there are a nontrivial number of students with no prior programming experience who have a really tough time with 61A. When I say tough, I mean something like “this class takes more time than all the other classes I’m taking combined.”
Programming experience doesn’t really speak to whether or not you’re prepared, it’s more nuanced than that. Once you have programmed for an extended period of time, you develop this resistance to failure (pressing on despite hardship) which is essential to doing well in 61A. That’s what’s really key in being able to handle this class.
“This class is the hardest thing I’ve ever done.” is also a common (but not universal) quip among students with no programming experience. And this is a result not of any single assignment, but the fact that the course is fast paced—there’s a lot to understand and apply, and inherently not enough time to master it all (though taking fewer classes helps).
From this, I would say that whether or not you take this course next semester depends on how you think you would be able to handle a class that may necessarily push your limits and force you confront failure and frustration each week.
- Go through the flowchart/questionnaire, I've put a lot of thought into it.
- If this will be your first semester at Berkeley, try not to do too much. Even if you were valedictorian of your high school with a perfect GPA - there are plenty of students like that in Berkeley. Take an easy first semester to get calibrated to Berkeley, and then you'll have a much better idea of the workload you can manage.