Is Computer Engineering a Good Fit For Me?
February 22, 2008 4:01 PM Subscribe
Given my love of building things, should I change my major from Computer Science to Computer Engineering?
Since I was about 10 I knew I wanted to do something with computers later in life. So when it came time for me to pick a major for college, I chose Computer Science. Now I'm about halfway through my second semester, and pondering a change to Computer Engineering.
Although I didn't really consider this at the time of my choosing, it seems like CS involves a lot of theory and things relating to that--purely software stuff, and much of abstract. I've taken one programming class and am in the middle of a second, and while I enjoy doing this, I don't know that I want to do it at too much of a higher level.
I've always really liked making things; over the summer I did very simple electronics project and enjoyed it quite a bit. I'm really interested in robotics and things of that nature, too. As I get more into CS, I'm kind of realizing that the "abstract-ness" of it is kind of frustrating, because I want to make something that exists in the real world, and actually do something hands-on. I'm the type of person that always has a project of some type going, and now I'm starting to think that's what I'd like to do with my life.
So, my question is mainly if anyone here who has experience with computer engineering could give me an idea of what it's like. My mental image of the major is that I'd definitely have to do some mathematical calculations and logical problem solving to figure out how to do things, and also that I'd have to work some with software, mainly on a firmware level, but that I'd get to build some electronic parts and actually...make things. Is this at all correct, and a good fit for me? If not, what would be?
I realize that I need to speak with an advisor from the college department about this, and I will do so, but I'd love to hear the opinions of AskMe. Thanks!
Since I was about 10 I knew I wanted to do something with computers later in life. So when it came time for me to pick a major for college, I chose Computer Science. Now I'm about halfway through my second semester, and pondering a change to Computer Engineering.
Although I didn't really consider this at the time of my choosing, it seems like CS involves a lot of theory and things relating to that--purely software stuff, and much of abstract. I've taken one programming class and am in the middle of a second, and while I enjoy doing this, I don't know that I want to do it at too much of a higher level.
I've always really liked making things; over the summer I did very simple electronics project and enjoyed it quite a bit. I'm really interested in robotics and things of that nature, too. As I get more into CS, I'm kind of realizing that the "abstract-ness" of it is kind of frustrating, because I want to make something that exists in the real world, and actually do something hands-on. I'm the type of person that always has a project of some type going, and now I'm starting to think that's what I'd like to do with my life.
So, my question is mainly if anyone here who has experience with computer engineering could give me an idea of what it's like. My mental image of the major is that I'd definitely have to do some mathematical calculations and logical problem solving to figure out how to do things, and also that I'd have to work some with software, mainly on a firmware level, but that I'd get to build some electronic parts and actually...make things. Is this at all correct, and a good fit for me? If not, what would be?
I realize that I need to speak with an advisor from the college department about this, and I will do so, but I'd love to hear the opinions of AskMe. Thanks!
EE degree here. I started off in mechanical engineering, moved to computer engineering for a semester, then settled on electrical engineering. If you want to get into electro-mechanical design as a career, I think you have three options as far as degrees go:
1) Computer engineering
2) Electrical Engineering
3) Mechanical Engineering (with some computer science courses on the side as electives)
Unless you want to get into AI I wouldn't go for a computer science degree. Also, electrical engineers and mechanical engineers can be taught to do code, but the reverse is not true of people with computer science degrees. Someone with more knowledge should speak to this claim, but I think most firmware jobs go to people with EE degrees. Some of your decision should come down to the upper level courses (particularly senior level electives) available at your school. Which degree path has the largest number of courses that appeal to you?
Some other notes. EE degrees are fairly abstract as well in that most of the learning is math based. Schools vary quite a bit, but in general, your labs aren't going to teach you how to solder properly or teach you the relative merits of different types of capacitors. You gain that sort of practical knowledge on your own or as an intern (which is where I got it) previous to entering the professional world.
posted by MillMan at 4:25 PM on February 22, 2008
1) Computer engineering
2) Electrical Engineering
3) Mechanical Engineering (with some computer science courses on the side as electives)
Unless you want to get into AI I wouldn't go for a computer science degree. Also, electrical engineers and mechanical engineers can be taught to do code, but the reverse is not true of people with computer science degrees. Someone with more knowledge should speak to this claim, but I think most firmware jobs go to people with EE degrees. Some of your decision should come down to the upper level courses (particularly senior level electives) available at your school. Which degree path has the largest number of courses that appeal to you?
Some other notes. EE degrees are fairly abstract as well in that most of the learning is math based. Schools vary quite a bit, but in general, your labs aren't going to teach you how to solder properly or teach you the relative merits of different types of capacitors. You gain that sort of practical knowledge on your own or as an intern (which is where I got it) previous to entering the professional world.
posted by MillMan at 4:25 PM on February 22, 2008
Another EE here. If you like building stuff, maybe you should just take the plunge straight into electrical engineering. During your labs you'll get to mess around with electronics, programming microchips, robotics, and that sort of thing.
However, as I understand it, working electrical engineers don't actually build stuff most of the time - they're mainly involved in higher-level design. If you really like getting your hands dirty and that sort of thing, you could try Engineering Technology.
posted by pravit at 4:31 PM on February 22, 2008
However, as I understand it, working electrical engineers don't actually build stuff most of the time - they're mainly involved in higher-level design. If you really like getting your hands dirty and that sort of thing, you could try Engineering Technology.
posted by pravit at 4:31 PM on February 22, 2008
I am an EE with emphasis in computers -- roughly equivalent to a Computer Engineering degree.
Based on what you said, I would recommend the computer engineering degree. With that, you can develop hardware, software, or firmware. Having the foundation in physics that you need to get an engineering degree will come in very handy. Having a work-study job or internship is really useful to get a handle on what type of work you want to end up doing as well as the fact that it looks good on your resume.
posted by elmay at 4:32 PM on February 22, 2008
Based on what you said, I would recommend the computer engineering degree. With that, you can develop hardware, software, or firmware. Having the foundation in physics that you need to get an engineering degree will come in very handy. Having a work-study job or internship is really useful to get a handle on what type of work you want to end up doing as well as the fact that it looks good on your resume.
posted by elmay at 4:32 PM on February 22, 2008
CS degree here - follow what you think will make you happiest.
I love building things, but I love software. At one point, I purchased a Galaxian motherboard and with little hardware experience, built the power supply needed to get it up and running. After poring over the schematics for a bit, I had a pretty good understanding of how the game worked and it became clear that there is no difference between software and hardware. It really is the same - just one side of it is more...chippy.
posted by plinth at 5:03 PM on February 22, 2008
I love building things, but I love software. At one point, I purchased a Galaxian motherboard and with little hardware experience, built the power supply needed to get it up and running. After poring over the schematics for a bit, I had a pretty good understanding of how the game worked and it became clear that there is no difference between software and hardware. It really is the same - just one side of it is more...chippy.
posted by plinth at 5:03 PM on February 22, 2008
grammar filter
Don't worry, it's only engineers in here.
posted by Adam_S at 5:34 PM on February 22, 2008 [2 favorites]
Don't worry, it's only engineers in here.
posted by Adam_S at 5:34 PM on February 22, 2008 [2 favorites]
I'd suggest looking at the classes you want to take, and then picking the major that lets you take those classes while satisfying your graduation requirements.
I started as a CSE at a CSE-only school (no straight CS program). I was bored to tears by the non-computer stuff (EE was fine, but Civil Engineering was not at all interesting to me), so I made the switch out of CSE to study more about computers.
I wound up making an individualized major and got to take grad school courses as an undergrad as a result. My grades improved greatly because I was finally studying what interested me.
posted by zippy at 5:37 PM on February 22, 2008
I started as a CSE at a CSE-only school (no straight CS program). I was bored to tears by the non-computer stuff (EE was fine, but Civil Engineering was not at all interesting to me), so I made the switch out of CSE to study more about computers.
I wound up making an individualized major and got to take grad school courses as an undergrad as a result. My grades improved greatly because I was finally studying what interested me.
posted by zippy at 5:37 PM on February 22, 2008
If the CS program at your school has something like a digital hardware option, that might be something to look into. I know a few people who weren't fond of doing high-level CS stuff but had no interest in the kind of typical engineering curriculum stuff that Adam_S referred to. They've mostly been able to get internships working on firmware and such.
A friend of mine had the same concerns that you do when he was in first year CS and decided to switch to EE -- he hates it because EE has far less computing than he'd like, which tends to happen at schools where EE and CE are distinct programs.
posted by thisjax at 6:07 PM on February 22, 2008
A friend of mine had the same concerns that you do when he was in first year CS and decided to switch to EE -- he hates it because EE has far less computing than he'd like, which tends to happen at schools where EE and CE are distinct programs.
posted by thisjax at 6:07 PM on February 22, 2008
Response by poster: Thanks for all the answers so far.
One thing I'm noticing is that on the CE degree plan provided on my university's website shows that a lot of the classes are EE classes--so it kind of looks like I'd be basically getting an EE education with a few computer programming classes thrown in. And I see above where someone said that CE is basically CS and EE put together.
So with a CE degree I'd be much more likely to get a job later on working with hardware, rather than just software? That's my main aim here--while I don't mind programming stuff, I really like to see the results of my actions as they relate to the physical world, and that's something I'm just not feeling with only coding software.
posted by DMan at 7:29 PM on February 22, 2008
One thing I'm noticing is that on the CE degree plan provided on my university's website shows that a lot of the classes are EE classes--so it kind of looks like I'd be basically getting an EE education with a few computer programming classes thrown in. And I see above where someone said that CE is basically CS and EE put together.
So with a CE degree I'd be much more likely to get a job later on working with hardware, rather than just software? That's my main aim here--while I don't mind programming stuff, I really like to see the results of my actions as they relate to the physical world, and that's something I'm just not feeling with only coding software.
posted by DMan at 7:29 PM on February 22, 2008
One thing I'm noticing is that on the CE degree plan provided on my university's website shows that a lot of the classes are EE classes
Yep, I think at most schools "computer engineering" is basically a subset of the engineering degree. My university doesn't offer it, but they just tell people to double major in EE and CS. You can also take a lot of computer architecture courses, which I like, but might be too abstract for you.
So with a CE degree I'd be much more likely to get a job later on working with hardware, rather than just software?
Hmmm. I actually think computer engineering people spend the majority of their time programming stuff, although I could be wrong. You might want to go into straight electrical engineering. If you like building things, specialize in electronics, power, or electromagnetics. I always see those guys in the lab bent over electronic stuff. *shudder*
posted by pravit at 7:50 PM on February 22, 2008
Yep, I think at most schools "computer engineering" is basically a subset of the engineering degree. My university doesn't offer it, but they just tell people to double major in EE and CS. You can also take a lot of computer architecture courses, which I like, but might be too abstract for you.
So with a CE degree I'd be much more likely to get a job later on working with hardware, rather than just software?
Hmmm. I actually think computer engineering people spend the majority of their time programming stuff, although I could be wrong. You might want to go into straight electrical engineering. If you like building things, specialize in electronics, power, or electromagnetics. I always see those guys in the lab bent over electronic stuff. *shudder*
posted by pravit at 7:50 PM on February 22, 2008
Actually, now that I think about it, power probably isn't that great of a choice for a tinkerer. The people at my school doing power are basically doing it so they can stay in the area near their families and get a stable, if boring job at the local power plant.
posted by pravit at 7:52 PM on February 22, 2008
posted by pravit at 7:52 PM on February 22, 2008
CS degree here. My understanding of how the degrees break out is as follows:
CS spans a wide range from pure math (questions about what is computable, counting problems with sets, formal languages, etc..) to practical coding/design stuff. They won't cover low-level electrical things particularly well. At best you'll get a vague overview of how to build switches out of transistors and won't touch the mucky problems that come up when you actually try to build something. Depending on your program you may or may not briefly cover FPGA/logic gate type designs.
CE drops most/all of the pure math aspects. It will give equivalent coverage to coding/design and will cover VLSI stuff much better. You'll do FPGA/circuit design work. There will be some touching of analog circuit designs and analog concerns, but not a whole lot.
Software engineering drops the pure math. It focuses on how to organize a large complicated software system. This is a lot more complicated than it seems and probably not what you want since you aren't satisfied writing software.
EE drops most/all of the coding. EE will teach you analog circuit design well, digital circuit design fairly well, and basically no programming design stuff. There will probably be a few programming courses, but they will be at about the same level as a those for science or other engineering majors (mostly syntax and how to use a particular language to solve some problems instead of underlying theory of programming languages and how to design a complicated piece of software).
As far as what you should do, it kind of sounds to me like you want to be a EE. Computer stuff tends to be ephemeral. Most of the time the physical thing is fixed (either a microprocessor or a FPGA that someone else has made) and what you do is figure out how to use it for your particular problem. If you find coding to be abstract and not satisfying your desire to build 'real' things, I would think you would have the same problem with most CS/CE work. Your interaction with electronics will still be pretty limited since wherever you end up working will probably have you doing design work with the actual building either farmed out to subcontractors or done by technicans.
One field I would suggest you look into if you want to work with robotics/human-scale things is controls. That's the field that deals with robot movement, autopilots, things with feedback loops in general. It's usually shoehorned into the EE department at most schools, though it doesn't really have anything to do with EE. Controls people usually eventually write code (or make simulink models), but their stuff ends up directing meatspace things that you can touch.
posted by Diz at 9:51 PM on February 22, 2008
CS spans a wide range from pure math (questions about what is computable, counting problems with sets, formal languages, etc..) to practical coding/design stuff. They won't cover low-level electrical things particularly well. At best you'll get a vague overview of how to build switches out of transistors and won't touch the mucky problems that come up when you actually try to build something. Depending on your program you may or may not briefly cover FPGA/logic gate type designs.
CE drops most/all of the pure math aspects. It will give equivalent coverage to coding/design and will cover VLSI stuff much better. You'll do FPGA/circuit design work. There will be some touching of analog circuit designs and analog concerns, but not a whole lot.
Software engineering drops the pure math. It focuses on how to organize a large complicated software system. This is a lot more complicated than it seems and probably not what you want since you aren't satisfied writing software.
EE drops most/all of the coding. EE will teach you analog circuit design well, digital circuit design fairly well, and basically no programming design stuff. There will probably be a few programming courses, but they will be at about the same level as a those for science or other engineering majors (mostly syntax and how to use a particular language to solve some problems instead of underlying theory of programming languages and how to design a complicated piece of software).
As far as what you should do, it kind of sounds to me like you want to be a EE. Computer stuff tends to be ephemeral. Most of the time the physical thing is fixed (either a microprocessor or a FPGA that someone else has made) and what you do is figure out how to use it for your particular problem. If you find coding to be abstract and not satisfying your desire to build 'real' things, I would think you would have the same problem with most CS/CE work. Your interaction with electronics will still be pretty limited since wherever you end up working will probably have you doing design work with the actual building either farmed out to subcontractors or done by technicans.
One field I would suggest you look into if you want to work with robotics/human-scale things is controls. That's the field that deals with robot movement, autopilots, things with feedback loops in general. It's usually shoehorned into the EE department at most schools, though it doesn't really have anything to do with EE. Controls people usually eventually write code (or make simulink models), but their stuff ends up directing meatspace things that you can touch.
posted by Diz at 9:51 PM on February 22, 2008
My impression is that most of the jobs for CE majors (chip/hardware design, etc.) have been outsourced, and that most of the people with CE degrees are now looking for more CS-oriented work (programming, software design, etc.)
posted by Afroblanco at 9:53 AM on February 23, 2008
posted by Afroblanco at 9:53 AM on February 23, 2008
Controls is a cool field and saved me from dying of boredom while I completed my EE degree. However, you'll be doing a lot of math (various transforms) and Matlab coding/Simulink modeling but not a whole lot of building things. In my case, I'm much happier sitting in front of a computer than poking around at electronics in a lab, so I liked controls, but YMMV. You do get to do some things like taking a servomotor system and developing a model and control system for it, then controlling it with a joystick or something, which is kind of cool.
If you want to go into robotics, though, you should definitely take some controls classes.
posted by pravit at 10:05 AM on February 23, 2008
If you want to go into robotics, though, you should definitely take some controls classes.
posted by pravit at 10:05 AM on February 23, 2008
I'm a currently a CS major/math minor in my third year of college and I have to say the closest I or anyone I know has gotten to building actual hardware is writing systems-level code. CS, especially as you get further in, is very theoretical and very discrete math oriented. I'm done with all but two of my class requirements (still have units required though) and I've taken exactly zero hardware classes, and in fact I can't think of a hardware class that's even an option except applied stuff like robotics (which would still only be one category of requirements).
If you have any kind of list of classes that fulfill your requirements, take a close look at it and try planning out which classes in each category will be most enjoyable to you, and then plan out a schedule for CE the same way- whichever sounds most appealing to you as a whole will probably be better for you in the long run. Based on my college curriculum, if you don't like the high level discrete math/algorithms stuff, I would say get into something you enjoy more while it's still early.
Good luck in figuring this out!
posted by version control at 8:13 PM on February 23, 2008
If you have any kind of list of classes that fulfill your requirements, take a close look at it and try planning out which classes in each category will be most enjoyable to you, and then plan out a schedule for CE the same way- whichever sounds most appealing to you as a whole will probably be better for you in the long run. Based on my college curriculum, if you don't like the high level discrete math/algorithms stuff, I would say get into something you enjoy more while it's still early.
Good luck in figuring this out!
posted by version control at 8:13 PM on February 23, 2008
« Older Adhering tissue paper in the very best way... | Recharging creative battery in St. Louis Newer »
This thread is closed to new comments.
I have a degree in Comp Eng, and it sounds like to me like you would greatly prefer engineering to comp sci. It will vary by school of course, but during the course of my degree I worked with robotics, built electronic parts, worked with software on a firmware level and "made things".
Of course, keep in mind that engineering is just as full of abstract theory. In fact, the abstract theory may be in areas you're potentially less interested in (thermodynamics, fluid mechanics, etc.) so be prepared.
If you're losing interest in first year, imagine what that will be like by your later years. Comp Eng definitely sounds like a better fit for you.
posted by Adam_S at 4:18 PM on February 22, 2008