<p>I'm a prefrosh, and I've taken the CS 1 Placement Exam, which I thought was pretty easy. The trouble is that all my programming experience is from Java, and I have never looked at Scheme that is taught here at Caltech. I've taken all the CS courses I could in high school, and have learned all the material covered in CS 1, but I'm not sure if I want to take CS 2 (which I think still uses Scheme) without a solid foundation in Scheme. I've also contemplated the fact that CS 1 has been said to be an intensive load on students who take it. I'm not sure whether to go ahead and take CS 2 if given the chance or to stick with CS 1 and relearn everything in Scheme. Any suggestions or insights?</p>
<p>CS 2 is taught in Java. While Scheme is useful as an introduction to functional languages and for teaching to CS fundamentals, there's no reason to take an extra class just to learn it. Anyways, the text is online, so you can just learn it on your own time. (Scheme would only take a few hours to learn.)</p>
<p>CS 2 is basically worthless. I don't understand why it's still required for CS majors. If you know Java, you can do the course in about two hours of work a week; if you don't, you're going to spend the first half of the course learning it and the second half complaining about it.</p>
<p>Wait, so CS 2 is taught in Java? In that case, I've already learned most of what's taught in CS 2 (I looked at the course catalog and the only thing I haven't quite learned in full detail is graphs). And Pangolin, did you mean that they teach you Java in CS 2?</p>
<p>And any info on CS 3 (though I never did the CS 2 placement exam because I forgot Dijkstra's algorithm)?</p>
<p>No, I meant that you have to know Java to pass the course because that's what the assignments are written in.</p>
<p>CS 3 is supposedly even sillier than CS 2 (although I can't confirm personally) and isn't required or fun, so I recommend that you don't waste time taking it.</p>
<p>Yup yup -- I can't imagine who'd be bored enough to take CS 3.</p>
<p>
I strongly doubt that you know the material covered in CS 1. The material in the first few chapters of SICP (which is what CS1 covers) cannot be taught without a functional language with first-class functions, lexical scope, etc. (There are very few of these in common usage.) So if you don't know Scheme, you cannot have learned this material unless you covered it using some other similar functional language.</p>
<p>However, it's not worth taking the class if you pass out. You can easily learn it on your own using the text.</p>
<p>SICP? Dunno what that is... anyone care to enlighten me?</p>
<p>Structure and Interpretation of Computer Programs
<a href="http://mitpress.mit.edu/sicp/full-text/book/book.html%5B/url%5D">http://mitpress.mit.edu/sicp/full-text/book/book.html</a></p>
<p>I agree with alleya. CS1 was fun for me for the first half of the term, and by the end of the term it had become very painful. About half of the students I asked claimed that CS1 did help them learn fundamental programming skills, but the other half claimed that it was useless. I think it was pretty useless for me. I took CS11 (C track) third term... C and Scheme seem so different to me that I think I could have learned C just the same without the background from CS1. By the way, I had close to no programming experience prior to Tech.</p>
<p>I didn't take CS 1, but with my only prior programming experience being AP Comp. Sci. A (when it was taught in C++) I found CS 11 in C++ to be pretty easy. It seems to me that if you are familiar with some of the principles behind programming, you'll be able to learn a language regardless of whether you take CS 1.</p>