Hey guys. I’m a senior, and I’ve pretty much decided on attending Purdue University. I’m not too sure what program or major I want to go into, though. Up until now, I was completely set on computer science. After all, I’d taken a few classes on it and really like programming. My brother just came home from college for the weekend and told me to consider computer engineering.
I realize that the programs probably mean different things at different colleges, but what do you guys think?
I’m the team’s programmer, and I really have fun with that. My question is would computer science or computer engineering be closer to what we do here at first?
In a backhanded way, computer science is more like FIRST, because while there’s a programming component on every robot, most teams don’t do much toward working on electronic hardware design or low-level programming. But “what we do here” isn’t a good metric to make this decision.
In a computer science program at a place like Purdue, you will probably have the opportunity to learn programming from a theoretical perspective. (This will almost certainly involve a non-trivial advanced mathematics component.) It’s not just a matter of coding, but of formally designing and evaluating programs and algorithms. There’s a relatively small amount of time spent on the interface with physical systems.
In computer engineering, by contrast, you’re going to receive a bit of the traditional engineering curriculum, focusing on the design of physical things, in addition to learning about programming. Computer engineering shares a lot with electrical engineering, with an eventual goal of working on the design of computerized hardware. The FPGA that underlies the cRIO is a canonical example of what computer engineers work with—it’s very literally the intersection of hardware and software.
Software engineering incorporates bits of both, and tries to apply an engineering design perspective to software development. In a sense, that means weighing practical factors against the narrower theory of computer science. Of the three, though, it’s probably the best-aligned for a career as a professional software developer (with an eye toward mid-level management, rather than tenured academia). Being an “engineer” rather than just a lowly coder is preferred in some corporate cultures (though the value of that perception is open to debate).
Maybe the easiest thing to do is to check out the upper-year courses in each discipline, and ask yourself which sounds most interesting. Purdue probably publishes a course catalogue online, which should include descriptions.
You may also need to consider where Computer Science fits into the academic structure. In some schools it is in the sciences, along with things like physics and math (or may be a sub-department of the math department). In other schools it may be part of the college of engineering. Computer engineering would be in the engineering school. If the university has separate application procedures for their various colleges (e.g. Arts & Letters, Arts & Sciences, School of Engineering) you may have to apply to change at a later date if you decide to take a different path.
Do you have to choose now? My alma mater had us declare majors halfway through sophomore year. I ended up in the same major as I thought I would, but the extra knowledge made me a lot more comfortable with my decision.
At Purdue, you select your major/program when you send in the application. Computer Science is in the college of sciences, whereas computer engineering is in the college of engineering.
I’ve already sent in my application with computer science selected, but I’m thinking that I’ll probably change that before it’s too late.
Looking at the computer engineering sample course of study, you don’t have to make the decision very soon.
For the freshman and first semester sophomore courses, I think the only ones that you couldn’t make fit both CS and CE would be ENGR 100 Fresh Engr Lectures, ENGR 126 Engr Prb Solv&Cmp Tool, ECE 201 Linear Circuit Anly I , and ECE 207 Elect Measur Technique. Those are only 8 credits which you could make up with 2 summers or only one extra semester. Its likely that the beginning CS courses would cover the programming requirements in the CE degree. Use your science electives in the CS degree to take the physics and chemistry classes that are required for CE.
When you meet with your adviser, make sure to mention that you are considering CE. Bring the CE course of study. Your adviser should help you choose your courses to make either major possible. You should also try to meet with a CE major adviser.
At many schools, CS is a 4 year program with a mix of 15 and 18 credit semesters. Many CE programs would require 5 years unless your a super student and can handle 18 and 21 credit semesters. This concerns college funds and ones ability to tolerate being a college student. Also you should think about your ability to handle the work load. If you take 15 credits a semester and have 3 hours a day of classes, That will in general generate 1 to 3 hours of study time per hour of class time. Are you willing and disciplined enough to put in the time? Do not under estimate how demanding it is to get through a technical degree. If you get accepted with a CS major you can always evaluate after you get a semester or 2. At most schools if you have good grades and are in good standing crossing over into another program is not as hard as many say it is.
I had to make this choice about six years ago, and I chose CE. Why? A few reasons.
I was unsure about whether I’d enjoy working with software or hardware more. With CE, there’s a roughly equal balance of the two at first (and in the later years of the degree, you can choose your electives around what you have discovered to be your preference). Even though I am now a professional software engineer, I feel like my hardware experience has strengthened my math background and made me a better and more well-rounded software guy.
A CE degree is somewhat more versatile than a CS degree. Many of the job postings that look for CS degrees will also consider CE degrees; however, CEs also have access to many traditional EE opportunities.
At my school (RIT), CE was a part of the College of Engineering. CS was not (it was in its own college along with other IT programs). There were some advantages to being part of Engineering (multi-disciplinary projects, a more applied philosophy) that I felt were advantageous.
Wow. That’s pretty much exactly what I needed to hear…
I’ve been pretty set on software development for the past few years…but I guess now that college is getting closer, I’m afraid that a CS degree wouldn’t involve any of the fun stuff we get to do in FIRST. So it sounds like CE is a great balance between the two, hardware and software.
A bit off-topic… Really, is 18 to 21 credits considered a lot? Down here the average was 24.4 credits per semester, for a total of 244 (BSEE). There were semesters with over 30 credits, though. Interesting to see how different things are in different places.
Back on topic…
As you said it yourself, different schools will have different programs. Since no one commented it, I will: Here in our university Comp. Eng. guys will mostly work with lower level programming languages like Assembly and C, whereas Comp. Sci. will mostly work with higher level languages, including scripting ones.
At my school, if you want to go over 18 credits, you have to have an overload form on file. 18 is considered a lot.
Admittedly, the way we calculate credits is 1 credit-hour per 3 hours of expected work, so a 3-day-a-week class is typically 3 credits because you’ll often have 1 hour in class and 2 hours of homework for that class, times three days of class. Not sure if it’s the same in Brazil.
I say screw Purdue, go to Kettering!!! Just from reading your post you will love the CS program, trust me, I know. Plus you learn Java for your first two years, which in case you haven’t been following FIRST news is a supported language next year for the C-Rio. Kettering also has amazing Co-Ops with companies starting Freshman Year (mandatoryish). I’m very biased, I know, but just remember that I chose between Purdue and Kettering, and Kettering is better in so many ways, such as Scholarships.
One credit is approximately one hour of class (50 minutes for undergrad, full hour for graduate school). 30 credits means (approximately) 30 hours in class per week. Homework, although not common, and other extra-class activities are not counted there and are, well, extra-class.
The two-hour-of-study-per-hour-of-class-given tale is told around here too, though it’s not really necessary, except maybe for harder graduate courses.
If homework wasn’t counted, that would actually be about 10 credits here. (noting that it’s a 1 credit/3 hours ratio) Using that calculation, one of our 18-credit loads would come out to about 6 credits of class time in Brazil (the other 12 are homework).
Some examples: a PE course or a lab course at my school is typically 1 credit. The PE course meets 3x/week at 1 hour/meeting, for 3 hours total, no homework. The lab course meets once per week for three hours, minimal prep time. But the main course with that lab meets 3 times a week (one hour at a time) and has about 2 hours of expected homework per meeting, for 9 hours per week (3 credits).
One note: Most professors won’t assign 2 hours of homework per class. Per week, sure, but per class time? Let’s just say they like positive feedback on student surveys. So it’s really more like 2 credits (3 hours for class, 3 for homework), and an 18-credit load like I have now is closer to about 12-13 credit-hours–but plan for 18 anyway and use the free tie to watch a movie.
So Brazil has more class time, and America has more homework. Not sure what that says…