<p>What's a common freshman CS schedule for someone who's had about 4-5 years of programming experience and who's satisfied all the math requirements (1A, 1B, 54) ? Should I take summer classes and how should I take my breadth courses (spread out across 4 years or all at beginning/end) ? Thanks</p>
<p>Right now my schedule looks like:</p>
<p>Fall:
CS 61A
CS 61B
EE 42
R&C (a)</p>
<p>Spring:
CS 61C
CS 70
R&C (b)
elective/breadth or more CS ??</p>
<p>If you plan to take eight semesters, then you do not have to be in any rush or take summer courses, given that you already have all of the math fulfilled.</p>
<p>CS 61A and CS 61B together is sometimes done by transfer students who have had non-articulated introductory CS courses at their previous colleges; substantial programming experience may apply in your case. But you may want to preview the courses to see what you are getting into: [EECS</a> Course WEB Sites](<a href=“http://www-inst.eecs.berkeley.edu/classes-eecs.html]EECS”>CAS - Central Authentication Service) . Even if you don’t do that, it looks like you can be done with lower division after semester 3, so you have plenty of time to take the upper division CS courses.</p>
<p>B is being taught by Hilfinger in the fall, he’s got a reputation for being tough, though I’ve not had him myself.</p>
<p>I had about 5 years of programming experience when I transferred in a year ago. I took A and BL together over the summer, it was a bit crazy, but that was more from having a ton of labs and projects and summer. Most of my experience with CS had come from high school courses, community college courses, and pet projects… I found the material from 61B (data structures, java, object oriented stuff…) to be the most familiar, A and C I was surprised at how little I had (formally) done before… A goes over a lot of different paradigms, implementing an interpreter, and a couple different types of languages, C focuses more on the internal workings of a computer.</p>
<p>If you wanted to be on the safe side, it might be better to just take one CS61 during Fall (and put another GE requirement or CS70 or something else instead), then double up during Spring if you still want to. That’ll give you a semester to gauge the amount of time classes will take and such, and you’ll have time to do freshman things (like making friends, or sleeping).</p>
<p>Your schedule is going to be really hard, unless you won like a programming competition or something similar.</p>
<p>Hey…even I have a bit of programming experience (7 years) but haven’t taken ANY AP’s…What should I do, will I have to take even the basic stuff…If so, for how long…especially stuff like M1a, P7a and stuff which I have already done in school.</p>
<p>quiverfox: If you’ve not done AP, yes, you’ll need to take Calc 1, Physics, etc. If your highschool course was not AP, chances are it hasn’t covered all the material anyways. As for how long, well, that depends on what you consider “basic stuff”, and what you already know, though at most only the first class in a sequence should be familiar material for you (except maybe 61B, data structures/java).</p>
<p>I am quite familiar with data structures…but its not a waste of time sitting through those classes is it ??</p>
<p>^its probably worth your time unless you already know how each data structure is implemented under the hood and how the methods work under the hood. For example, how to re-heapify a heap or that adding to an ArrayList is considered constant time due to amortized time.</p>
<p>^^ FWIW, I also thought I “knew” data structures since I took the very same class at community college. I also thought 61B with Shewchuk would be a waste of time. Apparently, it almost got me killed (academically), and I learned a lot in his class. I think pretty much every CS class at Berkeley is very unique, and even though you think you know the subject well, it won’t be a waste of time learning them again, especially if you have no choice (Don’t choose to pass out - you will regret later on). There will be a day when you sit down after your technical interview and think, “thank God I took 61B”.</p>
<p>Also, you might want to consider taking the class in the fall with Hilfinger instead. Since you already know the subject, most of your time will be spent working on the projects (which are substantially larger than the projects in the spring) if you would like the challenge.</p>
<p>^ +1 to take Hilfinger from a survivor.</p>
<p>Re: #9</p>
<p>Guess there is a reason why most CC data structures courses are not articulated to CS 61B (or only considered partial coverage, requiring CS 47B to complete CS 61B).</p>
<p>To quiverfox, take a look at the course notes, assignments, and tests found at:
[EECS</a> Course WEB Sites](<a href=“http://www-inst.eecs.berkeley.edu/classes-eecs.html]EECS”>CAS - Central Authentication Service)
See how they compare to your current knowledge.</p>
<p>You can also check old exams for many courses here:
<a href=“https://tbp.berkeley.edu/students/exams/[/url]”>https://tbp.berkeley.edu/students/exams/</a></p>
<p>@ucbalumnus: Well, the unique thing about Shewchuk’s version (not sure about Hilfinger’s) is that every data structure used in his class has to be implemented - either in lecture, lab, or homework. At CC, most professors teach the class by telling students to import java.util.*, or STL templates, to do their projects. When I finished my data structure class in CC, I felt like I knew <em>how</em> to use each data structure, but I actually didn’t know <em>when</em> to use <em>which</em>. I think that’s the most important thing I learned in 61B this past semester.</p>
<p>As a result, I think it’s really important for everyone to go through that class, whether they are noobs or Zuckerberg or people who can write Dijkstra’s algorithm in Haskell with one hand tied and both eyes blindfolded.</p>
<p>sparky, I actually felt the opposite… that I didn’t really learn anything in B that I hadn’t covered in prior courses. At my CC we did have to implement various data structures. I knew most of them, how to implement them, when to use them, and a lot of the related algorithms. A couple things were new (like Dijkstra’s and self-balancing trees), but those were quickly picked up and were only covered for maybe a week. If it hadn’t been such a nice grade booster, I almost wish I could’ve skipped 61B.</p>
<p>Ok…I may need to do this class :)</p>
<p>@sparky</p>
<p>That’s interesting. In Hilfinger’s class we didn’t have to implement any of the data structures (except a quad tree for one project) but I still learned when to use each data structure. Interesting how the two separate teaching techniques give the same result. The implementations were explained during lecture though. Implementing them ourselves in projects definitely would have been helpful though.</p>