Welcome to the MacNN Forums.

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

You are here: MacNN Forums > Community > MacNN Lounge > EE or CS?

EE or CS?
Thread Tools
tavilach
Mac Elite
Join Date: Jan 2004
Location: Berkeley, CA
Status: Offline
Reply With Quote
Apr 12, 2006, 01:10 AM
 
It seems that in a week I'll need to decide what path I want to go on in Electrical Engineering and Computer Science (undergraduate level). I've talked to a lot of people, but it's hard to get clear answers out of fellow students and antisocial faculty, so here's my question:

I'm interested, generally, in things that perform cool/innovative tasks, and how to make them. Big shock there! If I were to go the CS route, I'd be learning about software engineering principles, operating systems, good algorithms, etc., and I'd be able to make software that performs cool/innovative tasks for a software company that probably makes cool/innovative software. I probably would enjoy that at some level, and could perhaps start my own software company in a decade, etc.

The issue is that I've always been very interested in tangible things, and I feel that if I just go the CS route, I'll be doing myself a disservice. Let's take a computer mouse, for example. That's a cool invention, and you can't just make it by writing code. I want to be able to at least understand how it works from an EE/CS perspective, and I want to understand how I would make one by myself (if I had unlimited resources). What I don't want to do is to learn more than the basics about electrons and silicon: That's so far deep into the details, and I really could care less. I could learn about signal processing, which is part of most gadgets, but that doesn't give me even close to the big picture view. I understand that all electronics are comprised of silicon and use signal processing, but there's got to be more to it than that: Something has to make it actually work, right? We have a class called "Components and Design Techniques for Digital Systems" which I am planning on taking next semester, but other than that, I'm lost. And I don't even know if I should be taking that!

I think one major issue is that I'm having trouble splitting the EE from the CS. Software is CS: That's obvious. But what about something like a mouse? There's a processor in there, but no software. What about something like a clock? Is the hardware alone actually making these things function properly, or is there a "software" element? If that were/is the case, I'd rather work with existing hardware to make it do want I want, instead of actually making the hardware, just as I don't want to make a computer in order to write some software. I'm much more interested in the "doing a function" than the "making something so it is able to do a function," if that makes sense. Hence my weariness to go near generic circuits of any kind.

Another issue is that everything seems so exciting when the product is done, but each individual part seems kind of tedious. I don't want to just mess with sine waves or silicon: I want to work towards an end goal and see my progress along the way, just as I do with software. I'm assuming that might be impossible with hardware, given the many layers of abstraction. Still, what's the highest level of abstraction that I could mess with? Perhaps that's a good way of phrasing it.

If all gadgets have a "software" component (i.e., setting it up to perform a certain function is its own layer of abstraction), then maybe that's where I'm leaning. If not, then I don't know: I'd really rather not limit myself to intangible creation, i.e. coding, even though I do enjoy it. If I enjoy coding, I should enjoy doing the same thing with something tangible: I just haven't found what that "thing" is.

Perhaps hardware just isn't analagous to software in the least bit, but I'd really like some answers. I would really love to be able to (help) make electronic devices that I could hold, without doing something totally obscure.

I think it would help if I linked to Berkeley EECS course offerings. If what I'm saying makes sense to anyone, could you point me in the right direction regarding my courses? I'm looking at anything that starts with a "1" .

To check out the courses, go here:
http://sis.berkeley.edu/catalog/gcc_search_menu
Select either Computer Science (Engineering) or Electrical Engineering, and hit submit.

Thanks!

P.S. I seriously have exhausted all my resources on this one, and any help would be greatly, greatly appreciated.
( Last edited by tavilach; Apr 12, 2006 at 01:20 AM. )
"Give me a lever long enough and a fulcrum on which to place it, and I shall move the world." -Archimedes
     
goMac
Posting Junkie
Join Date: May 2001
Location: Portland, OR
Status: Offline
Reply With Quote
Apr 12, 2006, 01:28 AM
 
If you don't like Physics or Chemistry, take CS. If you like working with lots of math and physics, take EE.

