Computer Science major?

<p>I'm a rising senior applying to colleges and it's likely that I'll major in at least one of math, physics, and CS.</p>

<p>Compared to the other schools I'm applying to, Carleton doesn't offer as many upper-division CS courses per term. Of course, this is understandable since Carleton is an LAC and the other schools on my list are medium to large universities. Do CS majors feel restricted at all due to (relatively) few course options, or is the coursework varied enough?</p>

<p>Also, barring any schedule mishaps, I would probably be coming in with knowledge equivalent to CS 111 and CS 201 from the AP CS exam and college classes, in case it makes a difference.</p>

<p>(Hmm, maybe CS 202 and CS 321 as well. We’ll see.)</p>

<p>As a former CS major out of Carleton I may be able to help. Ok first of all the big thing with CS at carleton is that you need to plan out your course a bit more than perhaps a larger college as many of the upper level courses are only offered every other year. That being said. You can get as many as you want in if you plan ahead a little bit. Being done with intro and data structures really as you can jump right into all the other stuff although I would recommend you brush up on your python as that is mostly what they are using for the bulk of the programming in these courses. Anyway as to feeling restricted. I only really felt restricted by the difficulty of taking multiple upper level courses at a time. I was more do I really want to take Data Mining and Computer Graphics at the same time rather than can I. Also a word of advice in choosing. Carleton takes a fairly academic take on Computer Science. If you are interested in grad school that is great, but you pretty much have no option of taking a class in things that use Microsoft technologies. I am unsure if this is the norm, but it can make job hunting a bit tough for the wrong reasons. e.g. Tons of people seem to want C# and IIS experience.</p>

<p>Speaking as a current Carleton CS Major, I can confirm what IceEx said - the CS Major at Carleton is definitely a theory-heavy program. That having been said, if you’ve interested in software engineering, having a strong theoretical background gives you a leg up on the the graduates from straight SE programs. Learning programming languages is easy enough to do on your own; the theory takes time.</p>

<p>As for feeling limited, I’d say that’s hardly been the case in my experience here. It’s true that Carleton doesn’t offer that many upper level CS courses per term, but since we’re a relative small department (5 professors, 14 senior majors, and 33 junior majors), it wouldn’t make sense to offer a ton any given term. Note that this may change in the future, however, because we are a rapidly growing department. As for the electives that are offered, they range from the fairly traditional AI and Natural Language Processing all the way to Evolutionary Computation and Artificial Life (one of my favorite classes I’ve taken here at Carleton). And if there’s something you’re really interested in but it isn’t offered, the profs are quite receptive to suggestions. Case in point, a friend of mine is interested in Cryptography, so she talked to the department chair and got a course offered in Crypto last year. It really struck me when I came here just how accessible the professors are - if I want to, I can stop by my advisor’s office pretty much whenever she’s in and talk about anything, from coursework to internships to evolving cooperative behavior amongst a network of robots (which she is actually researching), to Portal 2.</p>

<p>Programming language wise, only Intro to CS is taught in Python now - the rest of the programming heavy classes in the major are taught in Java. If you don’t know Python yet I’d still learn it - it’s a fun little language, and learning languages quickly is an important skill to have, at least on the SE side of the field. In Programming Langauges (CS 251) you’ll bounce back and forth between Scheme and C, culminating in writing a Scheme interpreter in C from the ground up, and in Operating Systems (CS 332) you’ll be writing C and C++, while maybe hacking a bit on the Linux Kernel (depending on who’s teaching it).</p>

<p>Concerning programming language variety and the lack of Microsoft technologies in the major, I really wouldn’t worry. C# is pretty much just Java (but done the right way), so once you know one the switch to the other is relatively pain-free (personally I’m partial to the CLI languages). And though learning the ins and outs of the language du jour will be helpful in the short-run, five years down the line when there’s a new industry standard, the strong theoretical background from a Carleton CS major will still be with you when you make that jump. As long as you can interview well and demonstrate that you’re talented and can learn quickly, employers recognize this. We’ve got alumni in neat places in the industry (RIM, Microsoft, IBM, Amazon, Apple, and most recently Google, to name a few) who can all attest to this</p>

<p>All in all, I love being a CS Major at Carleton, and I feel that it affords you as a student some particularly unique opportunities (specifically for student-faculty research collaboration) that the larger schools just don’t offer. I hope this helps, and if you’ve got any specific questions I’d be more than happy to answer them.</p>