<p>How is the Computer Engineering program at Cal Tech?? Is it one of the best?</p>
<p>If I'm not mistaken Caltech groups together Computer and Electrical Engineering (ECE). According to US News, Caltech is 7th in Electrical Engineering and 11th in Computer Engineering. Honestly though I don't think those ratings mean very much. I also know that all of Caltech's engineering programs are world renowned. I think one of the coolest things about Caltech is that your degree is held in high regard no matter what your major is... Caltech's stringent core curriculum and commitment to high standards of learning make it that way.</p>
<p>Caltech does NOT group together Computer Science and Electrical Engineering. They are two separate majors. There used to be a third, Electrical and Computer Engineering (ECE), but that was taken out when we finally got a Computer Science major.</p>
<p>I'm lazy, so I'm going to copy and paste my reply to a previous thread, where I answered the same question:</p>
<p>The CS department is small but well established (the option, not the department, is new). The course offering has a lot of depth, but not a lot of breadth. This is because we have a few professors who are experts at their area of interest and teach only that. Off the top of my head, we have classes in computer languages, operating systems, compiler design, networking, distributed computing, VLSI and computer architecture, computer vision, and algorithms. Do you know what area of computer science you're interested in?</p>
<p>The classes I've takend tend to be small (<15), taught by dedicated and approachable profs. The department has one of the worst ratio's in the school -- I'm one of two girls out of about 20 senior CS majors. The requirements are flexible -- after sophomore year you can take whichever CS courses you choose. Careful planning is important because classes aren't offered often.</p>
<p>When I realized at the end of freshman year that I wanted to major in CS instead of Math, I considered changing schools. At the time, there was no CS major, though there was the promise of it being added the following year (it was). I knew the department was small and the idea of the greater breadth of classes another university would offer was appealing. I decided to stay here in the end because I felt that the teaching techniques were more important than the classes themselves. There were two major aspects of a Caltech education in general that I felt I wouldn't get elsewhere: </p>
<p>1) I'd be forced to learn how to collaborate with others. Before coming here, my approach was to do the work for the others in my group. By being here I was forced to learn how to ask for help and to learn how to bounce ideas off of someone to come up with a solution together. One of the most satisfying feelings is standing in front of a blank whiteboard with two other people: one person proposes a partial solution, another builds on it, maybe a third points out a case it doesn't work for, the second tweaks the solution to correct it, and so on. At other places I don't think I could have gotten that.</p>
<p>2) I'd learn how to approach impossible problems. On almost any problem set we get, the majority of the problems seem impossible at first. The sets here have taught me different techniques for attacking the problem until the best solution method becomes clear. In the real world, you're not told what approach will work, so it shouldn't be immediately apparent in homework either.</p>
<p>As a final note, I should add that I'm probably below average in the CS program and I'm definitely below the average GPA. However, I found my job search this year incredibly easy. None of the companies cared at all about my GPA, and I wowed them in every interview. (Brain teasers and puzzles are common in CS interviews and I found they came incredibly easy to me, which was definitely not the case before I came to Caltech.) I even had one interview where they didn't test my knowledge at all -- they trusted that being from Caltech was enough of a qualification and spent the entire time trying to sell themselves to me.</p>
<p>I should add one final note, which is more applicable to this thread than the last. The distinction between Computer Science and Computer Engineering is an important one. The former is more theoretical, the latter more practical. We offer the former. When I say this I mean we'll have more algorithms classes, more proof-based classes, and classes taught in obscure academic language. CS 1 is still taught in Scheme (and likely will for a long time) and Jason Hickey's classes usually use OCAML. Classes discussing software engineering or large-scale program building are rare. Classes covering things like databases are non-existent and classes covering networks are not what you're expecting (they are much much more theoretical). The language class is not a survey of languages but a discussion of the different issues languages face, how languages deal with those issues, etc. </p>
<p>Knowing Computer Science makes it very easy to pick up the skills required for Computer Engineering. The reverse is not true.</p>
<p>Alleya, thanks so much for your post. My son is interested in majoring in Computer Science, but neither of us really know what we should be looking for in a computer science program. He aced AP Computer Programming as a high school freshman, but hasn't found local course work to do except a summer course at Columbia in Graphics and Game Programming. (The result of that being that he thinks he's more interested in the kind of work he does freelance - work with databases and website SQL and stuff.) He's shied away from science research opportunities though he's been happy to do programming projects for a couple of biologists. Looking at lists of computer courses is pretty daunting. Languages I've never heard of (he may have) etc. I hate to just pick colleges based on vague reputations about their computer programming departments. (Especially since the only list I know is specifically geared to grad. schools.)</p>
<p>You should look into Carnegie Mellon as well if you haven't already. They have an extensive computer science department with an excellent reputation. Caltech was the best place for me, but Carnegie Mellon might be better for someone who wants a more urban campus, a larger school, and more CS class choices.</p>
<p>I second the CMU recommendation. They have a school for CS, which has about 75-80 students per year. They also have a program in the engineering school. Its better to be part of the CS school and take classes in the eng school, then the reverse. Both majors are CMU's toughest to be accepted into.
There are a lot of other good schools for CS. What else are you looking at?</p>
<p>Carnegie Mellon was my backup for Caltech... I agree, awesome school.</p>
<p>"There are a lot of other good schools for CS. What else are you looking at?"</p>
<p>MIT, Stanford, Berkeley, maybe Harvey-Mudd (we didn't look at it when we were out in CA), maybe Case Western, RPI (Rennsaeler), WPI (Worcester).</p>
<p>I know the latter two emphasize co-ops more than places like Caltech and MIT. But I don't know what strengths or weaknesses of the various programs might be other than that.</p>
<p>Schools which i found best for Computer Science (after a lot of research as i am a going to be CS major)...MIT (combined hardware and theory),Caltech(more theory based),Stanford,Berkeley,Princeton,UIUC,CMU,UMich,UT Austin,University of Washington-Tacoma,Cornell,UW Madison,Georgia Tech.....and as a backup RPI and WPI (mind you that these two schools are mainly good in CS,ECE,and Biotech(for WPI) so if u are not decided what you want to do you'd prolly go to a place which has more good majors</p>
<p>Rice has really good CS and ECE</p>
<p>A guy who's in the computer business in Palo Alto told me he thought UCSD and UCIrvine were particularly strong for computer science even if less well known than Berkeley - particularly if you are in state. He also recommended Rice.</p>
<p>My 1st D is a 3rd year (end of 3rd year) CS major at UCSD. My youngest will be entering CS at UCLA in the fall. In a year or so I'll be able to compare them.</p>
<p>I can tell you that the CS program at UCSD is quite rigorous and I was surprised by the pace of it (and I'm in the software development business). They have a fairly high attrition rate of students switching out into other (easier) majors due to the weeder courses. I guess this is a way to bump up the quality. I expect the same will be true at UCLA and would probably be true at most of the excellent schools mentioned in the previous posts.</p>
<p>Regarding CalTech - it has such a great reputation and high admissions standards that I'm not surprised at all by alleya's comments regarding job offers. It's probably not for everyone though. Harvey Mudd also has a great rep and high admission standards. We decided that UCSD and UCLA's engineering school reputations were great, the engineering schools are more selective than rest of the Uni, and my D's were more interested in the UC environment (again - not for everyone) than a smaller school environment.</p>