The new forums will be named Coin Return (based on the most recent vote)! You can check on the status and timeline of the transition to the new forums here.
The Guiding Principles and New Rules document is now in effect.
Should I take Computer Engineering over Computer Science?
I'm in need of some brief counseling. I'm entering college in the fall, and I want to keep my studies around computers. However, I'm currently signed up for an Intro to Computer Science class. I've recently come to the realization that I'd much rather be a network or system administrator, opposed to a programmer. I like working with people, and administering many different computers, learning about networks, that kind of thing, interests me. Should I switch my Comp Sci class for Computer Engineering? Is that what a B.A. in Computer Engineering could get me?
I've got a B.S. in Computer Engineering. I currently do .NET programming which I like, found out through an internship.
Comp Eng is a mixture of your Engineering reqs as well as Electrical Engineering reqs and Computer Science reqs. So basically you get a good dose of Computer Science and Electrical Engineering, plus the mathematics behind Engineering. I originally wanted to go Comp Sci but I felt the CE degree would open up more doors for me.
I also learned I'm terrible at circuit analysis. :P
From the sounds of it, the CE degree won't focus on what you want. Consider something more sys admin or networking focused.
Taco Bell does win the franchise war according to the tome of knowledge that is Demolition Man. However, I've watched Demolition Man more then a few times and never once did I see WoW. In conclusion Taco Bell has more lasting power then WoW.
Wait are you talking about Computer Engineering or Computer Engineering Technology? Computer Engineering focuses on designing microprocessors and such and is really a subset of electrical engineering. A Computer Engineering Technology or Computer Information Technology is probably what you want to get into. Either way, a CS101 course will probably be required for both.
I'm also a BS in CompEng, with a MS in CS. Spackle's pretty much covered it - back in The Old Days, there wasn't such an animal as a Computer Engineering degree - you got a double major in EE and CS and that was "Computer Engineering". Nowadays, there are more and more universities offering integrated Computer Engineering programs. It's still a very challenging curriculum (all the work of a double major with none of the street cred).
From where you say your primary interests lay, CS is the right area of discipline for you, you'll just want to adjust your (likely to be few) electives to focus on networking. You'll still get stuck with a lot of core classes, though.
A CS degree can be very powerful if you have some flexibility with your courses. You can do a nice CS degree with a heavy study on Sys admin and Networking if you play your cards right.
My school also had a specific degree called Computer Networking as well which took in the core CS stuff, but offered a lot in networking, sys admin, unix studies, etc. That sounds like more what you want.
Darkgrue: What made you go MS in CS? I'm not sure if I want software engineering or comp sci for my Masters.
Taco Bell does win the franchise war according to the tome of knowledge that is Demolition Man. However, I've watched Demolition Man more then a few times and never once did I see WoW. In conclusion Taco Bell has more lasting power then WoW.
A lot of colleges seem to have a major that deals more with dealing with networks as a manager or admin. It's called Information Systems at my school, apparently goes by a few other names at other places. It's not something you seem to learn is available during high school for some reason. Depending on the school, you'll still need to do some programming classes anyway though so you don't have to figure out your direction immediately.
Darkgrue: What made you go MS in CS? I'm not sure if I want software engineering or comp sci for my Masters.
I got my MS in Computer and Communications Security, it was offered through the CS Department, and not Engineering (still the school of engineering though, go figure). Ended up to be a very good combo for me.
I had already decided I wanted to go that direction when I was working on my BS, I was kinda amazed that they had a program specifically for it when I needed it though (I went stright from my BS program into my MS, a course of action that I highly recommend if you can manage it - it's very hard to go back to school after the fact). Also suited me a lot better than EE - since you know, math is, like, hard. :P
Darkgrue: What made you go MS in CS? I'm not sure if I want software engineering or comp sci for my Masters.
I got my MS in Computer and Communications Security, it was offered through the CS Department, and not Engineering (still the school of engineering though, go figure). Ended up to be a very good combo for me.
I had already decided I wanted to go that direction when I was working on my BS, I was kinda amazed that they had a program specifically for it when I needed it though (I went stright from my BS program into my MS, a course of action that I highly recommend if you can manage it - it's very hard to go back to school after the fact). Also suited me a lot better than EE - since you know, math is, like, hard. :P
I plan to get my Masters when I turn 25 which is in just over a year. I wanted to get some field work going before getting the Masters, as well as hopefully trying out a couple different jobs.
I'm just not sure what to pursue! I love coding and aim to be a sr developer, the guy that stands around and yells at the code monkeys. Kidding aside, a project lead on something large scale is a definite goal. Any recommendations for a Master based on this little bit of knowledge?
Taco Bell does win the franchise war according to the tome of knowledge that is Demolition Man. However, I've watched Demolition Man more then a few times and never once did I see WoW. In conclusion Taco Bell has more lasting power then WoW.
Electrical Engineering: Analog hardware
Computer Engineering: Digital hardware
Computer Science: Fundamentals of computing + a little hardware + more software
Software Engineering: Mostly software, some focus on management and teams
Management Information Systems: Business + Computing
Information Science: Libraries + Computing
Information Technology/Information Systems: Network and SysAdmin stuff.
If you want to be a system or network administrator, getting a computer engineering degree (which focuses on things like digital logic and circuit design) will likely not help you. You'll get more out of a traditional CS program. IT programs will be right up your alley, but IT degrees tend to be soft and vocational. As another poster in another thread put it, a person with a CS degree can generally do the job of someone with an IT degree, but not the other way around. Suffering through the CS degree might keep more options open for you in the future.
I plan to get my Masters when I turn 25 which is in just over a year. I wanted to get some field work going before getting the Masters, as well as hopefully trying out a couple different jobs.
I'm just not sure what to pursue! I love coding and aim to be a sr developer, the guy that stands around and yells at the code monkeys. Kidding aside, a project lead on something large scale is a definite goal. Any recommendations for a Master based on this little bit of knowledge?
When (or if) to get your Master's is very much a personal choice. There's lots of pros and cons on both sides, to be sure. For me, I didn't have issues with "not having real-world experience", since I was working part-time in IT while going to school, and I also entered the job market during the dot-com bubble. Having a Master's did differentiate me as a job candidate. I'm not sure I'd try and pull the same stunt with a BS, MS, and a PHD though...
If you want to be a Sr. Developer, project lead, or program manager, you may want to consider getting a degree or certificate in program management, rather than a technical degree. I deal primarily with management issues and direction more than I do with technical issues. If you can blend both technical and management disciplines, you can be a pretty strong double-threat. Not everyone cares if thier line management actually understands what they are managing, but in a good environment, an engineer that can actually manage people and processes well can do really well.
The downside is, that most of the day-to-day work that leads and project managers do really has jack-all to do with engineering, which is usually exactly the opposite of what most engineers want to do. Being lead (in most places) has a lot less to do with cherry-picking the interesting technical problems and directing people to "make it so", and a lot more to do with generating Gantt charts, communicating with irascible customers, creating and evaluating employee annual goals, office politics, and TPS Reports.
...which almost makes the calculus look attractive again. :P
Still, management track has a much higher salary cap in many organizations, and having that MS (doesn't matter what in), will place you higher in your bracket.
I'm pretty much echoing what most people said here. I have a BS in Computer Science, but originally I planned to get a double major with CS and CPE. I dropped CPE after the first year, because I liked software much better. Right now I'm primarily a code monkey for my company, but that's what I like. There were a few networking courses offered at our school through both the CS and CPE departments, but I never took them. I concentrated more on programming and GIS.
Honestly, lots of things overlap in CS and CPE. Most of the CPE guys at my school used to take the main CS courses with us, and we took a couple of CPE ones as well. That's changed just recently, but they still overlap in what's taught, and that's primarily the programming bit. But CS really isn't just programming, it's honestly more problem solving and techniques than actually learning coding. You'll do that too, but at many schools it isn't emphasized as much, unless you choose for it to be.
CPE is essentially electrical engineering with some computers thrown in. And some programming. I hated the few CPE courses I took, but then again, I hated dealing with circuits and wires.
If you want to be an IT, Network Administrator, or the like, then honestly CPE and CS degrees will offer you little. There might be a different major to go into that's more specified. If anything though, I'd take CS, but make sure you check ahead and see if they'll have the courses you want to take eventually. Usually you won't be able to take the electives till your Junior or Senior year, so you'll have to go through some other stuff first. Oh, and CS and CPE are both heavy on the math usually.
DrFryLock summed it up nicely. Also, don't be afraid to meet some of the profs and advisers at the school. They can always lend a helping hand if they aren't to busy, and since it's summer you should be able to set up appointments.
Darkgrue: Thanks man. That actually clears a bit up for me. I'm interested in the technical aspect of code writing but I'm just not sure how interested I am for a Masters in it. And like I said a personal goal is definitely in Project Leads. I'm actually looking to get a new job in a more cubicle life/team environment (my current job is with a small contracting company, mostly flying solo with direction kinda trickling int) so I hope that experience will guide me a bit.
Taco Bell does win the franchise war according to the tome of knowledge that is Demolition Man. However, I've watched Demolition Man more then a few times and never once did I see WoW. In conclusion Taco Bell has more lasting power then WoW.
I'm going to be a senior this year and I also want to either major in CE or CS. What are some great CE/CS colleges/universities to attend? I'm familiar with the top tier schools (MIT, CMU, CIT, Berkeley, etc.). I know I won't get into them. So what other colleges do you recommend? Or is CE/CS pretty much equal everywhere?
Electrical Engineering: Analog hardware
Computer Engineering: Digital hardware
Computer Science: Fundamentals of computing + a little hardware + more software
Software Engineering: Mostly software, some focus on management and teams
Management Information Systems: Business + Computing
Information Science: Libraries + Computing
Information Technology/Information Systems: Network and SysAdmin stuff.
I would firmly disagree with some of the bullets there
Electrical: I have a friend who's doing his PhD in EE and it's almost all digital. You cover analog because you need to learn to walk before you can run. As somebody said previously, a Computer Engineer is an EE with applied study in computers.
The line between Computer Science and Software Engineering is pretty fuzzy. What the program is named usually comes down to which department administers it. If you go soft eng. be prepared to deal with all of the hardcore math that engineers get to do. An engineering degree carries some pretty technical requirements behind it, so anything that wants to be called ________ Engineering and grant a B.Eng. needs to meet those requirements.
That being said, your blurb afterwards is fairly accurate. It's sad, but a lot of places look for a CS degree, even if all the person is doing is administering windows. The logic goes that somebody doing windows admin stuff with a CS degree must be better than somebody with a "lesser" degree. I don't agree with this opinion at all, but unfortunately I'm not to the one hiring.
I'm going to be a senior this year and I also want to either major in CE or CS. What are some great CE/CS colleges/universities to attend? I'm familiar with the top tier schools (MIT, CMU, CIT, Berkeley, etc.). I know I won't get into them. So what other colleges do you recommend? Or is CE/CS pretty much equal everywhere?
Computer Science is not equal everywhere. It's just like everything else; the stronger the school; the stronger the undergraduates; and then the more rigourous the course will be. My university was a top-tier UK school, where we were taught C first. That way, we could fully appreciate the power OOP and other languages give you. It's a great way of doing it, but you have to have students that can keep up with being thrown in the deep-end.
You will get more out of your schooling if you go to the best you can.
Where abouts do you want to study? The UC system in California has good CS schools; Davis, San Diego and Irvine all rank highly. University of Washington is well regarded.
Those US News rankings are good for this sort of stuff. Just remember that all programs are not the same; some prefer a large maths portion, some don't. You need to look at the class structure as well, to make sure you would be happy there.
Here's a secret: Don't get a CI major instead of a CS major or you will be gimped.
A good CS major can do any job a CI major can, but a CI major can't do everything a CS major can. That's why they will always get more attention on resumes and salaries. CS is also a lot harder than CI. Employers will know this.
That said, Computer Engineering from what I have always heard deals more with hardware, but they do have to take CS classes to know how it relates to software.
You probably are talking about CET.
But do not do CI.
As far as schools, a good education will teach you a lot about CS, but more importantly it should also make you aware of how much stuff there is out there that you don't know. You shouldn't walk away thinking you know everything about CS because otherwise you will have had an injustice. CS is a constantly evolving field.
The line between Computer Science and Software Engineering is pretty fuzzy. What the program is named usually comes down to which department administers it.
...by which I am going to read as "going to a crap school" which would be true.
Computer Science != Software Engineering by a long shot. I'm not going to say one is better than the other (although CS has a stronger name cachet) but they are certainly not the same courses at all.
And seriously, what maths classes do software engineers take that CS students don't? Every single SE course I have seen has less mathematics.
In the work field, what is the sort of thing that a Computer Engineer would tackle? I assume there's more to it than plugging in IDE cables? And would studying CE be primarily math/physics? Circuits, etc.
Care to justify why you feel they are so different? I'm just going by my experience getting my CS degree vs. talking to people that were getting a Soft. Eng. degree.
In the work field, what is the sort of thing that a Computer Engineer would tackle? I assume there's more to it than plugging in IDE cables? And would studying CE be primarily math/physics? Circuits, etc.
Building a micro controller, soldering boards, designing circuits, creating instruction sets, etc.
Care to justify why you feel they are so different? I'm just going by my experience getting my CS degree vs. talking to people that were getting a Soft. Eng. degree.
Computer Science is the understanding of computers. You can go all the way down to CPU level and registers, move up to assembly, compilers, programming languages, algorithms, human-computer interaction, ubiquitous computing. There is a wide variety of CS courses such as networking, multimedia, AI, databases and everything else. Programming is the method used to explore and show the effect of these components, but for a large number of CS classes, that you can program is taken as a given. The problems are not in the programming. Math classes are usually the underpinnings of these subjects, so you need to tack those on.
Software Engineering is the creation of software. This is all about programming languages, design patterns, design methodologies, systems integration, probably business classes too. Stuff like standards-interoperability or project management will come up, whereas Computer Science will usually treat them as a passing issue. It's not necessarily easier, but it is easier to find courses you can coast in rather than ones that will stretch you.
Each has their place. Schools that teach Computer Science but have students who felt they learnt software engineering have failed, and this usually comes about because the undergraduates they take on don't have the chops to cut the harder topics. I know that's a snobby sort of attitude, but from what I have seen, that's true. Schools that set out to teach Software Engineering in and of itself do much better at teaching it, and graduates are better for it.
In the work field, what is the sort of thing that a Computer Engineer would tackle? I assume there's more to it than plugging in IDE cables? And would studying CE be primarily math/physics? Circuits, etc.
Building a micro controller, soldering boards, designing circuits, creating instruction sets, etc.
Yeah, it's no "system admin" course. As Frylock said, that's a different subject, and I'd argue there really isn't one because IT, as I think of it, is usually a higher level than that. But you will learn enough in Computer Science to have the ability to apply yourself to those fields, if you want to learn them. If you want to be a system admin, I would take CS.
I work in a team of 7 sysadmins. 5 have computer science degrees, one has a music degree, and one has something I forget. System admin is one of those jobs that CS will give you the tools you need to allow you to learn what you need to know. I wouldn't limit yourself by doing a non-CS course.
Software Engineering is the creation of software. This is all about programming languages, design patterns, design methodologies, systems integration, probably business classes too. Stuff like standards-interoperability or project management will come up, whereas Computer Science will usually treat them as a passing issue. It's not necessarily easier, but it is easier to find courses you can coast in rather than ones that will stretch you.
I somewhat agree with this, except that if you are getting a B.Eng in software you have to meet all of the technical requirement that an Electrical or Civil Engineer would, and that usually involves a lot of math.
As far as how technical the CS program is: it really depends on which department administers it. The University of Waterloo in Ontario has its math dept administer its CS program. As a result I've heard that the CS program is a vicious gauntlet of math courses with some computer courses thrown in for good measure.
In comparison I went to the University of Guelph which has its own computing department which administers the CS program. By your description I got more of a "software engineering" (that is, software design and development) background.
I really don't think one is better than the other, but they certainly help you achieve different goals and spit you out with a vastly different skill set. Relating back to the OP: pick a program that you think will give you the skill set for where you want to be when you graduate.
Also keep in mind CS degree != programmer, and taking a CS degree will not necessarily mean you will be programming forever. Anybody can program. A 15 year old kid can program. All you gotta do is come in, write good code for 8 hours a day according to specifications, and collect money. It's the computer scientist who determines exactly what you will write, so you won't really have to even think. And that's the guy who gets paid the most out of all of them.
I would disagree with that completely, based on how things work at my company. The architects decide the very high level interworkings of the software infrastructure, the project managers write the specs on what has to happen from a functional/business perspective, and we (the developers) get to decide how to implement everything else.
That being said of all the positions, architects are the most senior so I imagine that they are the best paid. Even then, the architects don't design anything without the input from the PMs and the developers. It's not as clearly defined as your "idealist" view would have everyone believe.
I guess it all depends on what kind of company you work for.
Philodox on
That's a Freudian mansex if I ever cocked one.
0
ASimPersonCold...... and hard.Registered Userregular
I'm in need of some brief counseling. I'm entering college in the fall, and I want to keep my studies around computers. However, I'm currently signed up for an Intro to Computer Science class. I've recently come to the realization that I'd much rather be a network or system administrator, opposed to a programmer. I like working with people, and administering many different computers, learning about networks, that kind of thing, interests me. Should I switch my Comp Sci class for Computer Engineering? Is that what a B.A. in Computer Engineering could get me?
If you feel comfortable telling us, what college is this?
Also, it sounds like you really want to get into doing IT work. Quite frankly, either degree is overkill for that sort of thing. I think that some schools have IT-type degrees, but I'm not sure what they'd be called (mine doesn't). The nuances of both degrees have been explained several times here, so I won't get into that.
That said, CS is generally a better bet if you want to be able to do anything with computers, but getting a CS degree and then becoming a sysadmin seems like overkill to me. However, your mileage may vary.
I'm going to be a senior this year and I also want to either major in CE or CS. What are some great CE/CS colleges/universities to attend? I'm familiar with the top tier schools (MIT, CMU, CIT, Berkeley, etc.). I know I won't get into them. So what other colleges do you recommend? Or is CE/CS pretty much equal everywhere?
First off, where do you live? Depending on your state, there are several decent public schools. You already mentioned on (Berkeley), but off the top of my head I can think of Michigan, Ohio State, Illinois (UIUC), Georgia Tech (my alma mater), Washington (mad Bill Gates money, yo), and probably others (someone else mentioned Maryland and UNC, so yeah).
CE/CS is not equal everywhere. I'm from Alabama. I would not have my current job (which I like very much) had I stayed instate. Just to use Alabama as an example, UAH and Auburn actually have decent engineering/CS programs. "The" Alabama, however, has jack-all for CS. You can compare and contrast the curriculum of various schools' programs and sorta see a difference.
I'm in need of some brief counseling. I'm entering college in the fall, and I want to keep my studies around computers. However, I'm currently signed up for an Intro to Computer Science class. I've recently come to the realization that I'd much rather be a network or system administrator, opposed to a programmer. I like working with people, and administering many different computers, learning about networks, that kind of thing, interests me. Should I switch my Comp Sci class for Computer Engineering? Is that what a B.A. in Computer Engineering could get me?
If you feel comfortable telling us, what college is this?
Also, it sounds like you really want to get into doing IT work. Quite frankly, either degree is overkill for that sort of thing. I think that some schools have IT-type degrees, but I'm not sure what they'd be called (mine doesn't). The nuances of both degrees have been explained several times here, so I won't get into that.
That said, CS is generally a better bet if you want to be able to do anything with computers, but getting a CS degree and then becoming a sysadmin seems like overkill to me. However, your mileage may vary.
I'm going to be attending UC Santa Cruz. With any luck (and I believe there's actually a program that facilitates just this) I would like to transfer to Berkeley in two years.
I don't necessarily want to live out the rest of my days as a sysadmin. It's just that if I happen to find myself in such a career, I wouldn't mind so much. In the job market, where could I go from there? Like, what are the more lofty positions that a degree in CS could open up? I realize that's an incredibly broad question, but a general idea would be very helpful.
I'm going to be attending UC Santa Cruz. With any luck (and I believe there's actually a program that facilitates just this) I would like to transfer to Berkeley in two years.
I intend to go to UCSC to study for my PhD in Computer Science so I can work with Mateas. Why do you want to jump ship so quickly? It's a good school for CS from everything I have heard.
I don't necessarily want to live out the rest of my days as a sysadmin. It's just that if I happen to find myself in such a career, I wouldn't mind so much. In the job market, where could I go from there? Like, what are the more lofty positions that a degree in CS could open up? I realize that's an incredibly broad question, but a general idea would be very helpful.
"I wouldn't mind so much" isn't a good reason to choose a career path. Again, if you know you want to do computing but you aren't sure what, CS is your only bet.
Degrees in CS allow you to move to consultancy (business with a tech slant), programming, sys admin and such, but that's just off the top of my head. It can work as a "general" degree like History, if you want to switch up to something else when you graduate you can.
CS opens more doors than CSE does.
A quick straw poll of what my friends are doing:
- Technologist (recommends purchasing decisions and does research) for a large company you have heard of
- Programmer for a secret branch of the UK government I can't tell you about
- Working for Industrial Light and Magic
- Graduate study
- Playing guitar in a band while doing web design to pay the bills
- Running their own web hosting company (http://www.kualo.com)
And I work for a university as a sysadmin and web programmer.
"I wouldn't mind so much" was a bit of a fallacy. I think I really would enjoy it, but of course I'd like to keep my options open to more than just that. And, "Again, if you know you want to do computing but you aren't sure what, CS is your only bet," pretty much nailed it for me personally. I'm still very much up in the air with no one to talk to, until I move onto campus in a couple months.
And the only reason I mentioned a switch to Berkeley is because it's always mentioned as a "top-tier" CS school. Not that I've ever heard anything bad about UCSC, it's just UCB is always lauded as "one of the best." In any case, I don't completely want to switch, and I'm sure I'll have a much stronger personal orientation after I've been living there for a while. UCSC definitely has it's perks over Berkeley, after all. The campus, for instance.
UCSC definitely has it's perks over Berkeley, after all. The campus, for instance.
Yes, the campus is absolutely beautiful. When I studied at UC Davis for a year, I was gutted when I saw UCSC (I could have picked to study there on my study abroad trip).
One thing about the "top-tier" is its very much sink-or-swim there. Most professors just don't give a shit about undergrads, they have far more important research to do. The TA might be teaching the entire class. It's definitely a trial-by-fire, and as an undergrad, I wouldn't want to be there, and a lot of my friends at UCD who had friends at Berkeley said they felt the same way. That said, if you graduate with a major from Berkeley, you can pretty much go for any job you want. I would also be lying if I said I haven't applied to Berkeley or Stanford, but I'm more confident that a postgrad gets more face time with a professor. Not that they'll ever take me
I could have gone to Oxford or Cambridge, but chose not to. There's more to university, and life, than getting your ass kicked academically every day of the week.
I think you'll love UCSC, everyone I know who went there did. Hopefully I'll see you there
Also keep in mind CS degree != programmer, and taking a CS degree will not necessarily mean you will be programming forever.
It is true that taking a CS degree does not consign you to a life of programming (although you should not be able to earn a CS degree without taking at least a year of programming courses). Programming is one job that many CS degreeholders do, but it is certainly not the only one. During a good CS education, you will get exposed to things that include (yes) programming, but also software engineering (which is not the same as programming), human-computer interaction, the design of programming languages (which is not the same as programming), operating systems, digital logic, algorithms, data structures, artificial intelligence, graphics, large-scale system design, and so on.
Anybody can program. A 15 year old kid can program. All you gotta do is come in, write good code for 8 hours a day according to specifications, and collect money. It's the computer scientist who determines exactly what you will write, so you won't really have to even think. And that's the guy who gets paid the most out of all of them.
I'm sorry, this is just wrong. I would be surprised if Killhouse had ever actually participated in a software development effort. Anybody can be trained to write code, even a 15 year old. However, working an actual programming job is much more involved than simply translating detailed specifications into C for money. Programmers make design decisions all the time about data structures, algorithms, concurrency, and so on. While it would be wonderful if all these things were specified in advance, they aren't. In a crude but useful generalization, if you went to the trouble to do so, the specifications would be as complex as the code, and then you might as well just write the code. This is why programming is interesting and challenging for most people; if it were completely rote, it wouldn't be. This is also why outsourcing programming tasks to India isn't showing the massive return on investments that were predicted--uneducated third-world programmers make bad design decisions and produce poor-quality software; it costs nearly as much to fix as it does to get it right in the first place. There is no magic "computer scientist" telling you what to write.
Philodox's description above is much more accurate. Most engineering organizations are hierarchical, with high-level design decisions being made by architects and leaders, subsystem-level design decisions being made one step down the hierarchy, and module-level design decisions being made by individual programmers. Each of these levels benefits from computer science knowledge. An individual programmer may only get an API spec and then have to implement that. If one of the functions to be implemented is sort(), that programmer has to make the decision whether to use bubblesort, quicksort, mergesort, heapsort, and so on. Your average 15 year old is not going to understand the difference. Individual programmers must be concerned with elegance and efficiency. Should a particular data structure be indexed separately for performance reasons? How should those indices be kept up to date? How should they be organized?
Like, what are the more lofty positions that a degree in CS could open up?
As pointed out above, a whole range of things. Programmer, sure. IT guy - OK. Assuming you don't want to pursue graduate work, you can be a technologist or a consultant, you can pursue a career ladder in engineering or management. Lots of options.
And the only reason I mentioned a switch to Berkeley is because it's always mentioned as a "top-tier" CS school.
UCSC is nothing to shake a stick at and has a fine CS program; a friend of mine is a CS professor there, and no I won't tell you his name. Berkeley is indeed a top-tier school and from what I've heard has quite an intense and theoretical computer science program. One graduate student I studied with did his undergraduate work at Berkeley and, well, frankly he was an insufferable git. Every second sentence out of his mouth was how difficult the CS program at Berkeley is, how much work they had to do, how much AI they had to learn, and how superior his education was to everybody else's. But maybe it was just this guy. Anyway, the point is that you can get a fine CS education at either place.
There are differences, however, once (and if) you decide to specialize a little bit more, and especially if you want to pursue graduate study. Berkeley has strong AI, Theory, and Security faculty, but has effectively no presence in, e.g., software engineering. UCSC, on the other hand, is innovating with a CS-degree program with a focus in computer game design (this is actually a legitimate deal unlike the gimmicky programs).
Also, it sounds like you really want to get into doing IT work. Quite frankly, either degree is overkill for that sort of thing.
Sigh. Yes, you'll likely learn more than you NEED to know for an IT career with a CS degree. But be realistic: it's not like you're getting a doctorate here, and you really have to ask yourself what your upward mobility potential is without a degree staying in IT. You go from IT guy to mid-level IT guy to head IT guy maybe? These jobs are not very different. Maybe, just maybe, it tops out at CIO, but how many CIOs do you think are non-degreed? If you want to do anything more challenging and innovative than pulling network cables through ceilings and managing the rollout of Office 2012 and the inevitable flood of helpdesk calls, get a CS degree. It doesn't have to be programming. Maybe you'll be an enterprise architect of some sort, doing capacity planning, selecting systems, managing integration efforts, speccing glue services, designing and building fault tolerance approaches, and so on. Not much programming there but it's still a far cry away from "IT guy."
Speaking as someone who graduated from a so-called 'top tier' CS school and currently is involved in the hiring process at my current employer, let me tell you my experience... We see a lot of candidates coming with experience from large corporations where, after just two years, all they can say is that some long line of increasingly important people shoved them specifications and detailed instructions for the small bits of code they had to write. Very few have real design/architecture experience, so we write off the experience they do have as essentially useless for our positions, which generally involve working in a small team with complete, top to bottom control of the entire suite of applications everyone in our company uses. I feel like if you get started in the industry at a smaller company where you have exposure to the entire software development lifecycle (as much as I hate to use business speak), a few years down the road you will look much better on paper and be a much better developer.
There are a lot of CS programs out there that essentially function like trade schools, educating people on the newest languages (or not so new) and generally teaching people how to write code. This causes problems because the people that go through these programs aren't able to understand how the software works or any of the implications of the code choices they make. Essentially, they are taught the how and not so much the why of software development. Because of this, we rarely look at candidates from these schools, instead opting to look at those candidates from so called 'top tier' schools who have a good general understanding of computer science principals and are smart enough to teach themselves the languages that are required to get the job done. In other words, we look for the people who can tell us the 'why' part of software development, as the 'how' can just be looked up in a book or on Google as necessary.
As other people have said, a CS degree is overkill for a sysadmin position, which generally requires specific certifications over a more general degree. If that is what you aspire to be however, then you could do worse than a CS degree. As for computer engineering, if you have zero interest in electronics, circuitry, and microprocessor design, this degree would be a waste. If the consideration is UCSC versus UCB, I would say you would be doing your future a disservice by not switching to Berkeley for CS.
I would disagree with that completely, based on how things work at my company. The architects decide the very high level interworkings of the software infrastructure, the project managers write the specs on what has to happen from a functional/business perspective, and we (the developers) get to decide how to implement everything else.
That being said of all the positions, architects are the most senior so I imagine that they are the best paid. Even then, the architects don't design anything without the input from the PMs and the developers. It's not as clearly defined as your "idealist" view would have everyone believe.
I guess it all depends on what kind of company you work for.
That's pretty much what I just said in different words...
getting a network/system administration job will be much more dependent upon experience than degrees; of course there are always exceptions, but usually it's more important "what you've done" than "what you've studied".
maybe you can parlay taking CS classes, use some fancy human-networking skills, and get some part-time work at the university computing center (start off at help desk if you need to) and just develop an appetite for responsibility. once you're in that system, you can change your major to whatever you enjoy studying. of course you could major in Mangement Information Systems, and minor in CS or something. but when time comes to get a job, that degree plus no experience is much worse off than say an Econ. major w/philosophy minor who's been doing help desk and tech support at a university for a few years. also you don't really need to know how to program to be a good network admin, though some admins definitely benefit from knowing PERL or PHP.
i only read the OP, sorry if this is just repeating what others already said.
Posts
Comp Eng is a mixture of your Engineering reqs as well as Electrical Engineering reqs and Computer Science reqs. So basically you get a good dose of Computer Science and Electrical Engineering, plus the mathematics behind Engineering. I originally wanted to go Comp Sci but I felt the CE degree would open up more doors for me.
I also learned I'm terrible at circuit analysis. :P
From the sounds of it, the CE degree won't focus on what you want. Consider something more sys admin or networking focused.
From where you say your primary interests lay, CS is the right area of discipline for you, you'll just want to adjust your (likely to be few) electives to focus on networking. You'll still get stuck with a lot of core classes, though.
My school also had a specific degree called Computer Networking as well which took in the core CS stuff, but offered a lot in networking, sys admin, unix studies, etc. That sounds like more what you want.
Darkgrue: What made you go MS in CS? I'm not sure if I want software engineering or comp sci for my Masters.
Steam Profile
3DS: 3454-0268-5595 Battle.net: SteelAngel#1772
I got my MS in Computer and Communications Security, it was offered through the CS Department, and not Engineering (still the school of engineering though, go figure). Ended up to be a very good combo for me.
I had already decided I wanted to go that direction when I was working on my BS, I was kinda amazed that they had a program specifically for it when I needed it though (I went stright from my BS program into my MS, a course of action that I highly recommend if you can manage it - it's very hard to go back to school after the fact). Also suited me a lot better than EE - since you know, math is, like, hard. :P
I plan to get my Masters when I turn 25 which is in just over a year. I wanted to get some field work going before getting the Masters, as well as hopefully trying out a couple different jobs.
I'm just not sure what to pursue! I love coding and aim to be a sr developer, the guy that stands around and yells at the code monkeys. Kidding aside, a project lead on something large scale is a definite goal. Any recommendations for a Master based on this little bit of knowledge?
Would a CS major be relegated to mostly programming?
Electrical Engineering: Analog hardware
Computer Engineering: Digital hardware
Computer Science: Fundamentals of computing + a little hardware + more software
Software Engineering: Mostly software, some focus on management and teams
Management Information Systems: Business + Computing
Information Science: Libraries + Computing
Information Technology/Information Systems: Network and SysAdmin stuff.
If you want to be a system or network administrator, getting a computer engineering degree (which focuses on things like digital logic and circuit design) will likely not help you. You'll get more out of a traditional CS program. IT programs will be right up your alley, but IT degrees tend to be soft and vocational. As another poster in another thread put it, a person with a CS degree can generally do the job of someone with an IT degree, but not the other way around. Suffering through the CS degree might keep more options open for you in the future.
When (or if) to get your Master's is very much a personal choice. There's lots of pros and cons on both sides, to be sure. For me, I didn't have issues with "not having real-world experience", since I was working part-time in IT while going to school, and I also entered the job market during the dot-com bubble. Having a Master's did differentiate me as a job candidate. I'm not sure I'd try and pull the same stunt with a BS, MS, and a PHD though...
If you want to be a Sr. Developer, project lead, or program manager, you may want to consider getting a degree or certificate in program management, rather than a technical degree. I deal primarily with management issues and direction more than I do with technical issues. If you can blend both technical and management disciplines, you can be a pretty strong double-threat. Not everyone cares if thier line management actually understands what they are managing, but in a good environment, an engineer that can actually manage people and processes well can do really well.
The downside is, that most of the day-to-day work that leads and project managers do really has jack-all to do with engineering, which is usually exactly the opposite of what most engineers want to do. Being lead (in most places) has a lot less to do with cherry-picking the interesting technical problems and directing people to "make it so", and a lot more to do with generating Gantt charts, communicating with irascible customers, creating and evaluating employee annual goals, office politics, and TPS Reports.
...which almost makes the calculus look attractive again. :P
Still, management track has a much higher salary cap in many organizations, and having that MS (doesn't matter what in), will place you higher in your bracket.
Honestly, lots of things overlap in CS and CPE. Most of the CPE guys at my school used to take the main CS courses with us, and we took a couple of CPE ones as well. That's changed just recently, but they still overlap in what's taught, and that's primarily the programming bit. But CS really isn't just programming, it's honestly more problem solving and techniques than actually learning coding. You'll do that too, but at many schools it isn't emphasized as much, unless you choose for it to be.
CPE is essentially electrical engineering with some computers thrown in. And some programming. I hated the few CPE courses I took, but then again, I hated dealing with circuits and wires.
If you want to be an IT, Network Administrator, or the like, then honestly CPE and CS degrees will offer you little. There might be a different major to go into that's more specified. If anything though, I'd take CS, but make sure you check ahead and see if they'll have the courses you want to take eventually. Usually you won't be able to take the electives till your Junior or Senior year, so you'll have to go through some other stuff first. Oh, and CS and CPE are both heavy on the math usually.
Darkgrue: Thanks man. That actually clears a bit up for me. I'm interested in the technical aspect of code writing but I'm just not sure how interested I am for a Masters in it. And like I said a personal goal is definitely in Project Leads. I'm actually looking to get a new job in a more cubicle life/team environment (my current job is with a small contracting company, mostly flying solo with direction kinda trickling int) so I hope that experience will guide me a bit.
I would firmly disagree with some of the bullets there
Electrical: I have a friend who's doing his PhD in EE and it's almost all digital. You cover analog because you need to learn to walk before you can run. As somebody said previously, a Computer Engineer is an EE with applied study in computers.
The line between Computer Science and Software Engineering is pretty fuzzy. What the program is named usually comes down to which department administers it. If you go soft eng. be prepared to deal with all of the hardcore math that engineers get to do. An engineering degree carries some pretty technical requirements behind it, so anything that wants to be called ________ Engineering and grant a B.Eng. needs to meet those requirements.
That being said, your blurb afterwards is fairly accurate. It's sad, but a lot of places look for a CS degree, even if all the person is doing is administering windows. The logic goes that somebody doing windows admin stuff with a CS degree must be better than somebody with a "lesser" degree. I don't agree with this opinion at all, but unfortunately I'm not to the one hiring.
Computer Science is not equal everywhere. It's just like everything else; the stronger the school; the stronger the undergraduates; and then the more rigourous the course will be. My university was a top-tier UK school, where we were taught C first. That way, we could fully appreciate the power OOP and other languages give you. It's a great way of doing it, but you have to have students that can keep up with being thrown in the deep-end.
You will get more out of your schooling if you go to the best you can.
Where abouts do you want to study? The UC system in California has good CS schools; Davis, San Diego and Irvine all rank highly. University of Washington is well regarded.
Those US News rankings are good for this sort of stuff. Just remember that all programs are not the same; some prefer a large maths portion, some don't. You need to look at the class structure as well, to make sure you would be happy there.
A good CS major can do any job a CI major can, but a CI major can't do everything a CS major can. That's why they will always get more attention on resumes and salaries. CS is also a lot harder than CI. Employers will know this.
That said, Computer Engineering from what I have always heard deals more with hardware, but they do have to take CS classes to know how it relates to software.
You probably are talking about CET.
But do not do CI.
As far as schools, a good education will teach you a lot about CS, but more importantly it should also make you aware of how much stuff there is out there that you don't know. You shouldn't walk away thinking you know everything about CS because otherwise you will have had an injustice. CS is a constantly evolving field.
...by which I am going to read as "going to a crap school" which would be true.
Computer Science != Software Engineering by a long shot. I'm not going to say one is better than the other (although CS has a stronger name cachet) but they are certainly not the same courses at all.
And seriously, what maths classes do software engineers take that CS students don't? Every single SE course I have seen has less mathematics.
Building a micro controller, soldering boards, designing circuits, creating instruction sets, etc.
Computer Science is the understanding of computers. You can go all the way down to CPU level and registers, move up to assembly, compilers, programming languages, algorithms, human-computer interaction, ubiquitous computing. There is a wide variety of CS courses such as networking, multimedia, AI, databases and everything else. Programming is the method used to explore and show the effect of these components, but for a large number of CS classes, that you can program is taken as a given. The problems are not in the programming. Math classes are usually the underpinnings of these subjects, so you need to tack those on.
Software Engineering is the creation of software. This is all about programming languages, design patterns, design methodologies, systems integration, probably business classes too. Stuff like standards-interoperability or project management will come up, whereas Computer Science will usually treat them as a passing issue. It's not necessarily easier, but it is easier to find courses you can coast in rather than ones that will stretch you.
Each has their place. Schools that teach Computer Science but have students who felt they learnt software engineering have failed, and this usually comes about because the undergraduates they take on don't have the chops to cut the harder topics. I know that's a snobby sort of attitude, but from what I have seen, that's true. Schools that set out to teach Software Engineering in and of itself do much better at teaching it, and graduates are better for it.
Yeah, it's no "system admin" course. As Frylock said, that's a different subject, and I'd argue there really isn't one because IT, as I think of it, is usually a higher level than that. But you will learn enough in Computer Science to have the ability to apply yourself to those fields, if you want to learn them. If you want to be a system admin, I would take CS.
I work in a team of 7 sysadmins. 5 have computer science degrees, one has a music degree, and one has something I forget. System admin is one of those jobs that CS will give you the tools you need to allow you to learn what you need to know. I wouldn't limit yourself by doing a non-CS course.
I somewhat agree with this, except that if you are getting a B.Eng in software you have to meet all of the technical requirement that an Electrical or Civil Engineer would, and that usually involves a lot of math.
As far as how technical the CS program is: it really depends on which department administers it. The University of Waterloo in Ontario has its math dept administer its CS program. As a result I've heard that the CS program is a vicious gauntlet of math courses with some computer courses thrown in for good measure.
In comparison I went to the University of Guelph which has its own computing department which administers the CS program. By your description I got more of a "software engineering" (that is, software design and development) background.
I really don't think one is better than the other, but they certainly help you achieve different goals and spit you out with a vastly different skill set. Relating back to the OP: pick a program that you think will give you the skill set for where you want to be when you graduate.
That being said of all the positions, architects are the most senior so I imagine that they are the best paid. Even then, the architects don't design anything without the input from the PMs and the developers. It's not as clearly defined as your "idealist" view would have everyone believe.
I guess it all depends on what kind of company you work for.
If you feel comfortable telling us, what college is this?
Also, it sounds like you really want to get into doing IT work. Quite frankly, either degree is overkill for that sort of thing. I think that some schools have IT-type degrees, but I'm not sure what they'd be called (mine doesn't). The nuances of both degrees have been explained several times here, so I won't get into that.
That said, CS is generally a better bet if you want to be able to do anything with computers, but getting a CS degree and then becoming a sysadmin seems like overkill to me. However, your mileage may vary.
First off, where do you live? Depending on your state, there are several decent public schools. You already mentioned on (Berkeley), but off the top of my head I can think of Michigan, Ohio State, Illinois (UIUC), Georgia Tech (my alma mater), Washington (mad Bill Gates money, yo), and probably others (someone else mentioned Maryland and UNC, so yeah).
CE/CS is not equal everywhere. I'm from Alabama. I would not have my current job (which I like very much) had I stayed instate. Just to use Alabama as an example, UAH and Auburn actually have decent engineering/CS programs. "The" Alabama, however, has jack-all for CS. You can compare and contrast the curriculum of various schools' programs and sorta see a difference.
I'm going to be attending UC Santa Cruz. With any luck (and I believe there's actually a program that facilitates just this) I would like to transfer to Berkeley in two years.
I don't necessarily want to live out the rest of my days as a sysadmin. It's just that if I happen to find myself in such a career, I wouldn't mind so much. In the job market, where could I go from there? Like, what are the more lofty positions that a degree in CS could open up? I realize that's an incredibly broad question, but a general idea would be very helpful.
I intend to go to UCSC to study for my PhD in Computer Science so I can work with Mateas. Why do you want to jump ship so quickly? It's a good school for CS from everything I have heard.
"I wouldn't mind so much" isn't a good reason to choose a career path. Again, if you know you want to do computing but you aren't sure what, CS is your only bet.
Degrees in CS allow you to move to consultancy (business with a tech slant), programming, sys admin and such, but that's just off the top of my head. It can work as a "general" degree like History, if you want to switch up to something else when you graduate you can.
CS opens more doors than CSE does.
A quick straw poll of what my friends are doing:
- Technologist (recommends purchasing decisions and does research) for a large company you have heard of
- Programmer for a secret branch of the UK government I can't tell you about
- Working for Industrial Light and Magic
- Graduate study
- Playing guitar in a band while doing web design to pay the bills
- Running their own web hosting company (http://www.kualo.com)
And I work for a university as a sysadmin and web programmer.
And the only reason I mentioned a switch to Berkeley is because it's always mentioned as a "top-tier" CS school. Not that I've ever heard anything bad about UCSC, it's just UCB is always lauded as "one of the best." In any case, I don't completely want to switch, and I'm sure I'll have a much stronger personal orientation after I've been living there for a while. UCSC definitely has it's perks over Berkeley, after all. The campus, for instance.
Yes, the campus is absolutely beautiful. When I studied at UC Davis for a year, I was gutted when I saw UCSC (I could have picked to study there on my study abroad trip).
One thing about the "top-tier" is its very much sink-or-swim there. Most professors just don't give a shit about undergrads, they have far more important research to do. The TA might be teaching the entire class. It's definitely a trial-by-fire, and as an undergrad, I wouldn't want to be there, and a lot of my friends at UCD who had friends at Berkeley said they felt the same way. That said, if you graduate with a major from Berkeley, you can pretty much go for any job you want. I would also be lying if I said I haven't applied to Berkeley or Stanford, but I'm more confident that a postgrad gets more face time with a professor. Not that they'll ever take me
I could have gone to Oxford or Cambridge, but chose not to. There's more to university, and life, than getting your ass kicked academically every day of the week.
I think you'll love UCSC, everyone I know who went there did. Hopefully I'll see you there
It is true that taking a CS degree does not consign you to a life of programming (although you should not be able to earn a CS degree without taking at least a year of programming courses). Programming is one job that many CS degreeholders do, but it is certainly not the only one. During a good CS education, you will get exposed to things that include (yes) programming, but also software engineering (which is not the same as programming), human-computer interaction, the design of programming languages (which is not the same as programming), operating systems, digital logic, algorithms, data structures, artificial intelligence, graphics, large-scale system design, and so on.
I'm sorry, this is just wrong. I would be surprised if Killhouse had ever actually participated in a software development effort. Anybody can be trained to write code, even a 15 year old. However, working an actual programming job is much more involved than simply translating detailed specifications into C for money. Programmers make design decisions all the time about data structures, algorithms, concurrency, and so on. While it would be wonderful if all these things were specified in advance, they aren't. In a crude but useful generalization, if you went to the trouble to do so, the specifications would be as complex as the code, and then you might as well just write the code. This is why programming is interesting and challenging for most people; if it were completely rote, it wouldn't be. This is also why outsourcing programming tasks to India isn't showing the massive return on investments that were predicted--uneducated third-world programmers make bad design decisions and produce poor-quality software; it costs nearly as much to fix as it does to get it right in the first place. There is no magic "computer scientist" telling you what to write.
Philodox's description above is much more accurate. Most engineering organizations are hierarchical, with high-level design decisions being made by architects and leaders, subsystem-level design decisions being made one step down the hierarchy, and module-level design decisions being made by individual programmers. Each of these levels benefits from computer science knowledge. An individual programmer may only get an API spec and then have to implement that. If one of the functions to be implemented is sort(), that programmer has to make the decision whether to use bubblesort, quicksort, mergesort, heapsort, and so on. Your average 15 year old is not going to understand the difference. Individual programmers must be concerned with elegance and efficiency. Should a particular data structure be indexed separately for performance reasons? How should those indices be kept up to date? How should they be organized?
As pointed out above, a whole range of things. Programmer, sure. IT guy - OK. Assuming you don't want to pursue graduate work, you can be a technologist or a consultant, you can pursue a career ladder in engineering or management. Lots of options.
UCSC is nothing to shake a stick at and has a fine CS program; a friend of mine is a CS professor there, and no I won't tell you his name. Berkeley is indeed a top-tier school and from what I've heard has quite an intense and theoretical computer science program. One graduate student I studied with did his undergraduate work at Berkeley and, well, frankly he was an insufferable git. Every second sentence out of his mouth was how difficult the CS program at Berkeley is, how much work they had to do, how much AI they had to learn, and how superior his education was to everybody else's. But maybe it was just this guy. Anyway, the point is that you can get a fine CS education at either place.
There are differences, however, once (and if) you decide to specialize a little bit more, and especially if you want to pursue graduate study. Berkeley has strong AI, Theory, and Security faculty, but has effectively no presence in, e.g., software engineering. UCSC, on the other hand, is innovating with a CS-degree program with a focus in computer game design (this is actually a legitimate deal unlike the gimmicky programs).
Sigh. Yes, you'll likely learn more than you NEED to know for an IT career with a CS degree. But be realistic: it's not like you're getting a doctorate here, and you really have to ask yourself what your upward mobility potential is without a degree staying in IT. You go from IT guy to mid-level IT guy to head IT guy maybe? These jobs are not very different. Maybe, just maybe, it tops out at CIO, but how many CIOs do you think are non-degreed? If you want to do anything more challenging and innovative than pulling network cables through ceilings and managing the rollout of Office 2012 and the inevitable flood of helpdesk calls, get a CS degree. It doesn't have to be programming. Maybe you'll be an enterprise architect of some sort, doing capacity planning, selecting systems, managing integration efforts, speccing glue services, designing and building fault tolerance approaches, and so on. Not much programming there but it's still a far cry away from "IT guy."
There are a lot of CS programs out there that essentially function like trade schools, educating people on the newest languages (or not so new) and generally teaching people how to write code. This causes problems because the people that go through these programs aren't able to understand how the software works or any of the implications of the code choices they make. Essentially, they are taught the how and not so much the why of software development. Because of this, we rarely look at candidates from these schools, instead opting to look at those candidates from so called 'top tier' schools who have a good general understanding of computer science principals and are smart enough to teach themselves the languages that are required to get the job done. In other words, we look for the people who can tell us the 'why' part of software development, as the 'how' can just be looked up in a book or on Google as necessary.
As other people have said, a CS degree is overkill for a sysadmin position, which generally requires specific certifications over a more general degree. If that is what you aspire to be however, then you could do worse than a CS degree. As for computer engineering, if you have zero interest in electronics, circuitry, and microprocessor design, this degree would be a waste. If the consideration is UCSC versus UCB, I would say you would be doing your future a disservice by not switching to Berkeley for CS.
That's pretty much what I just said in different words...
maybe you can parlay taking CS classes, use some fancy human-networking skills, and get some part-time work at the university computing center (start off at help desk if you need to) and just develop an appetite for responsibility. once you're in that system, you can change your major to whatever you enjoy studying. of course you could major in Mangement Information Systems, and minor in CS or something. but when time comes to get a job, that degree plus no experience is much worse off than say an Econ. major w/philosophy minor who's been doing help desk and tech support at a university for a few years. also you don't really need to know how to program to be a good network admin, though some admins definitely benefit from knowing PERL or PHP.
i only read the OP, sorry if this is just repeating what others already said.