The EE majors I've met frequently don't know crap about coding. (Apologies to all the EE majors on this board, you have to understand you're being evaluated from a CS major standard, you all seem to have C down pretty good ). EE is not a superset of CS. EE will teach you how to build the computer hardware, and it will teach you just enough programming so that you know what to expect the CS people to do with your hardware.

CS majors on the other hand don't deal with anything physically about the computer. We might have one class on how the computer physically works, but aside from that we work mostly virtually. We see the registers on the processor, but we don't know nor care exactly how they work. We just use whatever the EE people throw at us and nicely write their compilers for them.

I'd say it sounds like you are leaning towards EE. If you want to know exactly how the hardware works you'll probably be disappointed by CS. I'm not a EE (I'm a CS if you haven't figured that out yet ), but be aware EE does not seem to deal with specific computer things. I.E. there is no this is how a mouse works. EE is Electrical Engineering. If you want computer specific you'd be much better suited in Computer Engineering. There really isn't a major that will paint you a picture of how the computer works as a whole, but Computer Engineering might come closer.

When I was first looking at college back in... 8th grade of Middle School? (My mother was overzealous..) I was talking to professors at University of Washington and they suggested I go into Computer Engineering. The payscale was supposedly higher for CE's, but I loved programming too much, so I've always been a CS guy.

Also be aware CS is a hard major. EE and CE are even harder. I don't know any EE or CE guys with social lives. Me and my CS friends have strained social lives.
8 Core 2.8 ghz Mac Pro/GF8800/2 23" Cinema Displays, 3.06 ghz Macbook Pro
Once you wanted revolution, now you're the institution, how's it feel to be the man?
     
goMac
Posting Junkie
Join Date: May 2001
Location: Portland, OR
Status: Offline
Reply With Quote
Apr 12, 2006, 01:32 AM
 
Upon re-reading your post I'm not sure if EE is right for you. It sounds like CE would be your sweet spot though.
8 Core 2.8 ghz Mac Pro/GF8800/2 23" Cinema Displays, 3.06 ghz Macbook Pro
Once you wanted revolution, now you're the institution, how's it feel to be the man?
     
tavilach  (op)
Mac Elite
Join Date: Jan 2004
Location: Berkeley, CA
Status: Offline
Reply With Quote
Apr 12, 2006, 01:34 AM
 
Remember, I know the level of difficulity of the classes. I've been here for two years, taking all the fundamentals. Also, it's all the same major at Berkeley, so I can pick and choose. The problem is just that I don't know what courses to choose.

[Sorry if the above sounds at all condescending. That's not my intention at all, and I appreciate the help.]

I know that CS is all about software, and I do find that very interesting. I'm really not interested in how a computer (i.e. a PC) works, since the software is a higher level of abstraction. But as for a little gadget that does a specific function, I'm trying to figure out what the highest level of abstraction is, because that's what I'd want to be doing. That, or software for standard computers. Or both. Sigh

Re CE: Does CE apply to any digital system? You see, I wouldn't be interested in CE for PC's, since there's programming, and that's the highest level of abstraction (the software makes it do its specific functions). But for other things (specific gadgets), if CE is the highest level of abstraction, the stuff that actually makes it do what it does, then perhaps that'd be interesting.
"Give me a lever long enough and a fulcrum on which to place it, and I shall move the world." -Archimedes
     
goMac
Posting Junkie
Join Date: May 2001
Location: Portland, OR
Status: Offline
Reply With Quote
Apr 12, 2006, 01:38 AM
 
Originally Posted by tavilach
I know that CS is all about software, and I do find that very interesting. And I'm really not interested in how a computer works, since the software is a higher level of abstraction. But as for a little gadget that does a specific function, I'm trying to figure out what the highest level of abstraction is, because that's what I'd want to be doing. That, or software for standard computers. Or both. Sigh.
Depends. In CS you learn C which is accepted about everywhere. You also learn assembly, so you can code for those little devices.

If you're interested in little gadgets, I still suggest CE.

What classes have you already completed? What is your programming experience?
8 Core 2.8 ghz Mac Pro/GF8800/2 23" Cinema Displays, 3.06 ghz Macbook Pro
Once you wanted revolution, now you're the institution, how's it feel to be the man?
     
goMac
Posting Junkie
Join Date: May 2001
Location: Portland, OR
Status: Offline
Reply With Quote
Apr 12, 2006, 01:44 AM
 
Originally Posted by tavilach
Re CE: Does CE apply to any digital system? You see, I wouldn't be interested in CE for PC's, since there's programming, and that's the highest level of abstraction (the software makes it do its specific functions). But for other things (specific gadgets), if CE is the highest level of abstraction, the stuff that actually makes it do what it does, then perhaps that'd be interesting.
CS and CE don't target any type of computer. We code. Plan and simple. I could program a lawnmower with a MIPS processor and I wouldn't care (and I really could do that).

Each major is about doing something extremely well. CS people can code better than CE's or EE's. CE's and EE's can build computers much better than a CS person can. CE's just take more computer classes than a EE.

I think you're going about this the wrong way. No major teaches very many specifics. For programming in a CS major I work on a UNIX command line. There is no Mac, Windows, Linux, Lawnmower, whatever, it's just you and code. You don't care what it runs on really.

Don't look at it in terms of abstraction, look at it in terms of what you enjoy doing. Colleges teach generalities. Your future career will teach you specifics.
8 Core 2.8 ghz Mac Pro/GF8800/2 23" Cinema Displays, 3.06 ghz Macbook Pro
Once you wanted revolution, now you're the institution, how's it feel to be the man?
     
jamil5454
Mac Elite
Join Date: Oct 2004
Location: Downtown Austin, TX
Status: Offline
Reply With Quote
Apr 12, 2006, 02:15 AM
 
I went through the exact same dilema as you, tavilach. At first I though I wanted to do CS but I realized I like making tangible things, too. So I decided on CE. Lucky for me, UT Austin is the 7th best school in the nation for CE.

Keep in mind that CE encompasses software engineering as well (at least here), so I think it would fit you well.

I would major in astronomy or aerospace physics/engineering but judging from the recent statistics, there's more easy money to be made dealing with technology.
     
veryniceguy2002
Senior User
Join Date: Nov 2002
Location: Australia
Status: Offline
Reply With Quote
Apr 12, 2006, 07:48 AM
 
It's a more difficult choice in US I think. It's slightly easier in Australia: CS is a three year course, whereas EE or CE is a four year course.

Well, I haven't heard anything that graduates from EE or CE prevented from doing software engineering for work. Whereas CS graduate isn't as easy to do hardware work.

BTW if you think you just want to code, code and code the best software and make $$$ straight away, the best option might to to drop out from college (like Bill Gates) and start your own software business right now. Software engineering is more than just coding... there's a lot of design and analysis and testing. It's mroe than just coding.

BTW I did EE (actually EEE)
     
Millennium
Clinically Insane
Join Date: Nov 1999
Status: Offline
Reply With Quote
Apr 12, 2006, 09:23 AM
 
The important thing to realize is that CS is the software side of things, and EE is the hardware side. Although they are closely related, there is surprisingly little actual overlap. What I would suggest is that if possible, you should major in one and minor in the other. This will give you most of the best of both worlds. From your descriptions, you sound as though you would probably be happier with an EE major and a CS minor.

The one thing I would suggest in addition to this is that if your school's CS department offers courses in algorithms and programming language concepts (not individual languages, but the concepts behind them), do whatever you have to do to get into these classes. I majored in CS myself, and out of all the classes I took these two classes were by far the most useful. Between the things you learn in these two classes, you should then find it much easier to pick up new languages and techniques.
You are in Soviet Russia. It is dark. Grue is likely to be eaten by YOU!
     
mindwaves
Registered User
Join Date: Sep 2000
Location: Irvine, CA
Status: Offline
Reply With Quote
Apr 12, 2006, 09:26 AM
 
CS + EE = CE... Computer engineering takes the both of best world. It does hardware and software.

If you are going to major in one and minor in the other, then I believe the only route to take (at least in my school) is to major in EE and minor in CS since they do not offer a minor in EE (and they might not even offer a minor in CS either).

However, some schools like mine offer CSE courses which are Computer Science and Engineering courses which are almost identical to CE courses except with a little more emphasis on programming.
     
G4ME
Addicted to MacNN
Join Date: Dec 2000
Location: Maine
Status: Offline
Reply With Quote
Apr 12, 2006, 09:29 AM
 
software is for sissies

As a current Junior EE, worrying about the chemistry and physics of semi conductors is rather trivial, we only spent little less then a semester on how a Diode BJT MOSFET work and then the rest on how to implement them.

One thing that can't be over stated is the knowledge and devotion to the program, it will consume you
( Last edited by G4ME; Apr 12, 2006 at 09:55 AM. )

I GOT WASTED WITH PHIL SHERRY!!!
     
tavilach  (op)
Mac Elite
Join Date: Jan 2004
Location: Berkeley, CA
Status: Offline
Reply With Quote
Apr 12, 2006, 08:47 PM
 
Originally Posted by goMac
Depends. In CS you learn C which is accepted about everywhere. You also learn assembly, so you can code for those little devices.

If you're interested in little gadgets, I still suggest CE.

What classes have you already completed? What is your programming experience?
But how can you code for something really trivial, like a mouse? There'd be no coding for that, right? Even in assembly? Or would there be?

I've completed EE 40 (microelectronic circuits), EE 20 (signals and systems basics), CS 61A (fundamentals, Lisp stuff), CS 61B (data structures) and CS 61C (machine structures). 61C took us from C to registers and logic gates, so I definitely have a grasp on those layers of abstraction, and I have MIPS assembly down cold.

I've coded in Java, C, C++, PHP, SQL, Scheme/Lisp, MIPS Assembly and MATLAB.

I enjoy coding, but I'm trying to figure out if there's something I would enjoy more. But honestly, if all these little gadgets need software to run them, then I'd probably be happy writing software for them. That might produce something tangible to the extent I'd want.

Important Note to Everyone: This isn't a question about what I should major in. The major is EECS at Berkeley. You do what you want within the EECS major. For example, CS 150 is very CE'ish. EE 120 is very EE'ish. CS 170 is very CS'ish. And I can take whichever ones I want. I just need to know which ones .

We don't have too many CE'ish classes, so it would make sense for me to take the two they offer, plus CS courses. Would this allow me to say, work on developing such-and-such new gadget at such-and-such company?

Critical Question: What gadgets do what they do because of the code they run, and what gadgets do what they do because of the way they're wired? I know that PC's do what they do because of the software. But again, I repeat the example of a mouse. What makes it do what it does (i.e. the most abstract level of functionality)? Is there assembly code, or...

Thanks for all the help, guys! Keep responding .
"Give me a lever long enough and a fulcrum on which to place it, and I shall move the world." -Archimedes
     
goMac
Posting Junkie
Join Date: May 2001
Location: Portland, OR
Status: Offline
Reply With Quote
Apr 12, 2006, 09:09 PM
 
Originally Posted by tavilach
But how can you code for something really trivial, like a mouse? There'd be no coding for that, right? Even in assembly? Or would there be?

I've completed EE 40 (microelectronic circuits), EE 20 (signals and systems basics), CS 61A (fundamentals, Lisp stuff), CS 61B (data structures) and CS 61C (machine structures). 61C took us from C to registers and logic gates, so I definitely have a grasp on those layers of abstraction, and I have MIPS assembly down cold.

I've coded in Java, C, C++, PHP, SQL, Scheme/Lisp, MIPS Assembly and MATLAB.

I enjoy coding, but I'm trying to figure out if there's something I would enjoy more. But honestly, if all these little gadgets need software to run them, then I'd probably be happy writing software for them. That might produce something tangible to the extent I'd want.

Important Note to Everyone: This isn't a question about what I should major in. The major is EECS at Berkeley. You do what you want within the EECS major. For example, CS 150 is very CE'ish. EE 120 is very EE'ish. CS 170 is very CS'ish. And I can take whichever ones I want. I just need to know which ones .

We don't have too many CE'ish classes, so it would make sense for me to take the two they offer, plus CS courses. Would this allow me to say, work on developing such-and-such new gadget at such-and-such company?

Critical Question: What gadgets do what they do because of the code they run, and what gadgets do what they do because of the way they're wired? I know that PC's do what they do because of the software. But again, I repeat the example of a mouse. What makes it do what it does (i.e. the most abstract level of functionality)? Is there assembly code, or...

Thanks for all the help, guys! Keep responding .
As I said, college doesn't teach you specifics. A mouse has to be built by a EE, and then the driver has to be written by a CS major based on what the EE has built. A CE major can do both. However, in your courses no where will it be mentioned "This is exactly how to build a mouse" or "This is how to write a mouse driver". They may say something like "What I just taught you is kind of like how a mouse works" or "Other examples of drivers are mouse drivers", but again, a college doesn't teach you how to code or build specific things. This is left up to you in your career.

I could code a mouse driver on any platform, assuming that the EE guy who designed the mouse gives me the specifications. Your job as a CS major is to decide the best way to code the mouse support, rather it be in assembly or C, in the firmware of the machine, or in the OS. This isn't something directly taught to you, rather it's assumed your experience coding more academic things will help in this decision.

If you're looking for a program that's going to teach you how a specific platform works (I'm including computer with mouse as a specific platform) you're going to be sadly disappointed. CS majors, for example, don't assume the code they write will even be run on a computer. My code might be running in some sort of embedded device without input. In a CS class (aside from Java), I've never written a program that takes mouse input.

I think what you're looking for is a program that takes everything you already know and combines it into "Let's use it all to build an entire computer!". Keep in mind most of the people who enter CS programs have little to know programming experience. You will be studying different data structures, logic in programming, and the math behind programming, and network optimization, and such. You're be studying theory and design practices, but you won't be studying actual designs.

My experience in CS has been refining a lot of what I already knew. If you're looking to learn how actually produced computers work, I'd say either work with your college to try and get an internship for credit, or get out of college and into the industry. I'm staying in because the company I'm looking to join favors college graduates.
8 Core 2.8 ghz Mac Pro/GF8800/2 23" Cinema Displays, 3.06 ghz Macbook Pro
Once you wanted revolution, now you're the institution, how's it feel to be the man?
     
davesimondotcom
Addicted to MacNN
Join Date: Apr 2001
Location: Landlockinated
Status: Offline
Reply With Quote
Apr 12, 2006, 09:09 PM
 
Definitely major in Modern Dance.
[ sig removed - image host changed it to a big ad picture ]
     
tavilach  (op)
Mac Elite
Join Date: Jan 2004
Location: Berkeley, CA
Status: Offline
Reply With Quote
Apr 12, 2006, 09:21 PM
 
Originally Posted by goMac
As I said, college doesn't teach you specifics. A mouse has to be built by a EE, and then the driver has to be written by a CS major based on what the EE has built. A CE major can do both. However, in your courses no where will it be mentioned "This is exactly how to build a mouse" or "This is how to write a mouse driver". They may say something like "What I just taught you is kind of like how a mouse works" or "Other examples of drivers are mouse drivers", but again, a college doesn't teach you how to code or build specific things. This is left up to you in your career.

I could code a mouse driver on any platform, assuming that the EE guy who designed the mouse gives me the specifications. Your job as a CS major is to decide the best way to code the mouse support, rather it be in assembly or C, in the firmware of the machine, or in the OS. This isn't something directly taught to you, rather it's assumed your experience coding more academic things will help in this decision.

If you're looking for a program that's going to teach you how a specific platform works (I'm including computer with mouse as a specific platform) you're going to be sadly disappointed. CS majors, for example, don't assume the code they write will even be run on a computer. My code might be running in some sort of embedded device without input. In a CS class (aside from Java), I've never written a program that takes mouse input.

I think what you're looking for is a program that takes everything you already know and combines it into "Let's use it all to build an entire computer!". Keep in mind most of the people who enter CS programs have little to know programming experience. You will be studying different data structures, logic in programming, and the math behind programming, and network optimization, and such. You're be studying theory and design practices, but you won't be studying actual designs.

My experience in CS has been refining a lot of what I already knew. If you're looking to learn how actually produced computers work, I'd say either work with your college to try and get an internship for credit, or get out of college and into the industry. I'm staying in because the company I'm looking to join favors college graduates.
Let me rephrase: I'm looking to learn certain core principles about the way things work in general. I'm finishing my second year, and I know that college doesn't teach specifics. But I'd want to be able to think of applications in my mind. I could care less about how a mouse actually works: It's just an example that I'm using to try to figure out where I lie on the EE/CS spectrum. College won't teach me the specifics, but it will teach me what I need to know to be able to learn the specifics.

Regarding the mouse example, what I want to know is: Did an EE guy design the mouse, or was it a CE guy, and what does designing that mouse entail in the above-the-silicon-abstraction-layer realm? Does the mouse itself have an embedded processor that runs code? Are there logic gates that are telling the mouse what to do?

I'm very confused about the software/hardware dividing line. Theoretically, can't everything be implemented with logic gates? Obviously that's not the case, so what is implemented with logic and what is saved for code (in a gadget)?

Again, I don't expect to learn this stuff, but I want to know where my interests lie so I at least learn relevant material.
"Give me a lever long enough and a fulcrum on which to place it, and I shall move the world." -Archimedes
     
tavilach  (op)
Mac Elite
Join Date: Jan 2004
Location: Berkeley, CA
Status: Offline
Reply With Quote
Apr 12, 2006, 09:23 PM
 
Originally Posted by davesimondotcom
Definitely major in Modern Dance.
Well, I am involved in theater, and I would double in it if it wasn't impossible to become a film actor! I think I look funny enough to get some parts, and I'm a good actor, but the possibilities seem non-existant.
"Give me a lever long enough and a fulcrum on which to place it, and I shall move the world." -Archimedes
     
goMac
Posting Junkie
Join Date: May 2001
Location: Portland, OR
Status: Offline
Reply With Quote
Apr 12, 2006, 09:32 PM
 
Originally Posted by tavilach
Let me rephrase: I'm looking to learn certain core principles about the way things work in general. I'm finishing my second year, and I know that college doesn't teach specifics. But I'd want to be able to think of applications in my mind. I could care less about how a mouse actually works: It's just an example that I'm using to try to figure out where I lie on the EE/CS spectrum. College won't teach me the specifics, but it will teach me what I need to know to be able to learn the specifics.

Regarding the mouse example, what I want to know is: Did an EE guy design the mouse, or was it a CE guy, and what does designing that mouse entail in the above-the-silicon-abstraction-layer realm? Does the mouse itself have an embedded processor that runs code? Are there logic gates that are telling the mouse what to do?

I'm very confused about the software/hardware dividing line. Theoretically, can't everything be implemented with logic gates? Obviously that's not the case, so what is implemented with logic and what is saved for code (in a gadget)?

Again, I don't expect to learn this stuff, but I want to know where my interests lie so I at least learn relevant material.
A marketing droid came up with the idea of the mouse probably, or some sort of design person. They drew a picture of the mouse and how it would work in theory. They then passed this on the the EE and CS engineers. A EE most likely built the mouse, and a CS guy most likely designed the software to work with the mouse. A CE guy could do both, but his hardware wouldn't be as refined as the EE's hardware, and the CE guy's software wouldn't be as refined as the CS guy's software. If the CS guy decides that the code should be stored on the mouse, he gives feedback to the EE guy who throws on some more chips, and then the CS guy writes the driver for the mouse. As the mouse was being debugged the EE and CS people would talk about how to fix problems.

The problem is if you are a EE you don't do the software. If you are CS you don't do the hardware. Neither gets involved in the other's realm unless you are having a problem. A CE major could do both, but in practice, a CE major usually does only hardware or software. Being a CE just means that he can more easily understand what is going on on the other end, and he has better job security because if his hardware job gets cut he can switch to software.

In real life the mouse driver is stored on the computer. There is a processor on the mouse probably running some code flashed in a rom that does the math to figure out how far the mouse has moved based on input and sends that data over the cable (this was also probably written by the CS guy, but the EE guy probably decided what chips to use and what size ROM to use). Not all devices work this way though.

It sounds like your school is basically doing EE with Computer Track, which personally I don't consider as good as a CE program.

You shouldn't be choosing a program based on what would be "most useful" or teach you "the most things." Choose what you love doing. That's why I chose CS.
8 Core 2.8 ghz Mac Pro/GF8800/2 23" Cinema Displays, 3.06 ghz Macbook Pro
Once you wanted revolution, now you're the institution, how's it feel to be the man?
     
The Godfather
Addicted to MacNN
Join Date: Dec 1999
Location: Tampa, Florida
Status: Offline
Reply With Quote
Apr 12, 2006, 10:55 PM
 
If you want to get into gadget development, I think that you have to choose what programming courses will get you there. Avoid web stuff and application stuff in CS. Take more embedded systems and hardware drivers courses (if not found in your school, buy a book). Avoid power systems and consulting in EE as they have nothing to do with gadgets. Take more electronics, circuit design, PCB design.

Take all the math your heart desires.
     
skipjack
Dedicated MacNNer
Join Date: Oct 2000
Status: Offline
Reply With Quote
Apr 13, 2006, 07:12 PM
 
Originally Posted by goMac
The problem is if you are a EE you don't do the software. If you are CS you don't do the hardware. Neither gets involved in the other's realm unless you are having a problem. A CE major could do both, but in practice, a CE major usually does only hardware or software. Being a CE just means that he can more easily understand what is going on on the other end, and he has better job security because if his hardware job gets cut he can switch to software.
I think that's a gross generalization. My school offers EE, CS, and CE. I chose EE with a CS minor. But really, I could have graduated with a CE and CS minor or with an EE and a CS minor. The only difference in the programs was the senior project, but I completed that a couple of years before I finished, so I was locked into EE.

The HW and SW emphasis sometimes depends on the instructor. For example, I took EECS40 during the summer with Alessandro Pinto. Based on the course materials on the web, I can tell that his emphasis was markedly different from the professors who usually taught the course. (The regular session seemed to deal more with layout, and we didn't cover that during the summer.)

Berkeley's emphasis seems to be on MOSFETs and digital. For that reason my impression is that I'd tend toward the CS courses at Berkeley if I had a choice. I'd certainly agree with taking courses on algorithms and the principles behind software development.

However, if you really like assembly, perhaps EE would be better. Having taken assembly classes from the EE and the CS department, these days EEs seem to be more concerned with program size, speed, and efficiency. CSs program in assembly to a higher level of abstraction with an emphasis on data structures. Perhaps these days, people rely on the compiler to optimize code for speed.

Of course, things are probably different in industry and on the graduate level than on the undergraduate level. Things seem to be more integrated in the EECS department at Berkeley. As I said, I took assembly courses from the CS department (->MIPS) and from the EE department (->embedded). I don't need to tell you that at Berkeley your EECS 61 sequence is required for everyone.

Having given those probably useless reflections on the subject, I would make sure you get advice from some people in industry who might have feelings on what they should have done instead of what sounds logical. (But you'll probably get different opinions from those in small companies than those working in large corporations.)

P.S. I agree with avoiding power systems unless you want to get into that industry. I took some of those courses to fill out my schedule to find out what I was missing (since in my school, most people tend toward an emphasis in power) and kind of wish I hadn't taken the time.

Also, one thing I didn't see among the things you mentioned is LabVIEW. It's applications programming (graphical programming connecting boxes) rather than coding, but I've been asked about it in various interviews (Lawrence Berkeley Lab and Apple, for example).
( Last edited by skipjack; Apr 13, 2006 at 07:19 PM. )
     
itai195
Addicted to MacNN
Join Date: May 2001
Location: Cupertino, CA
Status: Offline
Reply With Quote
Apr 13, 2006, 08:07 PM
 
Having recently graduated from the same program you're in, my opinion is: don't make too big a deal out of this. Just choose a program and take whatever classes you're interested in. You end up with the same degree regardless, and they don't force you to take any classes you don't want to take. Frankly I don't know why they ask people to choose a program option to begin with. If you focus on hardware, in today's world it's very likely you'll end up writing code anyway (e.g. Verilog). And if you're worried you'll regret your choice some day, remember that you're looking to work in a field where many people are self-educated -- think about that.

In your case, it sounds like you ought to at least take one of the 150 series classes as those are essentially computer engineering courses. These sound like exactly the right courses for you. They'll teach you how gadgets and other computer systems are built. You'll probably find you already had much of the fundamental knowledge to this, just not the experience to know how/where to begin. Caveat: I didn't take any 150 courses, so talk to someone who has to see what you're in for. You probably should take some of the fundamental software courses too, especially CS 162 Operating Systems, which should be a required course for everyone (easily the most useful course I took in undergrad). After a semester or two of those, you will have a better idea what to focus on. I'd echo what others said -- it sounds like the more applications-based and theory courses (series CS 170 and CS 180) probably aren't going to be of much interest to you... Another personal recommendation: avoid CS 184, this was the worst course I took at Berkeley even though we did make a cool final project.

In my case, I went the computer science route because frankly, much as I like math and physics, I hated my hardware courses. I found software much more interesting. Just the same, I took one extra EE course -- EE 120 -- because I thought it would be useful knowledge (hasn't been).
( Last edited by itai195; Apr 13, 2006 at 08:46 PM. )
     
goMac
Posting Junkie
Join Date: May 2001
Location: Portland, OR
Status: Offline
Reply With Quote
Apr 14, 2006, 12:20 AM
 
Originally Posted by skipjack
However, if you really like assembly, perhaps EE would be better. Having taken assembly classes from the EE and the CS department, these days EEs seem to be more concerned with program size, speed, and efficiency. CSs program in assembly to a higher level of abstraction with an emphasis on data structures. Perhaps these days, people rely on the compiler to optimize code for speed.
I disagree completely. I think CS majors are much more passionate about code than EE majors, and are much more creative in how they write it. I've seen EE majors write decent to good assembly that gets the job done, but it always seems to be the CS majors who do something crazy awesome and efficient in code. CS majors also frequently work in higher languages because it allows us to be more creative with our code. Most C compiles are just as fast as assembly code, which is why most OS's are written in C. I think EE majors don't use C because they few code as a tool and go for efficiency. CS majors few programming as an art, and they go for efficiency through creativity.
8 Core 2.8 ghz Mac Pro/GF8800/2 23" Cinema Displays, 3.06 ghz Macbook Pro
Once you wanted revolution, now you're the institution, how's it feel to be the man?
     
skipjack
Dedicated MacNNer
Join Date: Oct 2000
Status: Offline
Reply With Quote
Apr 14, 2006, 12:53 AM
 
Originally Posted by goMac
I disagree completely. I think CS majors are much more passionate about code than EE majors, and are much more creative in how they write it..
Well, maybe it depends on the program and what type of people they attract. (Note that the paragraph you quoted was referring to assembly code only.) In our CS department, I know of only one student who prefers to code in assembly, and he was employed in the field prior to returning to school. Some EEs prefer assembly because, in general for class projects, they deal only loops basic loops and don't want the bother of learning a higher level language or don't want to buy the IDE for a particular microcontroller. I think we're trying to compare computer programming and embedded programming, though, and are off on a tangent as far as deciding on an undergraduate concentration.
     
ghporter
Administrator
Join Date: Apr 2001
Location: San Antonio TX USA
Status: Offline
Reply With Quote
Apr 14, 2006, 10:02 AM
 
I spent a lot of time in the ONE required hardware class in my CS program explaining hardware to my classmates. I came from the technician side, I was at the time teaching hardware maintenance, and thus found it easy to help them out. But what I noticed was that there is a significant overlap between basic programmatic logic and hardware logic. It was kind of an amazing epiphany, actually.

Note that a LOT of schools expect CS majors to minor in math. I skirted this by going for a "broadening" minor, mainly because it was about 8 years since I'd had calculus II, and the math minor required calculus through differential equations... YUCK!

I worked with an EE who had started out with Texas Instruments and learned their "dirty secret." They (and many other hardware companies) expect an EE to stay "current," a state that is undefined except for a simple metric: if you've been out of school for over six years, you probably aren't. They regularly disposed of EEs who weren't on a management track after seven years, based on this... That helped me decide which degree to go for!

Just my 2¢...

Glenn -----OTR/L, MOT, Tx
     
Doofy
Clinically Insane
Join Date: Jul 2005
Location: Vacation.
Status: Offline
Reply With Quote
Apr 14, 2006, 10:18 AM
 
Choose whichever one is the most unpopular with your peers. That way, you can avoid having to stand next to them in the dole queue when they find out that the most popular professions are way oversubscribed.
Been inclined to wander... off the beaten track.
That's where there's thunder... and the wind shouts back.
     
el chupacabra
Mac Elite
Join Date: Apr 2001
Status: Offline
Reply With Quote
Apr 14, 2006, 05:16 PM
 
computer engineering is a cross between ee and cs. May want to consider that. EE is lots of calc, differential equations, circuits and what not. It will consume your life. In your upper level classes all your work will be done in teams. Prepare to stay up many late nights. People who work alone fail. Everyone in all your classes will be a bunch of nerdy magic playing 'guys'. You probably shouldn't take this if you don't like math or if it doesn't come easy to you. You will need to maintain about a 3.2 to qualify for most jobs. plus side: this pays very good.

Cs is probably more fun. You must be good a problem solving. the cool thing is there is no one right answere to writing a program you and many other people can make different programs and compare them for the best features. I find it fun to constantly optimize algorithms. CS is easyer than EE but pays much less and jobs are harder to find. Again you will be working with a bunch of nerdy guys.

oh one more thing if you don't like what your doing no matter how easy it is you will fail... so maybe you just want to choose something you like. dont base your decisions on how much something pays as much
     
tavilach  (op)
Mac Elite
Join Date: Jan 2004
Location: Berkeley, CA
Status: Offline
Reply With Quote
Apr 15, 2006, 09:10 PM
 
Originally Posted by goMac
A marketing droid came up with the idea of the mouse probably, or some sort of design person. They drew a picture of the mouse and how it would work in theory. They then passed this on the the EE and CS engineers. A EE most likely built the mouse, and a CS guy most likely designed the software to work with the mouse. A CE guy could do both, but his hardware wouldn't be as refined as the EE's hardware, and the CE guy's software wouldn't be as refined as the CS guy's software. If the CS guy decides that the code should be stored on the mouse, he gives feedback to the EE guy who throws on some more chips, and then the CS guy writes the driver for the mouse. As the mouse was being debugged the EE and CS people would talk about how to fix problems.
Being that "sort of design" person would also interest me a lot, but of course, you can't really go to school to learn how to be innovative. There's industrial design, but that doesn't teach you innovation.

You say that an EE built the mouse. What do you mean by that? I know that there are signals and systems EE's, microelectronics EE's and what not, but who does what? Once the circuits are made by some EE's, how is everything fit together to produce the mouse? Is that process at a higher level of abstraction, i.e. the logic gate level? Do EE's really mess with logic gates? That seems like a CE thing, since digital synchronous systems stuff is taught in our CS 150 class.

Note: The above is by no means a small question in my eyes: It demonstrates exactly what my confusion is, so I'd really appreciate an answer to that question!

I really want to find out what EE's actually do at their highest level of abstraction; If I think that I'd like doing whatever that is, EE makes sense. If not, CE or CS seem to be the way to go.

Originally Posted by itai195
I'd echo what others said -- it sounds like the more applications-based and theory courses (series CS 170 and CS 180) probably aren't going to be of much interest to you...
CS 170 sounds very boring, but I've heard countless times that if I apply for a CS job, people love seeing 170. While I'm certainly interested in taking the classes that I find interesting (and doing the major I find the most interesting), isn't it also a good idea to take a few classes that aren't the most exciting but will benefit you in the future?

Originally Posted by el chupacabra
CS is easyer than EE but pays much less and jobs are harder to find.
I'm getting mixed messages here, because someone else told me that there are many more CS jobs than EE jobs.

To Everyone: People keep telling me to do what I love. That's what I'm trying to figure out. Not everything is as simple as the classes you take: Some amazing jobs require that you learn some really boring stuff first, and some really boring jobs (i.e. being a lawyer in many cases) are fascinating to study. I'm trying to figure out what career I will love.
"Give me a lever long enough and a fulcrum on which to place it, and I shall move the world." -Archimedes
     
tavilach  (op)
Mac Elite
Join Date: Jan 2004
Location: Berkeley, CA
Status: Offline
Reply With Quote
Apr 15, 2006, 09:26 PM
 
I'm starting to think that Option III might be looking good (the options aren't set in stone, but they guide you):

Primary courses for Option III:

Math 55, Discrete Mathematics, or CS 70, Discrete Mathematics and Probability Theory
EECS 120, Signals and Systems
EE 141, Digital Integrated Circuits
CS 162, Operating Systems and Computer Programming
CS 150, Components and Design Techniques for Digital Systems
CS 152, Computer Architecture
CS 164, Programming Lanuage and Compilers

I'd take more classes than that, probably CS classes, as this option leaves wiggle room.

And perhaps I could meddle in IEOR 170, Industrial Design and Human Factors, to get some unrelated design experience.

Of course, this is just one possibility. I really want to figure out what I'd enjoy doing the most in the working world, and from that choose my classes.

Edit: Sorry about the double posting.
"Give me a lever long enough and a fulcrum on which to place it, and I shall move the world." -Archimedes
     
Dork.
Professional Poster
Join Date: Sep 2005
Location: Rochester, NY
Status: Offline
Reply With Quote
Apr 15, 2006, 09:53 PM
 
If I were you, I'd concentrate on the courses that sound interesting, and not necessarily worry about the courses you should be taking. Listen to what teachers, advisors, and older students have to say regarding which classes are worthwhile (and which teachers are worthwhile!) Based on your first few posts, I'd say your "Option 3" looks like something you'd enjoy.

The main focus of your undergraduate education should be to get a broad understanding of the different options out there in the field, so you can narrow your eventual job search to things you'd eventually enjoy. But again, based on your posts, you seem to be going in the same direction I eventually went in for my career (except without all that icky programming stuff.) If you like this "Option 3", try and pick future courses that go into more advanced Digital Logic design concepts, and learn all you can about Verilog (or its more spohisticated and useful cousin, VHDL. )

Don't get scared by all the people who say that "EE courses have lots and lots of hard math". It's true that all EE is ultimately based on math, and the more intense semiconductor physics, analog design, and RF design classes have math that is difficult, as you've probably already seen. But digital design is all boolean! You leave all the hard questions, like "how many electrons can go through this gate", to Other People or to the smiling PC or Unix workstation on your desk, and concentrate on how many flip-flops it will take to implement your algorithm. Basically, you're a level or two of abstraction above doping coefficients and parasitic capacitances. Aren't you lucky! It's great if you understand the concepts behind all that math, but just can't be bothered to do much of it.

For what it's worth, I got my EE degrees before CE started being offered as a separate discipline, and concentrated in the Computer Architecture and Digital Design classes in undergrad and Grad School. When I graduated, I didn't know Verilog from Prolog. But I learned an awful lot on the job. Now, I design Digital ASICs and FPGA's. Analog IC designers and RF engineers make more than I do.
     
tavilach  (op)
Mac Elite
Join Date: Jan 2004
Location: Berkeley, CA
Status: Offline
Reply With Quote
Apr 17, 2006, 12:37 AM
 
Originally Posted by Dork.
If I were you, I'd concentrate on the courses that sound interesting, and not necessarily worry about the courses you should be taking. Listen to what teachers, advisors, and older students have to say regarding which classes are worthwhile (and which teachers are worthwhile!) Based on your first few posts, I'd say your "Option 3" looks like something you'd enjoy.

The main focus of your undergraduate education should be to get a broad understanding of the different options out there in the field, so you can narrow your eventual job search to things you'd eventually enjoy. But again, based on your posts, you seem to be going in the same direction I eventually went in for my career (except without all that icky programming stuff.) If you like this "Option 3", try and pick future courses that go into more advanced Digital Logic design concepts, and learn all you can about Verilog (or its more spohisticated and useful cousin, VHDL. )

Don't get scared by all the people who say that "EE courses have lots and lots of hard math". It's true that all EE is ultimately based on math, and the more intense semiconductor physics, analog design, and RF design classes have math that is difficult, as you've probably already seen. But digital design is all boolean! You leave all the hard questions, like "how many electrons can go through this gate", to Other People or to the smiling PC or Unix workstation on your desk, and concentrate on how many flip-flops it will take to implement your algorithm. Basically, you're a level or two of abstraction above doping coefficients and parasitic capacitances. Aren't you lucky! It's great if you understand the concepts behind all that math, but just can't be bothered to do much of it.

For what it's worth, I got my EE degrees before CE started being offered as a separate discipline, and concentrated in the Computer Architecture and Digital Design classes in undergrad and Grad School. When I graduated, I didn't know Verilog from Prolog. But I learned an awful lot on the job. Now, I design Digital ASICs and FPGA's. Analog IC designers and RF engineers make more than I do.
I keep hearing about RF, and I honestly am not sure what that is. Maybe I learned about it but was just unaware of the name "RF"? Also, where do analog IC's and RF stuff come into play, now that the world is so digital?
"Give me a lever long enough and a fulcrum on which to place it, and I shall move the world." -Archimedes
     
turtle777
Clinically Insane
Join Date: Jun 2001
Location: planning a comeback !
Status: Offline
Reply With Quote
Apr 17, 2006, 12:43 AM
 
Originally Posted by tavilach
I keep hearing about RF, and I honestly am not sure what that is. Maybe I learned about it but was just unaware of the name "RF"? Also, where do analog IC's and RF stuff come into play, now that the world is so digital?
cell phones, just to name one example.

-t
     
itai195
Addicted to MacNN
Join Date: May 2001
Location: Cupertino, CA
Status: Offline
Reply With Quote
Apr 17, 2006, 01:39 AM
 
Originally Posted by tavilach
I'm starting to think that Option III might be looking good (the options aren't set in stone, but they guide you):

Primary courses for Option III:

Math 55, Discrete Mathematics, or CS 70, Discrete Mathematics and Probability Theory
EECS 120, Signals and Systems
EE 141, Digital Integrated Circuits
CS 162, Operating Systems and Computer Programming
CS 150, Components and Design Techniques for Digital Systems
CS 152, Computer Architecture
CS 164, Programming Lanuage and Compilers
I think that looks like a good list. Math 55 and CS 164 were also very good and useful courses.

Regarding CS 170 -- I've heard that too, many people consider it fundamental CS knowledge. I suppose it is an item some people would like to see on your resume. This is a course you probably should take if, after a couple semesters, you decide you really want to go the CS route. If you're going into hardware or more of a CE focus you probably don't need to have it.

If you want my personal opinion about CS 170, when I took it at Cal I hated it. I took a course with similar subject matter in grad school and enjoyed it much more. Sometimes certain courses/professors can just kill a subject.

I think Dork has the right idea though. Undergrad should be about getting a taste of what's out there so you can start to figure out what you like. This is a field that will change rapidly and require you to continue learning for a lifetime, so you aren't locked into any choices you make today. IMO the only upper division course you really should take, like I said earlier, is CS 162.
( Last edited by itai195; Apr 17, 2006 at 01:45 AM. )
     
skipjack
Dedicated MacNNer
Join Date: Oct 2000
Status: Offline
Reply With Quote
Apr 17, 2006, 04:28 AM
 
Originally Posted by tavilach
Also, where do analog IC's and RF stuff come into play, now that the world is so digital?
That's a reasonable question. Just like when I took EECS40 and people were wondering why people even bothered mentioning BJTs these days. Most real world stuff starts out as analog. Signal processing might be digital but to communicate with the outside world can require an analog interface. Another example is power electronics. It has to come from somewhere and it's not digital.
     
veryniceguy2002
Senior User
Join Date: Nov 2002
Location: Australia
Status: Offline
Reply With Quote
Apr 17, 2006, 06:30 AM
 
Originally Posted by tavilach
I keep hearing about RF, and I honestly am not sure what that is. Maybe I learned about it but was just unaware of the name "RF"? Also, where do analog IC's and RF stuff come into play, now that the world is so digital?
RF stands for Radio Frequency... the stuff with related to Bluetooth, WiFi, analog/digital radios, satellites etc.

Analog IC and RF still uses a lot at the moment. A/D or D/A converters are analog... and for audio application is still analog (there's no such thing as truly digital speaker or headphones available as yet). RF? Need I explain more???

Things in life are all analog, until you go to atomic levels...
     
Angus_D
Addicted to MacNN
Join Date: Mar 2000
Location: London, UK
Status: Offline
Reply With Quote
Apr 17, 2006, 06:36 AM
 
Originally Posted by tavilach
I keep hearing about RF, and I honestly am not sure what that is. Maybe I learned about it but was just unaware of the name "RF"? Also, where do analog IC's and RF stuff come into play, now that the world is so digital?
RF is "Radio Frequency" - high frequency analogue signals. Dealing with those is pretty hardcore stuff.
     
Dork.
Professional Poster
Join Date: Sep 2005
Location: Rochester, NY
Status: Offline
Reply With Quote
Apr 17, 2006, 07:36 AM
 
Originally Posted by tavilach
I keep hearing about RF, and I honestly am not sure what that is. Maybe I learned about it but was just unaware of the name "RF"? Also, where do analog IC's and RF stuff come into play, now that the world is so digital?
RF is any type of radio frequency transmission. That includes radio and TV (both terrestrial and sattelite), wireless internet, Bluetooth, cell phones, RF ID tags (like Mobil SpeedPass or the EZ-PASS thingie we use to pay tolls in New York State), and all sorts of other stuff. They all have to co-exist peacefully in the RF spectrum. Lots of good new work going on there, especially in RFID.

Analog IC's are even more important now more of our devices are digital -- because the world itself is inherently analog. Anything that manipulates sound or pictures (like a digital camera) has a lot of analog electronics under the hood, because sound or pictures are analog by nature and need to be digitized before a digital system can use them. More and more of the processing may be moving into the digital domain, but you still need to capture that analog information cleanly in the first place.

Plus, no signal waveform is an exact square wave. As digital IC process technology gets better and we can cram more things onto a single IC, clock speeds get faster, but chip voltages get smaller at the same time. As these two things happen, the digital signal that you thought had clean edges start to have ringing and overshoot which, if you (or someone you work with) don't fully understand, can cause glitches in your data transfer. Glitches are bad.

The math is a lot harder on the Analog side of things. RF design is really a subset of analog design. I don't think the math is quite as hard there, but YMMV. Either way, take it from this Digital IC designer: you will always be employed profitably somewhere in the U.S. if you learn analog IC design.

And no matter what you do, for the next five or ten years, learning Hindi or Chinese wouldn't hurt, either.
     
turtle777
Clinically Insane
Join Date: Jun 2001
Location: planning a comeback !
Status: Offline
Reply With Quote
Apr 17, 2006, 08:39 AM
 
Originally Posted by Dork.
And no matter what you do, for the next five or ten years, learning Hindi or Chinese wouldn't hurt, either.
Yeah, plus, learn to swim

-t
     
ghporter
Administrator
Join Date: Apr 2001
Location: San Antonio TX USA
Status: Offline
Reply With Quote
Apr 17, 2006, 09:17 AM
 
I'm with Dork on RF being relatively benign as compared to a lot of other stuff. For example DSP (digital signal processing) is supposed to be THE method of dealing with all analog signals. BUT... You still need to handle the "point to point" transmission of those analog signals, and even at low signal levels, RF likes to be handled its own way. Radio signals are easy to deal with (you can receive and listen to a signal with a big coil of wire, a diode and a mono earphone; kids used to build such "crystal radios" for fun) on a macro level, but getting all those macro components into an IC is a real trick.

Take a look at a small Bluetooth handsfree kit. It's got an RF receiver and transmitter, and signal processor (a tiny CPU), along with audio in and out sections, all in that tiny package. How? With the signal levels required for Bluetooth, you CAN put all the components on tiny chips. But the discrete components to do the same thing would be pretty ungainly. And considering the frequency used, it would also be extremely picky about lead lengths and other construction details. Building such components on silicon makes such considerations moot.

Glenn -----OTR/L, MOT, Tx
     
   
 
Forum Links
Forum Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Top
Privacy Policy
All times are GMT -4. The time now is 06:24 AM.
All contents of these forums © 1995-2017 MacNN. All rights reserved.
Branding + Design: www.gesamtbild.com
vBulletin v.3.8.8 © 2000-2017, Jelsoft Enterprises Ltd.,