Slashdot Mirror


Computer Science vs. Computer Engineering?

Dan B asks: "Like many other students across America, I plan on attending college as a freshman next fall. I am very interested in computers (I only reload the Slashdot site every five minutes), but there is something that perplexes me: what major should I choose? It seems that many companies are looking for computer scientists, but would they be desperate enough to accept computer engineers? What is the difference anyway? Well, a college guidebook could tell you 'computer engineering deals mostly with hardware' and 'computer science deals mostly with software', but that isn't clear enough for me. I believe the Slashdot community would be best fit to offer a more in depth perspective on the two majors."

151 of 718 comments (clear)

  1. Computer Engineers by Kinchie · · Score: 2

    Well, computer engineers get to drive more trains.

    --
    Protege Posterioram Tuam
    1. Re:Computer Engineers by pforce · · Score: 3

      Actually, the curriculum for a computer engineer or computer scientist can vary greatly from one university to another. At the University of Illinois, for example, the computer science department is in the college of engineering. This means that we CS guys go through the same physics and math as all the other engineers in our college. This translates to five plus semesters of math, all the physics you can stand (and then some), chemistry... well, you get the idea. There is also a great deal of theory in general ideas of computer science as opposed to just straight coding. Computer architecture courses are also a big part of the curriculum. Computer science and computer engineering are different, though related, paths. I think it would be a mistake to say one or the other was inherently more difficult than the other.

    2. Re:Computer Engineers by dmatos · · Score: 2

      Well, we're taking an RTOS course right now, but it doesn't do anything useful. All it does is run a bunch of special test programs to make sure we understand things like interprocess communication, memory management, and preemption.

      Our fun classes deal more with hardware, and with programming the hardware directly. Microprocessor interfacing, digital design, etc. I like to think that we get a lot of the hands-on knowledge without having to delve into the tedious mathematical proofs that programs work that CS students have to do.

      Plus, our mascot isn't a giant pink tie :)

      --

      It may look like I'm doing nothing, but I'm actively waiting for my problems to go away.
      --Scott Adams
  2. Well... by Yhcrana · · Score: 4

    Computer engineers deal with logical bits and gates: they build the I/O that computer scientists talk to, and they design things to work better and faster than before. Computer scientists (of which I am a part) deal with the same type of information, but we deal with it on a different level: we study programming language theory, algorithms, data structures and the like. How do you contain that data? How do you sort it? Etc.

    --

    The voices in my head don't like you

    1. Re:Well... by wmulvihillDxR · · Score: 3

      Computer scientists (of which I am a part) deal with the same type of information, but we deal with it on a different level: we study programming language theory, algorithms, data structures and the like. How do you contain that data? How do you sort it? Etc.

      Even more than that, Computer Science has NOTHING to do with Computers!!! It is the study of what can be computed. If you want to break RSA encryption, you COULD do it on a Cray, or you COULD do it with rocks on toilet paper!!!

      I've had little exposure to CE so I can't comment on that...

      --
      Check out Althea for a stable IMAP email client for X. Now with SSL!
    2. Re:Well... by Anonymous+CowboyNeal · · Score: 2

      mm. I go to RIT, and I can tell you that SE is _NOT_ (and I repeat, NOT) a cross between CS and CE. Software Engineering is about engineering the software development process; it has less of a focus on CS's "algorithmic thinking" and more on churning out good, quality code in today's languages. So think about that good and hard.

  3. Don't do either by PD · · Score: 2

    Be a liberal arts major.

    You can become a computer programmer anytime. It's like carpentry, you learn on the job.

    An education on the other hand is something that you get in college. Why not learn something that will help you make sense of the world, like history?

    1. Re:Don't do either by Dancin_Santa · · Score: 3

      You can become a computer programmer anytime. It's like carpentry, you learn on the job.

      You can become a physicist anytime. It's a science like Computer Science, which is like carpentry, you learn on the job.

      You don't learn CS on the job. You may learn some programming, but that is a far cry from CS theory.

      Real Computer Scientists don't use computers.

      Dancin Santa

    2. Re:Don't do either by sparty · · Score: 2

      Or, even better, double-major--there are definite benefits to taking CS classes, especially ones that deal with theory. However, I agree wholeheartedly that there's a lot of value in having a liberal arts education. The biggest difference is that having the CS classes will probably be more valuable in an economic/job-seeking sense whereas the liberal arts classes (especially if you can focus in on areas that really interest you) will have much more value to you personally. My 2 cents, anyhow.

      (Oh, yeah, I'm considering a double-major in English and Comp Sci...aside from the threatening senior-year workload, I think it should be doable.)

    3. Re:Don't do either by jason000042 · · Score: 4
      You can become a computer programmer anytime. It's like carpentry, you learn on the job.

      Don't listen to this. This is the reason that so much software sucks. And so many web pages. People that don't really understand programming and computers write ugly, kludgy code, and they're lucky when it works.

      Computers are complex. You need to know a lot about everything. To write efficient programs you need to know how CPU's work. To make efficient CPU's you need to know how high level programming works. That's why a lot of CS and CE degrees differ by a small number of courses.

      --

      are you a dirtyfreak? I am.
    4. Re:Don't do either by ichimunki · · Score: 2

      Here goes my ability to moderate in this thread, but I just wanted to point out that this is the single best post I've seen on Slashdot in weeks.

      --
      I do not have a signature
    5. Re:Don't do either by roguerez · · Score: 5

      I'm not sure whether this was a troll or not. Anyway..

      There is a big difference between learning programming on the job en being an educated computer scientist.

      I don't mean to downplay possible intelligence, speed, intuitiveness, adaptiveness, etc. of self-made programmers, but you just cannot replace a university degree computer science with work experience.

      A good computer science curriculum includes mathematics (calculus, linear algebra, algebra, discrete math, logic, formal languages). No matter if you directly use this math after your education or not, you will be trained in logical thinking by having followed these courses. It makes you aware of current problems in computer science and mathematics and enables you to recognize such problems on the job so that you will not try to re-invent the wheel.

      Furthermore you'll learn lots about how computers, networks, operating systems etc. actually work. Although you may know a lot about computer without having studied them in university, you'll be surprised how much new stuff you'll learn when studying computer science. I knew a lot about computers before starting my studies, but know I am able to build a 1 or more bit CPU by myself if it was necessary. I would use the book of course, but I know down to the digital logic level every detail of how a modern microprocessor works. As for computer networks: my programming assignment consist of building my own networking stack including ARP/RARP, IP (with fragmenting/assembling), UDP and a TFTP server and client on top of that. The only thing I get is the ethernet driver, I have to build the rest myself.

      Even then, programming is maybe 25% of the complete curriculum.

      There's no way you'll get this knowledge when just doing programming on the job 5 days a week, without formal studying of the subjects.

    6. Re:Don't do either by Mazzella! · · Score: 3

      Be a liberal arts major. You can become a computer programmer anytime. It's like carpentry, you learn on the job.

      Don't listen to this!! The absolute worst people I've programmed with have been these sorts of people... who think they can slack through college and the "pick up this programming thing" on the job. They absolutely lack the discipline of programming, don't plan their programs out well enough, and lack the insight into useful algorithms and methods to make programs work. These sorts of people will become managers and lack the knowledge of true software engineering to manage effectively.

      If you want to get into programming, go into Computer Science. If you want to get into the hardware engineering for computers go into Electrical Engineering, since I feel the "Computer Engineering" degree doesn't go into great depth in either CS or EE (or so the programs I've been exposed to have been)

      --
      1.3L, 3 moving parts, 280 HP, no Turbos, wanna Race? RotaryNe
    7. Re:Don't do either by Amokscience · · Score: 2

      Edsger Dijkstra, winner of a Turing Award and a contributor to the field of Computer Science in many many crucial areas (proofs, path finding, semaphores, etc...), does his 'computing' with a pen and paper.

      Pure computer science doesn't focus on tools, methodologies, or implementation. It focuses on proofs and design.

      Hence the famous quote by Donald Knuth, "Beware of the above code; I have only proved it correct, not tried it."

      I happen to dislike much of this way of thinking. However, without pure CS the rest of the programming community would be far less enabled. Think of it as the difference between experimental and theoretical physicists.

      --
      Fsck cluebie moderators. I'll say what I want, offtopic or not. And fsck having to qualify every bloody statement just
    8. Re:Don't do either by roguerez · · Score: 2

      Imagine your university only teaching you things like writing COM objects and SQL queries. Then you would not have learned how a protocol actually fundamentally works, but only specific implementations of protocols. That is not science. When you've had to code one yourself, you'll actually learn how it works. It doesn't matter if it's TCP/IP or another protocol. You had to build one, therefore you are able to create another one, perhaps one you design yourself. As for SQL, in my databases class we had three types of query languages: relational algebra, tuple calculus and domain calculus. The SQL chapter was only an informative read because it's just an implementation of a formal query language. When you know about formal languages, you could pick up any real life language in a very short period. That's the whole point of a university degree. Learning 'real life' things is what you do on the job, but many time faster and better than someone without a formal education.

    9. Re:Don't do either by lizrd · · Score: 2
      Isn't that sort of like saying, "Real Chemical Scientists don't use chemicals?"

      My experience from my days as a student slave in the chemistry stockrook taught me that most real chemists shouldn't be allowed anywhere near chemicals, especially the organic chemists. Damnit, all they ever do is make really dangerous things that smell bad.
      _____________

      --
      I don't want free as in beer. I just want free beer.
    10. Re:Don't do either by styopa · · Score: 2

      Although I don't agree with PD's approach, I agree that both should be avoided as primary majors, minor or get an equivalent minor in them.

      From my experience CS and ECE majors learn "cookbook" ways of dealing with problems. Now, there isn't anything wrong with that, but it isn't the best approach. I have found that the physics and math majors do much better in the ECE and CS courses then the ECEs and CS majors do. The reason why is because physics and math are the basis for all of engineering, so not only do you have all of the knowledge gained through the ECE and CS courses that the pure majors get but you have a fundamental understanding of what is happening. The most important difference, though, between physics/math vs ECE/CS is that physics/math teaches you to use what you have to approach problems that you have NEVER seen before, whereas the ECE/CS teaches how to approach problems that look similar to ones that you have seen before. A good analogy is learning phonics vs whole language, both technically "work" but phonics teaches how to deal with new words whereas whole language requires some outside source to teach you.

      Take the courses that you are interested in, but my advice is to learn the fundamentals.

      --
      Disclamer - Opinion of Person
    11. Re:Don't do either by lizrd · · Score: 2
      . I need to find the guy, who does never ever use bogo-sort but learned programming on the fly. I don't know him yet.

      You go to a liberal arts school and learn computer science so that you know that Joseph Leibnitz defined God in terms of the many worlds theory described in the second paragraph of the bogo-sort definition. While you're there you take classes in logic, physics, math, chemistry and computer science so that you know better than to use the bogo-sort. There's a lot more to going to college than getting job training. If all you want is some job training go to a community college for a couple of years and learn to program or repair electronics or whatever.
      _____________

      --
      I don't want free as in beer. I just want free beer.
    12. Re:Don't do either by Nohea · · Score: 5

      OK, i think there is a major assuption many people here are making: you can only learn software design theory and/or discipline in an accredited CS program.

      Yes, programming can like compared to a skill.

      Yes, self-trained programmers can pick up really bad habits.

      Yes, good design and problem-solving techniques are often taught in a CS curriculums.

      However, there is no reason these skills cannot be learned by intelligent and motivated individuals outside of the ivory tower.

      Moreover, going through a CS program is not a guarantee that you will be a good software programmer or designer.

      I'm a successful programmer and software architect that has created well-designed and reliable systems for businesses. And i got a B.A. in Anthropology. Programming used to be a hobby to me. I became more interested in it at the end of my college education. After that, i learned "on my own" and took a few more classes, and got into professional programming. I found that even for "professionals", you have to be continually learning new techniques and studying new ways to design things. My liberal arts education served me well in this. I think learning on your own really means learning from others through books and the internet, and doing your own self-created experiments.

      I think if i were a CS major, i would have got a programming job sooner, but i would have to learn on my own to be as good as i am now anyway.

      There are many ways you can reach the goal you want to acheive.

    13. Re:Don't do either by PD · · Score: 2

      You really can be a physicist anytime? Really? I don't have a physics degree. Do you suppose they will let me run my experiments on the cyclotron at the university? Do you suppose that someone will pay me to learn field equations?

      If you read what the guy wrote, you'll see that he is 1) just entering college and 2) asking about careers in industry. I wrote my answer specifically for him. If he were to follow your advice, he'd waste 10 years of his life getting a PhD in Comp. Sci. then he'd find that his specialization hindered his ability to get a job as easily as someone with a Bachelor's or Master's degree.

      If the person was asking what courses to take to get into the right graduate schools in order to land a job as a professor of Computer Science, then your criticism might have merits.

    14. Re:Don't do either by Pinball+Wizard · · Score: 2
      I need to find the guy, who does never ever use bogo-sort but learned programming on the fly. I don't know him yet.

      How interesting that you quote from ESR's book. I think you should surf his site some more, you just might find the person you are looking for.

      --

      No, Thursday's out. How about never - is never good for you?

    15. Re:Don't do either by PD · · Score: 2

      >I'm not sure whether this was a troll or not.

      It wasn't.

      >There's no way you'll get this knowledge when
      >just doing programming on the job 5 days a week,
      >without formal studying of the subjects.

      Not true. I did it, and so have a great many people. Some people learn better outside of a classroom, and that includes difficult subjects like Calculus and Computer Science.

      The person who asked the initial question knows themselves best. If they are a person like me, they will learn computer science as well as anyone in a classroom. If they are the kind of person who does well in a classroom, then the suggestion others in this thread gave is a good one: do a dual major, or minor in comp.sci.

      Everyone seems to think I am diminishing the importance of comp.sci. fundamentals. Not true! I am proclaiming the strength that a good liberal arts education can provide.

    16. Re:Don't do either by Wansu · · Score: 2

      Be a liberal arts major

      I have to agree. Many good programmers have a liberal arts background. Lots of programmers are musicians.

      --
      Wansu, th' chinese sailor
    17. Re:Don't do either by PD · · Score: 2

      Hard to get a job with a liberal arts degree???? Consider the following (not so serious!) resume:

      Employment History
      1988-1990 *Professor Smith's Lab* College programming job. Did what Dr. Smith wanted. Blah blah blah.

      1990-1992 *Bob's Software Emporium* Entry level job at a 3 person programming shop. Built lots of blah blah blah.

      1992-1994 *Millie's Mid Level Foo Works* Programmed with a team of 5 people, in a company of 35, blah blah blah

      1994-1998 *Somewhat larger company* Built lots more crap for a bigger company

      1998-2001 *Even bigger company* Movin' on up. Mega corp programming, blah blah blah

      Education
      B.S. University of Idaho, History, 1990

      This isn't unrealistic at all. The employer looks at the resume and says "WOW! 13 years experience!" He doesn't give a shit about the history major.

    18. Re:Don't do either by ashultz · · Score: 2

      A lot of the difference is having had a few courses in algorithms, data structures, and theory. Even good self-taught programmers tend to have to reinvent wheels which an attentive CS major will have been taught about already. Red-Black trees, anyone? O(n) vs. O(n^2)? Someone who has been through a CS major will know what to make of stuff like this.

      Mind you, being a CS major doesn't make one a good programmer, but it helps make a good programmer into a deep programmer. And lack of a real CS education has produced a lot of bad code from smart people.

    19. Re:Don't do either by KevinMS · · Score: 2


      I agree many people learn better outside the classroom, and often at a pace that makes a CS students look like they're in kindergaten, they laugh at this blind devotion to a degree when the actually knowdledge of these graduates is just random sections of a few text books, less then what they usually pick up at a bookstore in a day.

      Also, I dont believe there is any degree that proves you are a good programmer which is much more important than a "computer scientists" in terms of demand and employment.

      Also, whats this dogma about math being so essential to computer programming??? Take for example apache, slashdot, navigator and linux. How much math is in there? And if there is, how much is not wrapped in a nice library? C'com people, isnt it obvious, programming isnt about math or calculations, its about good writing. You have to be good at explaining to BOTH the compilier/interpreter AND other programmers what your program should do.

      To all those arrogant cs degree holders who think you're what its all about think about this: somebody who is self educated in the programming business has proven that they can do it again when the technology changes, degree holders have proven then can pass tests and labs, who would you hire?

      --
      Sneakemail is to spam filters what an ounce of prevention is to a pound of cure.
    20. Re:Don't do either by fmaxwell · · Score: 3
      you just cannot replace a university degree computer science with work experience.

      And you just cannot replace work experience with a university degree in computer science. If given the opportunity to hire someone with four years of professional programming experience or someone with a four year CS degree, I will take the person with the experience. I don't need someone who knows language theory, calculus, and how to how to reinvent network stacks. I need someone with practical experience related to the work they will be assigned. I have seen degreed engineers completely blow projects because they lacked the professional experience to be successful. They did not understand schedules, budgets, or office politics. One spent days reinventing something rather than just purchasing a commercial library. He thought it would save us money!

      There's no way you'll get this knowledge when just doing programming on the job 5 days a week, without formal studying of the subjects.

      What makes you think that universities are able to attract skilled computer science professionals to teach there? Most professors make a pittance compared to what a talented software engineer can make in the private sector.

      I dropped out of college to take a software engineering job. I learned far more in that job than I would have ever learned in college. The professors and instructors that I had in college knew less about software/firmware engineering than I did and some of them were downright incompetent. The inefficient, brute-force programming demonstrated by some of them is probably to blame for the code bloat that has caused common business applications to require 650MB CD-ROMS as distribution media.

      While it would be absurd to condemn all degreed engineers or college professors, assuming that people with college degrees in computer science will be better software engineers is equally ludicrous.

    21. Re:Don't do either by tokengeekgrrl · · Score: 2
      I don't mean to downplay possible intelligence, speed, intuitiveness, adaptiveness, etc. of self-made programmers, but you just cannot replace a university degree computer science with work experience.

      I take no disrespect to your statement and I am a self-made programmer. I have a question for you, though, if you don't mind me picking your brain for a moment.

      I did take some computer programming and math, (I took some advanced calculus and logic but had already placed out of regular calc and linear algebra), in college but did not major in either because both depts were very unfriendly towards women and I was paying waaay too much money to deal with such animosity in my major. I concentrated on political science and music instead, music theory satisfying my appetite for math.

      I picked up computer work during and following college and it came quite easily to me. While contracting back in 1995, I took it upon myself to complete a Programming Concepts and Algorithms class. I've also taken other classes from Oracle, Informix and other companies to administer or develop for their products but I don't consider those to really count.

      I constantly feel like I'm lacking in my skills and want to go back to school. I've even talked to some schools who would allow me into a masters of computer science provided I take a few undergraduate cs courses in assembly language, algorithms and pass a calculus test given my 6+ years work experience (I know it's nothing compared to many many people but hey, it's a start).

      My problem is that first of all, I'd have to go back parttime as I do not see it as in my best interests to leave the field completely, particularly because I'm lacking in a formal degree. Secondly, would it be worth it? Should I just go back for another undergraduate degree? Some schools do offer a 2-year undergrad CS degree for professionals who already have a non-CS degree. Or should I go back for Math instead? I really do love math so I'm tempted but would the CS degree be better?

      Thanking you in advance for your consideration.

      - tokengeekgrrl

    22. Re:Don't do either by MaxGrant · · Score: 2
      What does a Liberal Arts Grad say to an Engineering Grad?

      He says your grammar is atrocious, your argument is based on specious generalizations, your logic is abominable, and he makes plenty of money as a self-taught programmer anyway. Along with some stuff about how plotting a novel (or an essay, or a piece of music), writing it all down, and revising it with merciless attention to detail and internal consistency not being a whole lot different when the code is in C++ rather than English, or musical notes. Talent is talent. Discipline is discipline. Brains are brains. The first programmer had to teach himself. Who says I can't do it too? Not my employer, who pays me awfully well.

    23. Re:Don't do either by raju1kabir · · Score: 2
      I have experience in construction, some computer science, and I'm majoring in computer engineering. I highly doubt that someone could learn in their spare time how to write the code and build the machine that you sat down at to write your post.

      That's because you're knee-deep in the academic environment even as we speak. This environment thrives on creating artificial complexities and mysticisms surrounding subject areas in order to justify its expense and time and trappings and prestige.

      Or, less charitably, you're sitting there in college, and finding it quite hard despite having tutors and classmates and books to help you, so you couldn't even imagine how someone else could master the material without all those aids.

      Out in the real world, gifted programmers are split pretty evenly between the school-trained and the self-taught. Many of the brightest, most capable and widely respected never bothered to finish school.

      Likewise, many celebrated physicists and mathematicians throughout history have been entirely unschooled.

      Credentials are nothing (except for vendor creds like MCSE, which are substantially less than nothing). Capability is everything.

      --
      "Patriotism is your conviction that this country is superior to all other countries because you were born in it." -- GBS
    24. Re:Don't do either by alienmole · · Score: 2
      I think you could help answer your own question by trying to identify more clearly what you want to get out of going back to school. You mention that you feel that you're "lacking in [your] skills". I know people who've gone through full undergrad and masters degrees in CS who still feel that way when it comes to writing code in the real world, so I think you need to figure out more about what you need or want to know more about, and try to find a school that'll give you that, or even pursue that knowledge outside of school.

      If one of your goals is to have the piece of paper that says you're a qualified computer scientist, then clearly you have to go back to school in some form to get that. But if that doesn't matter so much to you, there are plenty of ways outside of school to gain knowledge that's directly relevant to your skills, or that will provide you with an excellent foundation to work from.

      If you're good at studying by yourself, on the CS side there are classic textbooks like SICP (link has full text; also see the Slashdot review) and other reference books like Knuth's The Art of Computer Programming, or more focused books like Aho et al on Compilers. Studying material like this on your own can be difficult without any guidance, which is of course one of the reasons people go to college. But starting along this road may also help identify what you're interested in and what you're not, and where your strong and weak points are. That could help you choose your next step.

      If you do start self-studying, some social support can help - joining mailing lists related to the topics you're interested in, finding local people who're interested in pursuing something similar (perhaps via clubs), etc.

      Aside from the traditional pure CS material, there are plenty of good books out there that relate more directly to the world of work. One book that I've recently found helpful is "Analysis Patterns - Reusable Object Models" by Martin Fowler. This covers patterns that arise often in general business and financial applications, so may not be the kind of thing you're looking for specifically, but I mention it as an example of the kind of stuff that's out there - there's far more than just "Java for Dummies", and if you want to improve your skills and knowledge, you should seek some of these out.

      If you do go back to to school, I think in some respects, Math might be a better choice, since (a) you really love it and (b) I think it's a "deeper" subject - compared to many advanced math topics, much of computer science is simple by comparison. But this comes back to what you want out of it: a math degree would open up science and engineering jobs that you could never get without it, but it doesn't directly provide you with CS skills, although a smart employer should recognize that a math major with CS skills is a great catch.

    25. Re:Don't do either by dubl-u · · Score: 2
      Be a liberal arts major. You can become a computer programmer anytime. It's like carpentry, you learn on the job.
      Don't listen to this!! The absolute worst people I've programmed with have been these sorts of people... who think they can slack through college and the "pick up this programming thing" on the job. They absolutely lack the discipline of programming, don't plan their programs out well enough, and lack the insight into useful algorithms and methods to make programs work.

      You may not be aware of this, but getting a liberal arts degree is different than slacking through college. There is some correlation, but the two are distinct pursuits. People who think they can slack through anything will be bad coders and worse designers. But a CS or CE degree is no guarantee of being useful.

      Some of the worst code I've ever had to untangle was written by people with a CS or CE degree; they were so used to doing short projects that they handed in and forgot that they never learned what it takes to write code maintainable over the long term.

      At least a liberal arts major approaches the buliding of software knowing that they don't know everything, whereas many people with freshly minted C* degrees are unaware of that. This is especially important when dealing with non-technical issues like software usability, working in a team, understanding the business needs, and surviving office politics.

      My personal experience is that experienced developers who lack formal training are much better at overcoming obstacles than those who only have technical degrees. This is probably just because the less driven and adaptable types without degrees give up before making a career out of it, but it's still an important difference when hiring.

      That's not to say that CS or CE degrees aren't useful or worthy pursuits; I'd recommend it to anybody who wants to be a top-notch progammer. But I would also recommend a strong dose of liberal arts: without understanding the broader context into which your code fits, your horizions are much more limited.
    26. Re:Don't do either by roman_mir · · Score: 2

      Hi Kevin.
      I was reading through all this thread and realized that there is nothing to add to all that was said but by the time I got to your post I had developed a picture in my mind that discussion in this thread takes place between two groups of people - self taught programmers who have not being formally educated in computer science and computer science students who mostly started programming in their cs courses.
      Let me introduce you to another side of discussion that may not have hit you as obvious - myself.
      I was twelve when I read my first programming language book (I am 24 now,) the book was on Basic programming. I did not own a computer, and I did not know anybody who had one (have grown up in the former Soviet Union and at that time PCs where not around there.) I wrote my own simple programs and games into my paper notebook. I got my first computer programming experience with Atari 600 and later Atari 800, and then something called a Spectrum system (a complete computer in your keyboard with 512Kb on board memory and a tape player.) I was in my first year of college in Ukraine, I was 15 when I got to use networked computer facility (not IBM not MAC, I couldn't even tell you what those machines were.)
      I immigrated to Israel where I learned Pascal, Turbo Pascal, C and C++ on my own. Immigrated to Canada and while spending day time in Dawson college in Motreal I was disassembling software at night time on my own 386 (seven years ago.) In 1996 I went to UofT (University of Toronto) into a CS prlogram and I am happy I did. I was forced into calculus all over again and linear algebra but I was also taught boolean logic formally, inductions (good for proofs of correctness - I actually used this at work once to prove that something was infeasible to do in a given time frame.) I was taught Data Structures, why there are different data structures, what types of algorithms to use with different data structures for inserts, deletes, updates, searches and other manipulations. Computer organization courses let me understand what really happens inside the machine, how to use logic to build hardware. We actually built 4 bit adders and even a simple version of CPU with internal bus, registers, IP (instruction pointer), instruction set, ALU and simple memory.
      Scientific, symbolic and graphic computation theories - that was tough, but I am glad I took that - they show the inadequacy of naive computer solutions and techniques to remedy inadequacies. Symbolic computaion, plotting, 3-D graphics and conventional programming languages.
      AI and Principles of programming languages courses taught me lisp, scheme, prolog, ml.
      Operating systems course allowed me to built portions of OS kernel in java :) imagine - HD and Memory management, Caching, multitask schedulers done in Java.
      I learned something about Business in Business of Software course - we had various speakers and even Fred Sorking (CEO of Hummingbird) was there to tell us something. I really liked that course.
      Of-course I had to take courses I did not want to and did not like taking (Stats for example) but, what are you gonna do, they forced us to do that...

      I started working in industry on my second year of the UofT working for a small startup that grew into 70 people in 3.5 years. Did projects for Bell Mobility, Canada AT&T, Canada Xerox, Canada Coke, and more during 3.5 year period, learned a bunch of stuff from my work, learned more about business and now I am working as an independent contractor for almost two months at a market rate.

      What I want to say is that there is no substitute for formal education at your workplace. There is no substitute for the work experience you may get on the job. The combination of these can be more powerfull and more useful for you or anyone who wants to become something more than just code cruncher. On my new job I just redesigned portions of their project to run sixteen times faster than what it was by identifying the most important bottlenecks and introducing new techniques like an assynchronous message queue a simple version of which I just finished building for my employer - very good results.
      In 5 months no one here could get the same results - is it thinking within the box?

      Anyway, I gotta go, but think - it's should not be 'either or', it probably is better when you have 'and'.
      Cheers
      Roman

  4. Simple. by The-Pheon · · Score: 3

    Give up now! If you "only reload the Slashdot site every five minutes" you will have no time for your classes and it would be a waste of money to go to college! =D

    1. Re:Simple. by dboyles · · Score: 2

      ... it would be a waste of money to go to college!

      Excuse me? Aren't you forgetting a little something called "bandwidth?" Everybody knows that the only reason for living in the dorms (and going to school in the first place) is for Ethernet.

      --
      -- "Complacency is a far more dangerous attitude than outrage." -Naomi Littlebear
  5. Lame Joke. by SpanishInquisition · · Score: 2

    The problem with Engineers is that they cheat in order to get results.
    The problem with Mathematicians is that they work on toy problems in order to get results.
    The problem with Computer Scientists is that they cheat on toy problems in order to get results.
    --

    --
    Je t'aime Stéphanie
  6. Well, what do you want to do? by ScuzzMonkey · · Score: 2

    You didn't really mention what your career aspirations were. Hard to give advice on which to pick when we don't know where you're headed.

    IMHO, there's so much confusion in the marketplace over the differences in such terms that you should really worry more about what you want to learn and take classes appropriate to that. Some places, they're looking for sysadmins, they want you to have a comp-sci degree--other places, comp-engineering, for essentially the same role. Frankly, I think that most companies who specify their requirement so narrowly do so just because it sounds good, not because it really makes a difference in the job you'll be doing. I look for companies that are more concerned with your analytical skills and technical abilities than your credentials.

    --
    No relation to Happy Monkey
  7. CSC vs CEng by FigBugDeux · · Score: 4

    If you are more interrested in writing Windows (Linux) Apps, Web stuff, or DB stuff, get a CSc degree.

    If you want to work on embedded systems, or on DSP stuff, get a CEng degree.

    If you aren't sure, get a CSc degree. If you aren't good at Math, get a CSc degree, a CEng degree is four years of math.

    90% of jobs can be done by either a CSc or a CEng, and 5 years after you grad it won't really matter, it'll be your exerience that counts.

    i started of in ceng and switched to csc... you need a _huge_ ego to do ceng.

    1. Re:CSC vs CEng by MAXOMENOS · · Score: 2

      Let me add to this: if you are good at math, do either CS or CE. If you do CS, consider a minor or second major in Math.

      If you decide that you don't like CS and want to pursue a more CE route, you can get a Masters' degree part-time that will allow you to make that transition. Same with CE and wanting more of a CS background.

      ObJectBridge (GPL'd Java ODMG) needs volunteers.

    2. Re:CSC vs CEng by bridgette · · Score: 2

      If you aren't good at Math, get a CSc degree

      I'm *still* traumatized from Algebreic Structures (abstract algebra), and I graduated 5 years ago!

      Any math class where you use a set of operations and a set of formulae to solve a set of equations is a cakewalk. Yeah, you might have a problem that is many pages long, but as long as you take your time and are careful about checking your work, eventually you will get some reasonable answer.

      I can't even tell you what I did in abstract algebra, I've supressed most of the memories, but I know it did not involve any actual numbers (eg. involving the digits 0-9). For the first five minutes of the first class the professor covers everything you've ever learned about set theory (eg. Venn diagrams). The remainder of the semseter is them spent trying to comprehend an endless stream of "Let [letter] be a [entity] (and let [letter] be a [entity])* then [letter][symbol]([letter][symbol])* is a [entity]; Let [letter] ....." I vaugely remenber loosing my shit around the time of the "orbit" chapter.

      I can't look (under the advice of my therapist) but you can, if you must:
      http://www.math.niu.edu/~beachy/aaol/rings.html
      http://www.math.niu.edu/~beachy/aaol/structure.h tm l

      --
      - bridgette
    3. Re:CSC vs CEng by CaptainCarrot · · Score: 2
      If you aren't good at Math, get a CSc degree, a CEng degree is four years of math.

      You are completely off your nut. I was a CSc major and could handle the math the engineers had to do with half my brain tied behind my back. The math required for CSc was the most abstruse I have ever encountered, especially when it came to language and automata theory. It's dense.

      Here's a clue: In institutions where they do not have dedicated departments for these subjects, the equivalent of a CEng goes through the EE department. A CSc goes through the Math department.

      --
      And the brethren went away edified.
  8. Plan of attack by OlympicSponsor · · Score: 4

    First, unless you absolutely must, don't declare a major. Just take required classes your first semester to get them out of the way. If the school is large enough, every class will be offered nearly every semester anyway so you'll be in no danger of falling behind.

    Second, talk to your advisor. This is invaluable. They will be able to explain the your different options (or point you to someone who can).

    Third, as a quick guide. If you are interested in "computers" take an intro class that covers a wide range of topics so you'll get a feel for what's available. Also talk to fellow students who have related majors.

    If you are interested in "programming" just go ahead and start in on the Computer Science major and decide on a concentration later. I would very strongly warn you against some kind of vo-tech, "we'll teach you VB and send you out into the world" type of major. Take the full science path--it's definitely worth it.
    --
    Non-meta-modded "Overrated" mods are killing Slashdot

    --
    Non-meta-modded "Overrated" mods are killing Slashdot
    (Hey Ryan! Here's your proof!)
    1. Re:Plan of attack by fsbogus · · Score: 2

      I would suggest that you double major in both and drop one after two years. At that point you should know what you like. The course load overlaps. Lots of math. Skills used at either discipline are applicable to both. If you don't wish to double major then major in one and minor in the other. Either way there is much overlap in courses. However in any event you are not very likely to take easy, mellow courses with which to explore the liberal arts side of your mind. There just won't be much time left with a double major or a major with a minor.

      --

      The statement below is FALSE

      The statement above is TRUE

    2. Re:Plan of attack by BlueFrog · · Score: 2
      Second, talk to your advisor. This is invaluable. They will be able to explain the your different options (or point you to someone who can).

      This is good advice. There's no substitute for talking to someone who knows the territory. However, make sure you do everything you can to get to know the system yourself. I have been led astray several times by incompetant advisors; on one occasion, only intervention from the Dean of Students kept my graduation date from being threatened. Had I taken the time to truly understand University policy, I could have saved myself the headache.

      Also, recognise that your classmates (especially upper-classmen) are absolutely invaluable in helping you make good decisions. From things as simple as which classes/professors to avoid/seek out to the more subtile, like helping explain the convoluted academic policies you're likely to encounter. Talk to your fellow students, and listen to what they say. This information is ususally better than any you will get from your advisor.

      If you are interested in "programming" just go ahead and start in on the Computer Science major and decide on a concentration later. I would very strongly warn you against some kind of vo-tech, "we'll teach you VB and send you out into the world" type of major. Take the full science path--it's definitely worth it.

      Couldn't agree more. Anything not directly associated with the CS dept. is likely to be a serious mistake if you want a career as a techie. (ie, programming, not just managing programmers.) What you get from a Computer Science degree are the fundamental concepts that help you learn new languages/techniques/etc. I always thought that Scheme might just be a waste of time, but over and over again I've found the concepts I used in writing good Scheme code (high-level stuff like abstraction & simplicity, as well as techniques like continuation/closure passing) useful in my every-day programming.

      In short, if you want a technical job, I urge you to go the Science route.

    3. Re:Plan of attack by Black+Parrot · · Score: 2

      > First, unless you absolutely must, don't declare a major.

      I've got nothing against that strategy (I'm fond of the "scenic route" approach to life, myself), but be careful about it if you want to finish in less than six years. I know of reputable schools where the CS major has prereq chains 9 semesters deep, and enrollment pressure at some of those schools means that you aren't guaranteed the courses you want even when you're a senior. (I know guys that have had to stay an extra semester just to take one class that they needed, and I've heard of people that had to stay two extra semesters for the same reason.)

      --

      --
      Sheesh, evil *and* a jerk. -- Jade
  9. Similar difference. by cyb0rq_m0nk3y · · Score: 2
    Yeah, damn engineers - can't live with 'em, can't kill 'em. Just like those damn programmers - its that whole law and morality thing. If we could just get over the whole death thing, we could kill either at will, and no one would care.

    p.s. - half the programmers I know used to be engineers, but gave up on getting lousy jobs so they could do something they actually enjoy. Only one of them has an actual Comp.Sci degree, and what they do sucks ass.

    not like anyone will actually read this...

    --
    eat shit and die, Bambi!
  10. Science v. Engineering by dissipative_struct · · Score: 5

    Well, semantically, CS deals with the "science" of computers, while CE deals with the engineering aspects. If the academic computer tracks stuck the the normal definitions, the CS track would stress algorithm development, mathematical analysis, computational theory, etc., while the CE track would stress creating software and hardware systems to solve problems in the real world.

    In reality, there's very little difference between the two majors. Both will teach you basic computer programming, a little bit of hardware, and some of the supporting math. A CE degree will probably require you to take a few more engineering courses, while a CS degree might have some more math. Really, I would consider those two degrees interchangeable, with the specific education you get depending more on the school you attend than the name of the degree.

    My personal opinion? Get a physics or math degree with a CS/CE double major/minor if you want very high-level technical programming jobs (in an engineering firm, for example) or if you want to do academic work. Get a CS/CE degree (don't really think it matters which) if you want to be a software engineer/software developer. If you just want to make some quick money and have no strong love for computers, get a quick certification. Note that these are just general guidelines... I know several great technical programmers who are entirely self taught, and I know one guy with a BS in CS and and MS in Math that can barely write a "Hello World" program in C.

    1. Re:Science v. Engineering by leko · · Score: 2

      I have always thought that there should be a distinction between Software Engineers, and Computer Scientists. Well... There already is a distinction, but I think schools should off them as two separate majors. Software Engineers will become code monkeys. They will be well paid, and that is good because that was probably their intent.

      Computer scientists on the otherhand are more interested in the math and theory behind the applications. Computer Scientists do less "useful" stuff, speaking for the present, and are really just software academics. Its sort of like the difference between those who use ML and those who use Java.

  11. a must-read IMO by Kwantus · · Score: 3

    'fraid I've no grand advice other than to suggest you take the myth of a SW labout shortage into account.

  12. Nice comparison by Eoli · · Score: 2

    Can be found here. Written by a professor at California PolyTech.

  13. CS vs. CE by zuvembi · · Score: 2

    I just graduated from University of Cincinnati with a degree in Computer Engineering. One of my friends was in the UC CS department (he graduated at the same time). YMMV at other universities.

    The differences and similarities seemed to me to be.
    1. Same amount of math
    2. CE -> more HW, gate level, analog design - VLSI optional minor
    3. CS -> a lot more 'theory'

    Ex. Algorithms for CE was "Here are these algorithms, Big O notation, this is what each is good for, apply some of them, learn how to use them and research them." For CS majors is was "Prove these algorithms work, analyze them, workworkwork, don't program them or do anything practical with them".

    4. CE more learning how to program and how to learn the principles behind the language. CS seemed to involve a lot more pointless suffering.

    5. After finishing the CE course, I can design everything in the computer and it's software except the power supply and the chip masks. After the CS program my friend learned how to program in LISP and x86 assembler.

    If you're schools program is like this, it's an excellent way to learn to program / design computers. But if it's just an EE program with some programming classes, you probably don't want to take it.

  14. Get a course catalog by dmorin · · Score: 5
    See what the course load is like for both majors. Then look up the courses. See which ones you think you'd like better. Go for it.

    Please for the love of God don't be asking which one will make you more money. People wonder why managers are farming out good jobs to India, it's because American kids are walking out of college and saying "Whaddya mean you're not gonna pay me $100k? What did I go to school for?"

    1. Re:Get a course catalog by nosilA · · Score: 3

      This is probably the best advice I've seen! The programs vary vastly from school to school, what is "CS" at one is "CE" at another or "IT" at another. For the most part, any place hiring programmers will consider CS and CE the same way - it's only really hardware or really theoretical jobs where they care either way.

      For example, at my university, there is Computer Science, Electrical and Computer Engineering, and Information and Decision Science.

      CS is focused on algorithms, data structures, compilers, although there are some system options.

      ECE has a lot more flexibility, you can essentially get a CS degree with only a few hardware classes, or you can get essentially a physics degree, or the more traditional EE curriculum...

      IDS is where you go if you want to be an IT/web whore, you have to take a few "real" programming/algorithms type classes, but it's mostly web applications and such.

      But, YMMV at any school, so get the catalog, talk to students, etc. Be warned, most students will answer that theirs is best - listen carefully to why they think so.

      -Alison

  15. Computer Science by cnkeller · · Score: 2
    I got a ComSci degree from UMD. Very heavy on theory, ie prove this algorithm runs in this time, design a better scheduling algorithm for your OS,create a language and build the compiler, etc. Very language independent. Most of my projects were implement this, we don't care what you do it in, C, C++, Lisp, etc. In fact, I was never taught a language, I was taught language theory; heaps, call by reference/value, etc. You were expected to learn the language on your own. Probably my best example was my compiler theory class. The professor said "I don't care if you can build a compiler or not when you get out of this class. In ten years you won't even remember how (asusming you don't do it for a living). What I expect is that you will know how to read the book for the rest of your life (the Dragon book). That way, you'll know how to build one if you need it down the road."

    As a computer scientist, I can be expected to pick up any new concept reasonably quickly, becuase I learned the practice, not necessarily the implementation. It was also way heavy on math.

    We didn't have a computer engineering program (although they may now), so I'm not sure what that is, but odds are it bridges the EE/CS gap.

    --

    there are no stupid questions, but there are a lot of inquisitive idiots

  16. The difference is literally academic. by emil · · Score: 2

    If you take the engineering track, you will spend a year learning the physics of transistors, another year studying communications and signal processing mathematics, and much more time studying material which you will never use. Along the way, you will have a few interesting courses, especially if your department if flexible with the electives.

    If you go comp sci, you will spend loads of time programming in Pascal, lots of time writing compilers (without even the slightest introduction to yacc), and learning lots of stuff you will never use. Along the way, you will have a few interesting courses.

    You can tell the date that a professor receives tenure, as that is the date that they stop keeping up with general changes in IT. A truly useful degree in either field should ideally involve a professional certification, but I've never heard of any large institution doing it (which can be attributed mostly to hubris).

    If you want a narrow focus in comp sci, then go comp sci. If you want a broader exposure to the physical sciences in general, go with engineering. You will not use up to 90% of what you learn in the field. Such is a degree.

  17. As a Computer Enginnering Student: by sl3xd · · Score: 5

    I'm currently a Computer Engineering student, so I think I have some qualifications to describe the difference.

    A Computer Science major deals primarily with programming and algorithms. They write programs, Operating systems, high-level drivers, etc.

    An Electrical Engineer deals primarily with hardware - logic gates, and designing hardware that will perform algorithmic computations. IE. they design chips. These are the guys who work for Intel, AMD, etc. They don't worry much about programming.

    A Computer Engineer is an Electrical Engineer that specializes in programmable computer devices, and therefore programming. So a CompE is mainly an Electrical Engineer, but also does a great deal of programming. Some CompE's design hardware, others write extremely low-level software, drivers, etc. Computer Engineers quite often work in the embedded market, as they have the skills to do both the hardware and software engineering involved.

    Think of an Electrical Engineer as a geek who designs computer chips with a minor in math.

    Think of a Computer Engineer as a geek who designs computer chips with a minor in Computer Science.

    Think of a Computer Science major as a geek who programs computers, and doesn't design hardware.

    And, in my opinion, it's funner to be a CompE because you can be doing hardware on one project, then software on the next.

    --
    -- Sometimes you have to turn the lights off in order to see.
    1. Re:As a Computer Enginnering Student: by GPFCharlie · · Score: 2
      As a ECE graduate, I have some experience in different areas.

      My univ. happened to combine both Electrical and Computer Engineering in one degree, although there were "concentrations" in 5 different areas (ranging from pure physics to pure EE to CE to almost pure CS/programming)

      By far, it differs according to your school. Each defines their degrees slightly differently. The best thing you can do is avoid concentrating until you absolutely know what you want to do. I was fairly fortunate that my school required me to take different classes in different concentrations to earn my degree. I ended up with a lot of broad knowledge because I was interested in a little bit of everything!

      From my experience, a "pure" CE student will focus on: state machines, instruction set architecture (assembly and lower), and processor/chip design. My CS friends tended to take more mathematics (algorithims, set theory, etc.) and deal with issues such as how to write drivers, graphics, OS, etc.

      From an employment standpoint, it makes extremely little difference. I graduated having realized that while I could program, it wasn't my favorite activity in the world. Unless you're applying for a very specific role (chip design at Intel, c++ developer, etc.), your major will play very little role. Employers are looking for your experience. What classes did you take? What projects did you do? What employment opportunties did you take? What do you do for fun that fits their field/profession? As long as you have the basic skills required, your degree signifies that you have the knowledge needed, and the ability to work in an environment to accomplish goals. They'll teach you the rest. If you don't find yourself learning in your new job, then it's time to move somewhere else, you're not being utilized.

      Hope this helps. :)

      --
      Somedays it's just not worth chewing through the restraints...
    2. Re:As a Computer Enginnering Student: by Chris+Siegler · · Score: 2

      Think of an Electrical Engineer as a geek who designs computer chips with a minor in math.

      Think of a Computer Engineer as a geek who designs computer chips with a minor in Computer Science.

      Think of a Computer Science major as a geek who programs computers, and doesn't design hardware.

      I like your breakdown, basing it on the hardware. But you can also look at it from the opposite end, from the user.

      A CS writes programs for users, even users who happen to be other engineers.

      A CE writes programs another abstraction away from the CS, programming for programmers.

      A EE writes the stuff that forms the foundation for those CS and CE hackers.

      Being a CS or sorts (Math), I often envy those EE's so far from the users.

  18. Mathematics or a hard science by Anoriymous+Coward · · Score: 3

    Any good course in these subjects will contain a fair bit of programming along the way, with the benefit that they won't tell you how to do it. You'll get a good grounding in critical thinking and methodological approaches to solving problems, and you get to teach yourself programming to do the course work, which is how 90% of real-world code gets written - i.e. to solve a problem.

    Disclaimer: I am a Maths graduate. I didn't take the programming options because they cut into my drinking time too much.

    --
    #include "stdio.h"

  19. The difference.... by KnightStalker · · Score: 2

    Computer science: much math-based theory, some programming

    Computer engineering: much hardware design, hardware theory, some programming (assembly, C, C++)

    Software engineering: tiny bit of hardware design, some theory, much programming, some software development process

    --
    * And remember, it's spelled N-e-t-s-c-a-p-e, but it's pronounced "Mozilla."
  20. Re:Course Choices by Bellwether · · Score: 2


    *Please*, don't go to a school that thinks a CS degree means you can program, in any language, whetehr it's VB,C,C++,Java, etc. Computer Science is not about programming -- as has been reiterated above. It's about understanding the core principles and paradigms of algorithms, theory of computation, operating systems, and language. It's about networks and about compilers, not about code. Computer Scientists are linguists, operations researchers, mathetmaticians, and prophets. They are not primarily coders. Don't confuse computer science with computer programming!

  21. CE vs CS by rlowe69 · · Score: 2

    As guy who switched from third year Computer Engineering to a new Software Engineering program, I can tell you that Computer Engineering IS a lot of hardware. However, at my school it consisted of a lot of signal analysis, which if you don't like *complex* math, I don't recommend.

    I mainly made the switch because Software Engineering is more generic, more open to moving around to different areas. Once you know circuit theory and advanced signal analysis (ie. DSP) you are slotted in a specific area.

    Keep in mind though, people like ASIC designers make good coin.

    rLowe

    --
    ----- rL
  22. It's all about the focus by Gen-GNU · · Score: 2
    Computer Engineering, (at least at the college I attended), was a hardware degree with a software focus. Computer science was a software degree, with no hardware. I decided on CompE, so read the below with my bias in mind. =)

    In my experience, both comp sci and comp E majors could program. The real difference came when you crossed software with hardware, like in embedded programming.

    If your goal is to write object oriented software, on user level applications, or create the next set of tools to be used for development, go comp sci. If you want to get into embedded stuff, it sure is nice to understand the hardware you are working with a bit.

  23. Re:Your preference by yamla · · Score: 2

    I agree with most of what you said. However, note that at my university, Computer Engineering is significantly easier than Computer Science. There is a huge amount of overlap between the two, of course. CompEng students take many of the same compSci courses, at least for the first two years. CompSci students take many of the same eng courses (though harder math and english courses, of course).

    --

    --

    Oceania has always been at war with Eastasia.
  24. Re:Computer Engineering is about Digital... by korinthe · · Score: 2
    CS = dotcom whore. You'll probably go into IT or be a code monkey

    Yeah. Because Cormen, Knuth, Sipser, Rivest, van Dam, etc. are such IT whores and code monkeys.

    The robustness of the degree depends not so much on the field but on the degree program at the school in question. You can go to any number of schools and get a degree that prepares you to be very good at IT, software engineering, etc. That does not completely describe the field of "computer science", however; it describes some of the applications of computer science. A scientist is a rather different creature by necessity.

  25. EE476 Lab at Cornell by ch-chuck · · Score: 2

    was just here a little while ago - an example of Computer Engineering. You decide.

    (PS - you can get an AT90S8515 kit for about $70 here )

    --
    try { do() || do_not(); } catch (JediException err) { yoda(err); }
  26. I'm a CompE and suggest it by FortKnox · · Score: 2

    I'm a programmer. Been so every day of my life. I chose CompE over CS and IS. It wasn't easy, because CompE is a lot of electronic work. However, learning to be any type of engineer requires you to learn (more like pounded in your head) how to be a pristine designer. Learning stuff like OOP, UML, and design patterns are easier. CompE's can make design documentation in their sleep.
    When you get out in the real world, you don't sit and code every hour of your job. You have to look at your requirements every morning and make design changes based on your requirement changes. Sure you code most of the day, but the important stuff is the design you do every morning. Trust me, when it comes to coding, its better to be a good designer than a good coder. And, as you probably know, if you code all day without design, it usually results in wasting hours of coding something that isn't a requirement, where as if you spend that extra hour every day designing, you hardly have to go back on work you've already done.
    CompE is the hardest computer degree... requires a ton of math and sciences, but its better to go through 5 years of hell and be set for life than breeze through 5 years, and spend the next 10 years proving your worth.

    --

    --
    Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
  27. It Depends on What School by Majorachre · · Score: 2

    When I was going through this same decision process, I decided that either was a valid position. Certain schools however have an outstanding program in one of the fields and that's what you should study. For instance, Carnegie Mellon is probably THE school for Computer Science, but their CompE department isn't world class. Alternatively, UIUC probably has one of the best CompE departments but their CIS department isn't number one.

    The basic tenet that CompE = hardware, CIS = software is true. However, my experience is that CompE is a much more well-rounded degree. A true plain-vanilla CIS major is nothing but a two-bit (no pun intended) lab monkey who sits in front of a screen all day. If you can find a CIS department that doesn't teach programming, but instead teaches software ENGINEERING then you will have the opportunity to learn about programming theory, algorithm theory, mathematical representations, etc. An engineering CIS department is a thousand times better.

    On the other hand, at least at my school, our CompE department could wipe the walls with the CIS kiddies. We have to spend nearly as much time programming as they do, and are often better at it. I think that understanding the internal hardware makes you a lot more qualified to write code that best utilizes that hardware. And by the way, most CIS majors couldn't write assembly to save their grandmothers.

    The final comment is that often CIS departments are not accredited progams, where on the other hand CompE generally is. That can be of critical importance if you end up at a state school especially. Always stick with an accredited program over a non-accredited one (unless it's some special program like video game programming or something that is not universal) because you'll be on the same playing field with other graduates in your major.

    Hope it helps,
    |\|\ajorachre -- out --

  28. Re:Course Choices by pmcneill · · Score: 2

    IMHO, this is just plain wrong. It's *much* more important that you learn how to think algorithmically than to learn all the languages that are currently "hot". It's trite, but the important thing about college-level computer science curriculums is to learn how to keep learning. If you don't think so, go to DeVry.

    Were I going back to school, the one thing I would look for is breadth in the curriculum. Am I going to be learning about the many different programming langauge paradigms? Am I going to have the opportunity to take classes in a range of areas (AI, systems, databases, graphics, HCI, theory, etc)? How much depth will I be going into in the various topics?

  29. Concrete or abstract by sstammer · · Score: 2
    The main difference between CompEng and CompSci, IMHO, is the attitudes towards abstraction and complexity. In CompEng, the emphasis is on concrete things (e.g. hardware gates, device physics etc), whereas in CompSci, the emphasis is on software, which leads to a tendency for more abstraction and virtualization.

    I had an engineering-based education, and now work in a software-based field. Usually when I read a technical paper, I can tell from the level of abstraction/virtualization whether the author comes from a CompEng or CompSci background.

  30. Two Sentences by Lish · · Score: 2
    Computer Engineering is about how to make the computer. Computer Science is about how to make the computer do what you want.

    Seriously though, I would get a hold of the course catalog for a school you are interested in, and see which classes in which degree/department has more interest for you. For example, most CprE programs require some EE coursework; if you're not interested in EE, go CS. Career-wise, it makes very little difference really. Figure out which department you'd be happier spending 4-5 years in, and go with that.

    --
    "This message is composed of 100% recycled electrons."
  31. That's a little biased... by Ted+V · · Score: 2

    Speaking as a software engineer, I personally know a whole lot of Computer Engineers and Computer Programmers. Most of the hardware folks know how to program and most of the software folks know how to design circuits. But let me tell you... The code from most hardware designers is utter trash compared to the stuff that the real software teams puts out. To be fair, I wouldn't dare design a real circuit.

    If a computer engineer could easily go into programming, that's only because a programmer could easily go into computer engineering. Because there's such a dire need for programmers right now, even bad programmers look good. Maybe that's why it seems like computer engineers have no trouble programming. They don't look that bad by comparison to all the unqualified DotCom code monkeys. But real programming, just like real hardware design, is not something you just "pick up" but instead learn through years of experience.

    On the bright side, that does mean it doesn't matter which major you pick as long as you get lots of exposure to different fields.

    -Ted

  32. CE vs CS vs EE by Basilisk · · Score: 3

    The fields of computer science (CS), computer engineering (CE) and electrical engineering (EE) are very inter-related.

    In a nutshell, CS is pure math/software (do NOT think CS is just programming), EE is pure hardware (from to atomic level up), and CE is basically a blend.

    CS majors have very little hardware (I think one, maybe two digital logic courses is all).

    EE major have very little software (a little assembler in a uP course, and one or two C/Java courses).

    CE people do both. For example, at the University of Waterloo CE program, hardware and software is basically equally split, with a slight emphasis on hardware.

    The problem is that, while CS and EE are basically the same everywhere, CE is _not_ the same everywhere.

    Keep in mind that while a CE (and even EE, to some extent) can easily move into most programming jobs, a CS will find it difficult, at best, to move into hardware fields. CE/EE also have the advantage of understanding how hardware works, so are often preferred for writing low-level code (such as drivers), and will be better at debugging said code on a product.

    If you like hardware and hate software, choose EE. If you don't like hardware, choose CS. If you like both, choose CE.

    FYI, I am currently in a computer engineering program, but I had considered myself destined for computer science for all but the last bit of high school. I have zero regrets about choosing CE or CS (I know quite a few CS majors).

  33. Major Major by gruber76 · · Score: 2

    Get a liberal arts degree.

    Nobody cares what your undergraduate degree is, and you'll have plenty of experience when you graduate. You'll be a better human being and much happier if you don't kill yourself with geekthink before you learn how to write in English.

    As an IT manager, my #1 criteria for hiring is, "Will this person creep everyone else out, or does he/she speak English and know how to behave in civilised society?"

  34. slight difference by josepha48 · · Score: 2
    Computer SCience really is a science. It deal with the science of computing. What dos this mean? It means that you are probably going to study about things like how a database works. The software part of a database. Computer Science also requires more programming classes, like C or C++ and probably now Java. You'd probably not be required to take any electronics courses, but you'd probably have to take lots of numerical analysis courses and logic courses.

    Computer Engineering is moreof how the hardware works. Like how to build your own CPU and such. This would actually get into the transistor level of hardware in many cases. You probably would take a few electronics courses as well.

    Computer Engineering is an off shoot of Electrical Engineering, with a focus in Computer Electronics rather than general electronics. In some schools the difference between CS and CE or CE and EE is not that big. In the school that I went to it was assumed that if you were a computer engineer that you would basically be an electrical engineer with a focus in computers. Many of my CE friends (I was EE) had al the same classes as me except for maybe 6 were different. I had to take Signals and systems which dealt with fourier transforms and complex applied math, where the CE's did not as well as an EE I had to take Microwaves where as the CE's did not. However they all had to take Elcetronics, Semiconductors, and Computer Architecture, where as the CS students did not take these classes.

    This was a few years ago so things could have changed since.

    I don't want a lot, I just want it all!
    Flame away, I have a hose!

    --

    Only 'flamers' flame!

  35. Differences... by Diana,+Goddess+Queen · · Score: 2

    The first thing you want to do when you're making this decision is ask yourself what sorts of things you want to do. What do you like? Do you prefer taking your box apart to recompiling your Linux kernel? Is it more interesting to you to read about diodes, transistors, and electricity or about linklists, loops, and theoretical math?

    It'll be pretty flexible when you get started, too. Often times, you'll find that many of the courses you take within CE or CS will be the same. You'll take a lot of Math, some Physics... the basics. At the University of Illinois (the engineering school with which I'm most familiar) you'll take CE classes if you're a CS major (Intro to Electric and Electronic Circuits) and CS classes if you're a CE major (Intro to Computer Science). So, if you aren't entirely sure going in, you can take a little bit of both.

    Rule of thumb is this: if you're interested in the nitty-gritty interworkings of computers and their hardware, you'll probably like CE. If you're interested in the nitty-gritty interworkings of software, you'll probably like CS. If you want to be a pointy-haired boss, and manage all of the above, MIS is the place to be. ;)

    Good luck!

    ~Di

    --
    "O frabjous day! Callooh! Callay!" She chortled in her joy.
  36. Its about accreditation. by jmvidal · · Score: 2
    As I student I earned degrees in "Computer Science and Engineering" and, like most, always assumed that computer engineers were more into hardware and computer scientists were into software more.

    However, that is completely wrong.

    You see, if a university wants to give someone a degree with the word "Engineering" on it, the program has to be accredited by ABET. The accreditation makes sure that students are learning enough programming and, yes, that they know at least something about circuits, computer architectures, and signals and systems (about one class each is enough). Therefore, only departments that have been accredited by ABET can give "computer engineering" degrees.

    If a University wants to give "Computer science" degrees then it can get accredited by CSAB. Their accreditation requirements are more "lenient" than ABET's since they require fewer "hardware" courses (if any).

    Usually, the only difference is that a computer engineer has to take about three more classes (circuits, computer architecture, signals and systems) than a computer scientist in order to fulfill the degree requirements, but it depends on the school.

    Note also that CSAB and ABET are integrating their CS and CE accreditation so in the future there probably will not be any difference.

    The U. Michigan has a good FAQ on the subject.

    I know this because almost every singly student I advise asks me about it.

  37. Either or? Neither will matter in the long term... by drin · · Score: 2

    Preamble: I hold a Bachelor's degree in Computer Science, which I obtained in 1994. I'm presently the Director of System Engineering at a large wireless company in southern California.

    Know what? In the long term it won't matter which degree you get, because I think it's far more important what you do BESIDES get your degree while you're at school that'll make the difference. It became apparent to me when I went back to school (at 23) to get my degree (after a few abortive attempts in other majors) that 'Computer Science' programs were by and large designed to churn out academics - people who are supposed to remain in academia researching the most minute details and esoteric topics. They're NOT designed to turn out people who are useful in industry - building THAT skill set is up to you.

    If you want to prepare yourself for a job in the real world, get either type of degree (C.S. or C.E.). In the meantime, get a job in face-to-face customer support, work on a help desk at your school, and spend as much time as possible filling your option classes with courses OUTSIDE the CS/CE curriculum. In order to succeed in the business world you'll need to be far more rounded than the typical CS or CE degree will make you.

    Take business classes, take history of science, take geology - take SOMETHING to make you more than 'just' a geek. (I consider myself a geek still, by the way. I'm 34 now, and I started with computers with a TRS-80 Model I Level I at 12 in 1978).

    If you want to make it in the business world your computing skills will only carry you so far. Make sure you're more than the sum of your geek skills and you'll excel no matter which degree program you choose.

    -drin

  38. Re:just offer a quote from Alan Kay by canning · · Score: 2

    clear as mud. thanks.

    --
    I love the smell of Karma in the morning
  39. Eng's vs. Sci's... by Dutchy · · Score: 2

    I don't believe that there is a firm line between Computer Engineering and Computer Science, but I would suggest it isn't a hardware/software issue at all.

    In Engineering School we had much more of a focus on problem solving, as opposed to the research oriented focus of your typical Scientist. For example, a CS major might study sorting algorithms in great detail, while an Eng major would simply learn the basics of sorting, and the advantages of different methods.

    This difference isn't just found in the computer field, as we can have Chemical Engineers and Chemist, Civil Engineers and Material Physicists, and so on. Generally what separates the two teams is that scientists investigate natural phenonomon, while the engineers specialize more in applying this research to real-world problems.

    Of course this is a generality, but seems to apply to the science and engineering environments I've been a part of.

    --
    Just keep it simple.
  40. hardware and software by Agthorr · · Score: 2

    Disclaimer: I majored in Electrical Engineering with a Computer Science minor. I went to a school where my peers generally considered the Eletrical Engineering program to be more rigorous than the Computer Science program. I confess that my opinion may be schewed by this experience. YMMV.

    The terms "Computer Science" and "Computer Engineering" are somewhat nebulous; different schools will use them to mean slightly different things. "Computer Science" is almost always far removed from hardware. "Computer Engineering" may or may not be. Some schools will also offer a Computer specializiation within their Electrical Engineering program; this will definately be hardware-oriented.

    That said, being close to the hardware you'll learn more about assembly and about how the guts of a computer works. An Electrical Engineering program is typically much more calculus-heavy than a pure-software program. Being closer to the hardware will prime you for doing low-level work such as kernel hacking, embedded systems, compiler hacking, fine-grained optimizations, dealing with network packets, etc. You'll also likely to learn a whole slew of other interesting things about electronics, signals, and how to avoid-calculus-and-use-algebra-whenever-possible (Eletrical Engineers have developed many innovative techniques for this). You can become better at programming in C than the average pure-software person since you'll understand what the machine is doing underneath it all.

    With a more purely software program, the school is more likely to expose you to things like Java, GUIs, databases, and other high level things.

    In my experience, many companies will gladly hire anyone with a CS or EE degree as long as they have the requisite skills. For example, for an embedded systems programmer, a computer-focused EE or a low-level-focused CS are both suitable. For GUI work, a CS is more likely to be hired simply because you're not going to find many entry-level EEs with GUI experience.

    (Hint: virtually everything electronic is an embedded system these days. Particularly sexy, high-paying jobs can be found in the networking industry. Somebody needs to program all those routers and figure out how to make the Internet backbone better, faster, and cheaper...)

    Eventually, for a programming job, it doesn't matter which degree you have; it's your skills that count. If you spend lots of time coding on your own time, that goes a long way, and the skills you accumulate will open countless doors for you. Employers often like to see that you have a degree, but once they see that they begin looking at what you know how to do.

    YMMV

    -- Agthorr
  41. Look at the details by jd · · Score: 2
    Computer Engineering is sometimes used to talk about building the physical hardware. But it's also (mistakenly) used to refer to "Software Engineering", which is a whole different kettle of fish.

    Computer Science is the study of computer programming, but usually does NOT get into the software engineering aspects, much. It's much more concerned with implementation than design.

    Software Engineering, on the other hand, fixes entirely on the design (oh, for the days of JSP, JSD, Z, reification, etc...) and leaves the implementation to others.

    This difference is NOT trivial. If you're good with abstract mathematical notation, SE is a good field to be in, or would be if anyone hired people in this field. (Well, the military probably do, but I doubt much beyond that.)

    On the other hand, if you're good with programming and logic, then CS is probably the better field. Sitting behind a desk, scrawling equations on bits of dead tree just doesn't compare with typing the actual instructions into a machine.

    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
  42. CE probably gives more options by Logger · · Score: 2

    You probably can pick up the CS information handling stuff that you'd miss from a CE or EE degree on the job. CE or maybe better yet, EE with leanings towards CE, gives the background neccessary to design systems from the electron up.

    Then when you're done, you're free to take either route. Trying to go the other way, CS to CE, might not be as easy. You'll miss out on the circuits, digital systems, electromagnetics, linear and digital integrated circuits classes. Which although not uneccessary for for CS, are crucial to computer system hardware at the board and chip level.

  43. CE might be better by MillMan · · Score: 2

    CE gives you more options. At the school I went to, CE is a cross between EE and CS, so you'll take some of the junior level EE courses and cut a few CS courses. At a lot of schools, I think they have special CE courses, but the coursework is probably pretty similar to what I had in my upper level EE courses.

    Now for the important part. Here is what you can do (without a lot of trouble, anyway) with each of the degrees:

    CS: software (mostly app/GUI software)
    CE: software, hardware, embedded software (any low level software really)
    EE: software, hardware, embedded hardware

    Please no flames by CS people who do jobs I didn't list, this is from what I've seen at my school.

    Notice which ones allow you to do more. And yes, software companies will go for EE's and CE's. I had a few recruit me, in fact, although I wanted to go into hardware.

    The saying is this: EE's can be taught software. CS's cannot be taught hardware. I'd go for CE in your case. EE and CE degrees are far more "robust" than CS degrees in my opinion. Keep this in mind, however: you won't have to choose a major or lose much time if you don't decide for sure until about the end of your second year. The coursework proabbly won't vary by more than a few classes in that timeframe.

  44. Here is some information you may find cool by toast- · · Score: 3

    I am a 4'th year Computer engineering major.

    I've had to deal with the same questions as you and it boils down to how passionate you are about certain aspects of the computer world. Be advised this is not the be-all end-all of advice.. but it may help you:

    a) Do you love hardware? Do you long to learn how your motherboard works? How a CPU is built? How do you create those chips on your motherboard? Do you find electronics interesting?

    b) Do you love programming? Do you strive to solve complex programming issues? Do you write tools or programs in your spare time?

    If you agree with A, choose Computer engineering.

    If you agree with B, choose computer science. Computer science, in most programs, is MOSTLY programming theory, with very little hardware.

    Choosing route A will lead you to learn basics about computer science, but as well how computers were first designed, to how complex today's chips are, and methods on how to design them. You will do far less programming than a CS major, but you should still come out with the ability to write good programs, as well as hardware design.

    There are degrees which combine the best of both software and hardware, being a Canadian I can only point out two examples. These are both Engineering examples.

    Sysyms & Computing at University of Guelph

    Systems Design Engineering at University of Waterloo

  45. My advice... by Skeezix · · Score: 2

    Computer Engineering deals more with low-level stuff..not just hardware, but the theory behind Electrical Engineering. I would suggest taking at least two Electrical Engineering classes while taking some Computer Science classes. See where your interest and talent lies. For me After to EE classes, I asked myself, "What the hell are you thinking? You don't care about how a transistor really works at this low a level!" And I immediately switched to straight Computer Science. On the other hand, a lot of people really love that stuff. Try and see.
    ----

  46. Learn ALL standards by OlympicSponsor · · Score: 2

    Don't just learn C and Unix. Learn how to program without an IDE. Learn how to use a non-GUI workstation. Learn HTML. Time spend on fundamentals NOW is time saved on reinventing (or relearning) the wheel later.

    Oh and to the people saying that you may be required to declare a major up front: Yes, I know. That's why I said "if you MUST".
    --
    Non-meta-modded "Overrated" mods are killing Slashdot

    --
    Non-meta-modded "Overrated" mods are killing Slashdot
    (Hey Ryan! Here's your proof!)
  47. Whatever you do, avoid the straight and narrow by scotpurl · · Score: 2

    I'll state up front (no hidden agendas here) that my degree is in Geography. Before that, I had 3 years of a mechanical engineering degree finished before switching.

    Try to do college on the 5-6 year plan, if you can. Avoid the straight and narrow. Look upon the list of required classes the university will give you as a starting point, and not as a sacred document. The more you learn, the better you are in your job.

    One good example: GUI design. Part psychology (how people act), part art (it looks good), part engineer (it works good).

    Take an art class (or two). Throw in some philosophy, geography, history, classics, and a foreign language. Expose yourself to strange people, ideas you disagree with, and crowds you wouldn't normally hang with. Every thing you learn is another tool you can use later.

    Your ultimate goal should not be to complete college, but to have bettered yourself when you graduate.

    1. Re:Whatever you do, avoid the straight and narrow by MikeBabcock · · Score: 2

      So well stated.

      I just thought I'd throw that in, since I don't have moderator points right now ;-).

      --
      - Michael T. Babcock (Yes, I blog)
  48. learned this the hard way... by dimator · · Score: 2

    I learned this the hard way, so you're very lucky to find out early. CS deals mainly with software, programming, algorithms, operatings systems, languages, etc. CE deals with hardware, logic gates, transistors, processors, etc.

    My school has a major called CS&E, which I chose 5 years ago, because I was young and naive. The problem is, I learned which I wanted to do after I picked the major. Now, I find myself stuck learning about transistors (not that that's bad, I just don't like it) even though I know that I'm going to be a software developer. I regret wasting time in CE classes, but I must admit I did learn something, and that is never bad.

    You need to ask yourself what you enjoy doing, and what you can see yourself doing for the rest of your life. This is tough, especially when you havent sampled either major enough before college. I would suggest, if possible, going in undeclared, take a few lower division classes from each major (make sure to do that early, like within 2 semesters, so as not to waste a lot of time) and then pick.
    --

    --
    python -c "x='python -c %sx=%s; print x%%(chr(34),repr(x),chr(34))%s'; print x%(chr(34),repr(x),chr(34))"
  49. Re:Huh? by OlympicSponsor · · Score: 2

    I didn't say you needed training to be a professional, I said you needed it to be good. There are plenty of non-good professionals out there. There's even the occasional untrained good programmer, those these are MUCH rarer.
    --
    Non-meta-modded "Overrated" mods are killing Slashdot

    --
    Non-meta-modded "Overrated" mods are killing Slashdot
    (Hey Ryan! Here's your proof!)
  50. Here are the differences (from a current student) by moller · · Score: 2

    Computer Science: Computer Science deals with the theory of computer programming. If you have been reading Slashdot long enough, you will have seen discussions regarding algorithms, O(n) or O(1) problems, NP complete and so on. That's computer science. The coursework will generally deal a lot with writing programs in Lisp and Scheme (and other interpretive languages). There will be a good deal of mathematical proofs (number theory, set theory). You will be asked to "prove" that the algorithm you are using can solve the problem in polynomial time, for example. A computer science major learns "how" to program.

    Software Engineer: A software engineer is very different from a computer programmer. A SE will learn how to set up large software projects (normally with a team), and carry out these projects. Emphasis is on writing real programs, as opposed to proving that you *can* write the program (which a CS major would do). Software Engineers are drilled in good code structure and the correct way to set up very large programs.

    Electrical Engineer: Pure Hardware, analog and digital. This covers a huge range, from RF circuits, microwave antenna, radio, microprocessor, microcontroller and asic design. Very low-level, usually the only programming (if any) a EE will do is in Assembly or C.

    Computer Engineer: A computer engineer combines the digital aspect of an Electrical Engineer with some of the Softare work of a Software Engineer.

    The three "Engineer" majors really have very little to do with what the CS majors do. A software engineer could get by never using scheme and lisp, whereas a CS major would use those quite a bit.

    Also, for none of these should you expect to take a course in C, or C++, or something designed to teach you a specific language (except maybe an advanced C++ course for Software Engineers.)

    Moller

  51. Education-style differs by nano-second · · Score: 2

    At many universities, you will find that comp.sci majors learn languages because they use them on assignments for a course whereas comp.eng majors take courses whose sole purpose is to teach a language. Also, engineering students (at least at Canadian univs.) tend to have less freedom in choosing electives. They often take more than the usual course load (6-8 vs. the 5 in other faculties - in a 4month semester). This may or may not be to your taste. In general, as a CS student, you'll have more opportunity to direct your education, since you get to choose more of the courses yourself. If you are interested in non-traditional pairings with CS such as History, Fine Art, etc you may prefer the freedom to choose your own electives. Most comp.eng's I know don't get to choose any of their non-major courses until their last couple terms. At the U of Waterloo (where I'm in CS), computer science contains a lot more math courses (it's part of the math faculty) than comp.eng.
    ---

    --
    I hope you're not pretending to be evil while secretly being good. That would be dishonest.
  52. Computer Engineering as it applies to employment by deander2 · · Score: 2

    I started out my education (at Virginia Tech) as a Computer Engineering student and later switched to Computer Science. I did this because I was told that CpEs (CpE == Computer Engineer) get a more rounded computer education and that "engineers" are more respected, command higher salaries and are more employable because of greater flexability. What I found was that 70% of CpE was EE. If you're going into hardware or chip design you need that EE background, but if you're going into anything else, you will have wasted 60 credit hours on material you will never use. And the cost of that (besides monitary) will be minimal programming knowledge.

    And in reality noone these days worth their salt gives a lick about your degree - only if you can be productive. And think you're getting a higher salary by being more flexable and/or working w/ hardware (many times more difficult)? forget it - you're not even close to the 60k+ starting salaries GOOD new-grad CS people get.


  53. Re:Just graduating from Computer Engineering by DeadVulcan · · Score: 3

    The typical "CS is software, CE is hardware" is rather vague and almost stereotypical, but I think it's reasonably accurate.

    As far as software courses go, the core courses here include Java, data structures and algorithms, an OS course, and a software engineering course. 4th year elective courses include AI, database, distributed systems programming and more software engineering courses

    I myself graduated from CS at Waterloo a few years back. (For those who don't know, Waterloo is, deservedly or not, arguably or not, Canada's most reputable university for computer-related studies. It's a couple of hours drive from Toronto.)

    I agree that CE is a bit broader than CS, but I'd disagree that CE is simply a superset of CS (as somebody else, not you, has stated).

    At Waterloo, the difference is not just one of focus, but of administration: CS is part of the Mathematics faculty, and CE is a part of the Engineering faculty. I understand Waterloo is one of the few universities that has an entire faculty devoted to math.

    The CS curriculum there includes very math-like subjects such as computing theory and abstract machines like Turing machines and finite state machines. And obviously, there are more pure math courses.

    P.S. From one Waterloo alumnus to another (soon-to-be), get ready for lots of letters from UW begging for money...

    --

    --
    Accountability on the heads of the powerful.
    Power in the hands of the accountable.
  54. A Correction by DoorFrame · · Score: 2
    Now I know that we all love to use this phrase, but I've gotten annoyed as of late by it's misuse. Go back and watch the movie and you'll see quite clearly that it's:
    • "Someone set UP US the bomb."

    The fact that everyone has been getting the "up" and the "us" in the wrong order is just frustrating. You may now all go back to your trolling, but please, in the future, troll with the proper word order.

    --

  55. CS=pure theory+X, CE = X = physics by maraist · · Score: 2

    Com Sci is the science of computation. It's a high level abstraction that searches out mathematical algorithms. You learn a programming langauge like you learn english, then you use it to discover new frontiers (such as compression, encryption, AI, etc).

    Unfortunately, once someone discovers the frontier, the can it, and it becomes a black box for everyone to use thereafter. "Programmers" are people that use these canned boxes (after hopefully learning at least a little bit about data-structures and basic algorithms). You can go to trade school or pick up a "learn X in 21 days" and be a high paid programmer.

    Software Engineers are true engineers that treat a piece of software like a bridge; they handle the whole process from concept, to prototyping, to implementation, to testing. They also program (though not necessarily).

    Electrical Engineering (which is what I took), first and foremost teaches about electricity, materials, and the physical devices (like radios, alternators, and computer-parts). You are free to take all the programming and com-sci that you like. EE's also can focus on communication theory or filtering tools (often used in audio / visual). Anything an EE does will involve some type of programming (but rarely in C; More like VHDL, Matlab, or others).

    In many Universities, Computer Science requires you to learn some Arts or applied science. Programing is only useful if you use to towards another field. So you'll have to learn "education", for example, so that you can write programs for teachers. Or learn Geology, and write software for them. Etc.

    Computer Engineering is Computer science with the focus on computers. It's probably closer to EE than Com-Sci (at least at the University of Delaware), because you learn about material science. Because it's engineering, you're closer to being a "software" Engineer; you have much of that engineering theory (you have many physical design projects throughout the course-work). Once you're CompEng, you have the option of doing literally anything... You could pick up a minor in Medical science and write software for them, or go straight into designing the next great Video Chip, or just rent your services out for web design. In CompEng, you have fewer available electives since much will already be chosen for you (math, physics, EE, com-sci).

    Com-sci gives you the most flexible course options, especially if you're not interested in physics or hard math, but Comp-Eng is a more valuable degree over-all (if you purposefully take a diverse set of courses).

    --
    -Michael
  56. And of course by Breace · · Score: 2

    dont forget to read up on CS vs CIS:

    http://slashdot.org/askslashdot/00/12/27/1634227.s html

  57. Re:Course Choices by To0n · · Score: 2

    As a student that goes to a campus with an ICS major, as well as a student that is INTERESTED in going into that particular field as a major or minor, or double major, I can vouch that some schools do belive that CS turns into part Web Design and programming. At my school, there are such classes as Sysadmining through a particular OS, and, yes, the obligatory "web" class. But that does not mean there aren't other classes out there for students like myself to choose. There are the inquisitive, math heavy, "theoretical" classes, such as algorithm design, network topology design, etc. A truly good school will teach you Java, C, C++, but only as tools to help you understand the ideas that go behind making those languages work, and work effectively.

    Also, a school that has a good CE as well as a good CS major, should "cross breed" the programs. So that CE Majors get a taste for the people that they're designing for, and the CS majors get a taste on the physical limits of hardware. Makes for strange bed fellows, and also helps technology increase

    FYI, I am a student at University of California at Irvine. =/

    --
    blah
  58. Course titles are totally misleading. by emil · · Score: 2

    In the EE curriculum which I pursued, there was a course called "EE Materials and Devices." All this class addressed were diodes, BJTs, and FETs from an extremely theoretical standpoint. When someone says "and devices" to me, I am thinking of more than 3 devices in total. Ditto goes for "Principles of Electronic Instrumentation" which basically covered the same material in an introductory capacity. Man, was I sick of transistors by the time that was over. It was a waste of time.

    Or how about "Linear systems and signals" which was a continuation of continuous Laplace and Fourier analysis from differential equations, or "Signals and Systems" which opened the discussion of discrete applications of Laplace and Fourier? Did the course catalog rightly discuss how these studies grew out of differential equations? Of course not.

    Sorry, but a freshman will have absolutely NO idea what these courses address by looking at the title or a one-paragraph discussion in a course catalog. Were they to know, they would be somewhat disappointed.

    1. Re:Course titles are totally misleading. by dmorin · · Score: 2

      Actually you proved my point. Just looking at the titles of the four courses you mentioned I know that I'd have no interest in any of them. And nothing close to those was in the CS curriculum I had back in my college days. I didn't expect the kid to learn every detail about every class, man, geez. But you can tell alot about whether you prefer CE or CS by whether a class like "Linear Systems and Signals" even sparks your interest.

  59. I object to that portrayal by Kalani · · Score: 2

    Think of it as the difference between experimental and theoretical physicists.

    That difference is a relatively recent creation. In its early days, physics was an experimental and theoretical pursuit for the scientist. The increased complexity has "forked" physics.

    In any case, experimental physicists aren't any less physicists for validating theory. They're the "experiment" part in the scientific method. Theory that can't be demonstrated is hot air (see early philosophy) and experiment with no aim is generally regarded as psychosis.

    In short, my point is that experiment is vital to "sciences." If thought-experiments are all that make up "Computer Science" then it would be best classified as a branch of mathematics. The theories in CS (stemming from Turing's and John Von Neuman's in automa) are the scientific part. "Theorems" belong to pure mathematics.

    ____________________

    --
    ___
    The ends are ape-chosen, only the means are man's. -- Aldous Huxley
    1. Re:I object to that portrayal by Mr.+Slippery · · Score: 2
      In short, my point is that experiment is vital to "sciences."

      "Science" has more than one meaning. From dictionary.com:

      science n 1: any domain of knowledge accumulated by systematic study and organized by general principles; "mathematics is important for science" [syn: scientific knowledge] 2: a particular branch of scientific knowledge; "the science of genetics" [syn: scientific discipline] 3: ability to produce solutions in some problem domain; "the skill of a well-trained boxer"; "the science of pugilism" [syn: skill]

      Source: WordNet ® 1.6, © 1997 Princeton University

      So "science" doesn't necessarily mean the applicatoin of the scientific method of hypothesis and experimentation or observation. In the term "computer science" it's got mostly defintion 3 above.

      If thought-experiments are all that make up "Computer Science" then it would be best classified as a branch of mathematics.
      I think CS can indeed be classified as a branch of mathematics. Of course, CS is typically applied to the fields of software development or "engineering" (which is another loaded word), so CS students usually study these skills as well.

      Tom Swiss | the infamous tms | http://www.infamous.net/

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
  60. What is computer engineering by simm_s · · Score: 2

    As a electrical/computer engineer and a soon to be CS graduate student, I will try to expain this as best I can.

    Computer engineering has its roots in electrical engineering. Electrical engineers do not only learn about circuit analysis they learn about microwave transmission, waveguides, transmission lines, optics, analog/digital communications, neural networks, etc.

    Since computer technology has its extreme set of complications such as VLSI design, embedded system design, digital networks, microprocessor design, etc, the computer engineering field was created to face these specialized challenges.

    Computer Scientists on the other hand tend to learn software engineering principles, theory, programming languages, and there math coures tend to be less intensive than an electrical engineers by default. This by no means implies that computer scientists do not or cannot take hardcore math classes.

    Computer engineers do take computer science classes such as computer architecture, assembly, object oriented programming.

    To sum it up:

    Electrical Engineers: Physics, computer architecture, math, minimal programming.
    Computer Engineers: Computer architecture, firmware design, math, low-level programming.
    Computer Scientists: Software engineering, programming languages, theory, math.

    If you equally love hardware and software pick computer engineering. Although I believe there is more long term security in the traditonal fields of CS and EE.

    If this still does not help, you can do what I did, which is take them all :>

  61. Re:As a Computer Enginnering Student (WRONG) by jmvidal · · Score: 2
    See here, or refer to my other post.

    Myth - "Those with more interest in the hardware or architecture design aspects of computers should be CE majors." This is a common misconception, since both CE and CS degrees require a balance of software and hardware courses. In fact, CE is for those wishing an engineering degree, and CS is for those preferring a more science-oriented degree, or those preferring a computing degree within the context of a liberal education. from here.

  62. The difference lies in the pre-reqs... by SuperKendall · · Score: 2

    Really, almost any degree is what you make of it. I myself was a Computer Science major, and I had a lot of friends who were EE majors. We had a huge degree of overlap, I took a lot of engineering course (like digital logic design and computer architecture) just because I was interested in them, and a lot of my EE friends took things like OS design and algorithms for the same reason.

    What I'd suggest is to look at the minimum number of courses needed for each major and decide what you like the look of best - after all, after you finish the base classes you can take just about anything you want including classes for the other major! Try and make the whole thing as interesting as possible for yourself.

    I'll now offer one glib obvservation - CS majors spend all thier time time in a computer lab, EE majors spend all thier time in physical labs wiring stuff or doing experiments.

    And to address your question about companies being "desperate" enough to hire EE's for programming - EE's are just about as desireable in my mind as CS majors. I don't think you'd have any problem either way, so don't let that be an issue in your decision.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  63. Computer Science == dotcom whore? by SyntaxError · · Score: 2
    Ok.. i kinda take offense to this as a third year Computer Science Major. My education has been based on theory, algoriths, and fundamental theorems of computer programming and software design/implementation.

    Your comparision of Computer Science to dotcom whore is about as accurate as calling a music education student an industrialist.

    Especially with the advent of IST majors, and colleges which specialize in the internet and information marketing the students for careers, people have to keep in mind that in general, a CS degree supercedes an IST degree.

    Now back to the comparison of CS and CE.. To say one is better than the other is just horseradish. Neither can properly exist without the other. Yes a computer engineer is taught some programming, but they are typically nowhere near as skilled with programming theory and optimization. Yes CS students have a basic understanding of logic and circuit design, along with a core in assembly, but they can't just jump into creating embedded systems..

  64. Whatever you do take LOTS of math. by PhipleTroenix · · Score: 2

    As an employer one of my first questions was: "How much math have you taken?". Anyone who hadn't had 2 semesters of calc would never be considered. The more math, usually the more logical the thinking of the candidate. The smartest person I ever hired had a MS in math. Discrete math and data structures are also important, but they are really math classes. I consider programming primarily applied math.

    --
    When VPNs are outlawed, only outlaws have VPNs.
    1. Re:Whatever you do take LOTS of math. by PureFiction · · Score: 5

      This is a typical manager/employer viewpoint.

      Programming is much more like artistic composition within contraints (which happen to be mathematically related).

      Way back when IBM needed to find the first programmers to code for their new computer systems, they searched for a professional field that matched the requirements for writing software.

      Do you know who they actively sought? It was not mathematicians, it was musicians.

      Music has a very structured/math like feel to it at the lowest level, but the true expression of music is not number crunching, but artistic expression within contraints.

      As for your assertion that math grads make the best programmers, I think you have a far to narrow and biased view of the skills and talents required to produce good software.

  65. Algorithm's and impedance. by nezroy · · Score: 2

    I suppose it really depends on your school, but the primary difference I've seen between CS and CompE is the focus of the math. At my university, where I've switched back and forth between CompE and CS several times, the distinction seems pretty clear.

    In CompE, you will probably never be asked to prove that a problem is np-complete, or need to determine the order of a sorting algorithm. These are high-level analytical techniques that relate to programming concepts in general that you really only learn in CS.

    On the flip-side, a CS student is never going to be asked how to solve a field equation, apply Gauss' laws, or prove that the transient response of a steady-state circuit can be effectively ignored.

    Really, both of these things come down to the types of advanced mathematics you end up learning. Most of what made CompE different at my school was Electrical Engineering coursework; and most of that is deep into the land of differential equations, complex number planes, and all sorts of high level calculus. On the other hand, the CS coursework that really matters is the study of algorithms and of the theory of computing in general; doing proofs, using deductive logic techniques, and other types of analytical math.

    As for programming and hardware, there is no difference generally in what you learn. Even the most simple of electronics typically requires at least some code to do anything useful. And even the most abstract programming techniques ultimately will run on a real machine with real, physical considerations. Chances are you will learn everything you wanted to know about architecture and programming in either course. It's really about whether you want to understand more fundamentally the properties of electrons or the properties of numbers.

  66. It depends on the profs by color+of+static · · Score: 5

    I've watched a CS and EE department fight over how a computer engineering degree is defined, and what I really got out of it is that it depends on the professors that are in the department.

    In general, a CE (computer engineering) degree is a digital design degree version of EE with a stronger emphasis on software and systems. Many schools though concentrate mostly on systems and software, while others are truly about architecture and hardware issues such as interfaces and integration. If there is a professors that teachs a lot of course on OS design, and none on the use of microcontrollers then it would be a very different degree from others, but a very valid degree.

    I have a EE background with a strong emphasis in computer design and software due to a few professors with similiar interest. If CE was offered when I got my BS I probably would have been a fairly good fit for it. As a EE though I feel I got more of a background in the way things work than a CE, but no idea about higher level things like compiler design, OS (although I did work with real time executives), or computer graphics. So given that I'd say the following:

    CS: If you are interested in programming languages, compilers, OS, graphics, and studies of general algorithms.

    CE: If you like computer control, design, interfacing. In general a healthy mix of hardware and software leaning towards the later.

    EE: If you want to know how all of the underlying technology works, but aren't interested in things like programming language design or databases. Up until a few years ago you could graduate from almost any EE program with very little programming, but this is changing quickly.

    Most important though is to look at who teaches what courses and what their teaching and research interest are. If they are in stuff you don't like then you probably won't like the degree you'd get from them.

  67. To be repetitive... by 2nd+Post! · · Score: 2

    To repeat what everyone else is saying, Math cannot be avoided if you're interested in computers ^^

    Algorithms, optimizations, sorting, searching, patterns, etc, are all mathematical in nature. Even if you can't grok the math, you have to have some intuition involved, or you're just not going to be able to do the CS work.

    You're correct that 90% of jobs can be doen by either a CSc or CEng. But those 90% of jobs can also be done by math majors who programmed on the side, or people who were EEs, or whatever. If you can do some real analytical thinking, and can handle structured work, you can program ^^

    Geek dating!

  68. Call (or visit) the school, talk to professors... by DarkBanshee · · Score: 3
    The most important thing is to pick the major that appeals to you most personally. Contact people at the school (I realize that an actual visit may be hard, depending on location) and talk to the professors and some students in these departments. Don't rely on the catalog (you probably already know that). Don't rely on Princeton Review (their selection system is so generic as to be nearly useless for such a specific query).

    As far as the suggestion about the liberal arts degree. If you pick up a degree in English or Philosophy or some other liberal arts area, I think you better prepare yourself for the future. A lot of the work that is done by people in IT doesn't require you to have a CS degree. You can learn on the job, employers will send you to MCSE or Linux training, etc. and you can pick up certificates. When the computer market takes a downturn (as it is at the moment, at least in the dot-com sector, cross your fingers Slashdot :) ), the ability to move into completely different fields may outweigh the advantages of being an "expert" in the field you were working in (and yes, I was just laid off from a dot-com where I had been working for 4 years, so I know a little about this).

    Don't worry about what looks good to HR, whatever you do. People in HR are idiots when it comes to hiring. They take a laundry list that is sometimes given to them by the person you'd actually work for, but oftentimes they just steal stuff from other companies job postings. The HR types can't tell the difference between CS, CE, and the hole in their ass. If all you're worried about is impressing HR, save your money, spend a couple thousand on getting a few of those certificates with the fancy letters (MCSE, DBA, A+, etc.) and you'll get a job.

    As far as what you do in school, pick the major that you enjoy the most and that you'll actually finish. If you go into CS because it will look good for clueless HR types and you hate programming, you won't be a very good programmer and you may not even get your degree (it's easy to get burned out). A degree in a "non-profitable" major is better than no degree because you can then go back to school for your Master's, when you really start to learn about the subject at hand.

    And besides, even in the technological future, the world will always need people who know how to write...

  69. The Skinny by Majik+Sznak · · Score: 2
    Computing Science deals pretty much exclusively with software. You go into a lot of detail concerning algorithms, computing theory, and other things that are very academically interesting. Usually, Computer Engineering deals with hardware and software. It's like a mix of Electrical Engineering and Computing Science.

    The hardware you cover is enough for you to be able to interface real-world devices with software. You don't go into much power electronics (thankfully...)

    The software aspect teaches you enough to go out and write basically anything, but leaves out the more theoretical stuff.

    I've got a Computer Engineering degree, and now I write embedded software. Still, I know a lot of CompE's who go into software jobs exclusively. Some companies look for Computer Engineers specifically if they need someone who can handle hardware / software interfacing well, or even just for straight software if they appreciate the Engineering approach to design. Others (usually founded by CS graduates) will not even consider Computer Engineers over Computing Scientists.

    I don't know how many other places are doing this, but the University of Alberta (where I graduated from) is now offering a stream of Computer Engineering called Software Engineering, which is basically Computing Science with an Engineering approach. Plus you then have an Engineering degree.

    Blah blah blah. Hope that was interesting for someone.

    --
    Karma: Chameleon (Mostly affected by the 1980s)
  70. Re:CS vs. CE by Grendel+Drago · · Score: 2

    Indeed. I'm in the second year of the CSE program (actually goofing off at lab and not paying attention to Norton and Thevenin's theorems.) I picked the CSE degree because a) "engineering" sounded cool, b) we took more core courses, and c) CS is halfway to being an MIS weenie (boy, am I gonna get it for that one), which is like CS, but without the coding.

    Even with all the disdain for coding that goes around this discussion, there's no substitute for long hours spent playing with the system. An hour of programming can explain better than five of poor lecture notes.

    -grendel drago

    --
    Laws do not persuade just because they threaten. --Seneca
  71. Re:As a Computer Enginnering Student (RIGHT) by Pulzar · · Score: 2

    I don't agree with you. Have you seen any CS students taking digital/analog electronics, signals & systems, VLSI design, etc. courses?

    CS students take digital logic design courses, but those alone could hardly be called "hardware courses".

    ----------

    --
    Never underestimate the bandwidth of a 747 filled with CD-ROMs.
  72. Not so ridiculous by 2nd+Post! · · Score: 2

    It's not the ridiculous.

    A computer scientist is not defined by the existence or use of computers. As a macho ego statement, "Real Computer Scientists don't use computers" is silly, but not ridiculous.

    Just like the analogy that physicists don't play with physical objects. Some do, but quite a few don't. They border on the realm of math, of course.

    You're right that it is elitism, but computer science is much more about the science of computation than the science of computers. In that sense, CS can live perfectly fine without computers. Just a pen and paper will do.

    On the other hand, programmers are much more intimately tied to computers, and as such can't trivially exist without them. Programming is an implementation and a justification of the science of computation in the same way that carpentry and architecture are implementations and justifications of the science of physics.

    Geek dating!

  73. Advantage of CE over CS by Pulzar · · Score: 2
    An Electrical Engineer deals primarily with hardware - logic gates, and designing hardware that will perform algorithmic computations. IE. they design chips. These are the guys who work for Intel, AMD, etc. They don't worry much about programming.

    As a working computer engineer, I'd like to point that that the above description fits computer engineers better than EEs. It's CEs that design hardware on the gate/algorithm level, while EEs generally work on "back end" -- they do custom cell implementations, place & route, I/O design, etc.

    Of course, since CE is a very versatile program, many CEs specialize in software engineering, and just end up as programmers. That's the advantage of CE over CS -- you can do both CE and CS jobs with one degree.


    ----------

    --
    Never underestimate the bandwidth of a 747 filled with CD-ROMs.
  74. You've got it somewhat backwards. by 2nd+Post! · · Score: 2

    I think you're mixing up computer science, software engineering, and programming.

    Computer science, to stress the science, is real. It touches complexity and information theory, entropy, transmission and coding theory, algorithmic analysis, and statistics.

    CS is an artificial construct only as much as math is our approximation of the way information is conveyed, or physics an approximation of the way the universe works.

    CS is separated by math by only a thin boundary, at parts.

    Languages, kernels, etc, are software implementations of CS theory and thought. It is a step lower than CS, and on the job experience is not enough to qualify for CS status. I'm not very good at CS, myself, but have some of the training from college.

    Everything you're talking about concerning CS is more related to programming and work. "How many times have you had to learn something for a specific project and never had to use it again." Deals with programming and instances, not with algorithms, complexity, computability, efficiency, or optimization. All of the above is closer to CS, and as such are irreduciably common to all problems.

    Being good at CS doesn't translate to being good at programming. Compare CS to being good at critical analysis and diagnosis, where programming is being good at surgery.

    One is a thought game, the other an implementation one.

    Geek dating!

  75. Do BOTH! There's such heavy overlap anyway. by Anonymous Coward · · Score: 2
    My degree from UCLA is in "Computer Science and Engineering". It was the only CS major back then. Today they split off CS into a separate major and kept CSE. CS is considered so "light" that a "specialization minor" is required. But as CS and CE overlap so much, it makes sense to just do them both together. And if I was doing it again today, I'd stick with CSE.

    Besides, when you study the low level hardware along with coding, you learn to write better code because you understand how it will be executed. You then e.g., understand why word alignment wastes space but speeds up your code, or why disk access is best done in blocks of 512 bytes or 1024 blocks, etc.

    You'll also then be able to build simple peripherals like hooking a thermistor to a dac and then to your parallel port to monitor room termperature, etc.

    No one should leard to code without learning what their hardware will do with that code.

  76. Engineering = $$$$ by SpiralDown42 · · Score: 2

    When it gets that specific your major means nothing. At all. Zip. Zilch. Don't cry just try and cope. Somewhere around 3/4's of your education will be mindless drivel like government, philosophy, calculus, and fencing. In the end you will have taken somewhere around 20 out of a 150 hours for your major that you will use in the job field. Recruiters understand that and this is why your major, whatever it is, will serve as little more than a passport to get threugh the "Must have a college degree in the computer field" checkpoints of the world.
    You will not be pigeonholed because you have a certain type of degree unless that degree is extremely specific.
    For my own part I'm studying CE as opposed to CS for one reason.
    What comes to mind when you say Computer Scientist?
    Lab coats, research, pure science, text books, dork.
    Now what comes to mind when you say Computer Engineer?
    Money.

  77. Engineering vs. Science by magic · · Score: 2
    Most schools have "Electrical Engineering" -- meaning hardward and analog electronics, and "Computer Science" -- meaning software.

    What they don't actually distinguish between is Engineering and Science, which are subdisciplines of anything: electrical work, computer work, physics, nuclear work, etc.

    Engineers use known facts to build new systems. A lot of the work of an engineer is figuring out the most efficient way of doing x, solving the system issues, trying to make it affordable, robust, etc. Sometimes it is an issue of trying to make it bigger or smaller than ever before.

    Scientists research new "facts." They know techniques for exploring new areas of mathematics and can whip up prototypes, but generally are idea generators, not idea refiners.

    Most people with CS and EE degrees write software. Being a programmer is being an engineer (arguably, a software engineer). Most companies don't actually want to hire "computer scientists." Universities and research centers want scientists. Most companies want programmers.

    Too many people come out of school with a CS degree and are lousy programmers. A PhD in CS may be a brilliant person, but likely as not they can't write good enough code to land a basic programming job on that alone. Likewise, a lot of people assume that because they can program they have the skills to develop complex new algorithms. A small set of people have both skill sets. They usually end up at companies developing far range concepts.

    So, regardless of what your degree says, make sure the experience you gain in college actually leads towards the career you want. If you want to program, don't take the theoretical math classes recommended by your computer science curriculum-- you need to learn systems engineering, algorithms, and lots of languages. Some business classes wouldn't hurt, either. If you want to do research, you need to primarily learn a lot of math, not 20 languages, debugging techniques, and details of the development process.

    -m

  78. Depends on the college.. by atubbs · · Score: 2

    While I tend to generally agree with what has been said thus far, I think it's important to consider the individual universities, as each tends to have a differing approach. For example, at the University of Illinois, our Computer Science curriculum is part of the Engineering college, and as such is subject to many of the core engineering requirements. Additionally, we are required to take some lower-level ECE and hardware courses in order to gain more of an "engineer's" perspective.

    Now, we also have Computer Science and Mathematics majors, which take many of the CS courses from the department, but as a supplement instead have to take courses in the arts and sciences, as well as a great deal more mathematics.

    So we also have electrical engineers, who typically would deal with things a level abstracted from a computer geek's interests, yet many of them are designing processors, or even the next layer of software that interfaces with operating systems ... which is a niche that you'd think a Computer Engineer might find themselves in. Yet the Computer Engineering program seems to be a mash of everything together, maintaining the focus of Electrical Engineering, while combining a more thorough low-level understanding of computer systems.

    Of course, there are other options, such as Information Systems in the business curriculum, which deals more with applications and their place within an organization. My guess is that you would find something like this far too trivial (which isn't to say that IS/MIS is trivial, rather it's just not going to whet your interests in computers to the fullest extent).

    While Computer Engineering seems to pose the biggest compromise, a compromise might not be what you're looking for. If you really want to gain an understanding of computers that will allow you to understand the programming process (not necessarily learn how to program) at all levels, I would encourage Computer Science. If you are interested instead in creating the hardware and low-level interfaces to that hardware, Computer Engineering is your best bet. If you want to guarantee you maintain the computer influence, I would stay away from hardcore Electrical Engineering.

    Yet again, this has all already been said. What I alluded to more in the beginning is that you need to look at the specific universities you are considering, and see what each program is like. Don't hesitate to ask the department for some current students to contact at those universities, in order to get their perspective. Don't hesitate to visit the departments (if possible), talk with the dean, and visit some classes, in order to get a better perspective on what exactly a specific program is like; I tend to think that you might want Computer Science at some schools, and Computer engineering at others.

    Once you've made an educated decision based on these things, don't hesitate to change your major if you find out you made a choice that didn't work for you; the beauty of the Universities is that they'll be happy to keep teaching you as long as you keep paying; good luck!

  79. @ U of M by _B_JOMAMANUP_S_ · · Score: 2

    I'm a student at the University of Michigan and I ran into the same problem as you. At U of M, the courses are basically the same except that there is more hardware stuff in Computer Engineering than there is in Computer Science. I chose to go the path of Computer Engineering because an engineering degree from U of M can go a long way, I'm told. It is basically up to you and depends on the college that you go to. Computer tech is an industry that is still in it's initial stages. The way the degrees are offered and the cirriculums that are required differ from college to college. For example, at U of M if I decide to get a Computer Engineering major, it will say Computer Science on it, but I will still have the "graduated from U of M College of Engineering" degree, but the majors for both Computer Science and Computer Engineering are about the same. I, personally, want to code for a living. Some might encourage me to get a CompSci degree, but I would rather have the CE degree. Due to the fact that I will have to understand the hardware of the computer better, I think that it will make me a better programmer. The fact that the engineering school doesn't require me to take english or foreign language classes also drew me as well. I would rather take the technical writing classes that we have to take, than to have to take some boring english or foreign language class. The choice in this matter depends mostly on what you want. Here are a couple of suggestions though. Find out what the differences are between the required classes for the CompSci degree and the CE degree at the college that you want to go to. Second, figure out what the basic requirements for the school (LSA or Engineering) that you want to go into are. These things vary from university to university so if you still don't know where you want to go, try and get this info from all of the universities that you are cosidering. jomamanup, signing off

    --
    jomamanup, signing off
  80. I've done both by aarondsouza · · Score: 2
    I did my Bachelors in Computer Engineering and I'm currently doing my Ph.D. in Computer Science. Personally I think that Computer Engineers make better Computer Scientists. As a CE student you'll probably be exposed to a bit more math than CS students, which surprisingly is *really* important to almost any application later in life.

    Computer Engineers can become Computer Scientists, not the other way around.

    --
    "In mathematics, it's not enough to read the words -- you have to hear the music"
  81. 1/2 EE, 1/2 CS by Wansu · · Score: 2

    At NCSU, you'll get half the undergrad curriculum in EE courses and the other half in CSC courses if you major in ECE. In essence, that's what I am.

    I graduated as an EE 20 years ago and worked as an analog circuit designer and a magnetic compnent designer for 14 years. The last several years of that stint in electronics, I became a self taught programmer. Then I went to work for a CAD vendor and started taking CSC courses. I took the core undergrad CSC curriculum and did well. Now I write debuggers. Careers sometimes have a mind of their own. Do what interests you most. The "hot" areas are always a moving target.

    --
    Wansu, th' chinese sailor
  82. CE vs CS in the industry by Zallekin · · Score: 2
    So far, I've seen most of the good points I had to bring up already presented here, though I haven't read every single post. However, something that I haven't noticed is mention of the difference right now in the job market available to CE grads vs. CS grads.

    The market for IT jobs when you have one of the three degrees I've seen mentioned here (CS/CE/EE) is very fluid as to what you want to do. And, however many years from now you graduate, the market will have totally changed from the way it is now. The way it is now (in general and IMO) is that CE jobs are a bit more stable (as they're a bit more hardware oriented) than CS degrees; and, having a degree is very important as jobs you can get with no degree aren't very stable at all.

    I recently graduated with a CE degree, and had over a year's experience in ASIC design/verification. This is the "digital logic" type of stuff that many other people have mentioned here. I had companies eating out of my hand the way Java people did when it was all the craze. The thing is, though, ASIC people are mainly employed by companies who create large-scale servers and processors (Intel, Compaq, IBM). These companies "in general" (big grain of salt here) do not lay off people in the groups that create these custom and semi-custom chips since these form the core of many large computer company's product line. There are also small companies that do this work (if you prefer the small company model), but mainly they're startups trying to get bought out by a larger company from what I've seen.

    The whole point here is that you get more freedom and have the possibility of finding more job security from what I've seen in an area such as the one I've found. But, it's a relatively small niche when you look at the amount of IT work in general that there is to do. To take this point to a more general level, I will close by saying the following:
    Doing what you want to do in life is the most important thing (even if a person wouldn't believe me, that is why I chose this job). If this falls into the IT world for you, my recommendation is to choose something that challenges the crap out of you, and takes you a bit to learn to like, as it will likely be more important to a company and more secure in the long run. Watch the market as much as you can while in college, and realize where what you like doing fits best into that. Everyone wants to program games, even the business majors. Look for goals that take things a step further, like "I want to design graphics cards."

    IMHO, the point in career is the same with all things IT. Be one step ahead of the other guy, as he's trying to be one step ahead of you. Learn to predict the future, figure out where the person you want to be fits into that, and tailor your choices towards that world, rather than the one around you.

  83. How it works at Stanford... by Meddel · · Score: 2

    I'm a junior in Computer Science at Stanford, and we've essentially got five majors that span everything from NP-complete to building logic gates.

    First, Computer Science. It starts out with programming in C, then moves to Java, and a healthy dose of theory. Computer Science is where a lot of people learn to be programmers, as they pick up enough of the theory to be able to really design an application. There are also classes in hardware, but only the extent of "how do I program for this."

    Next comes Symbolic Systems. This major is for people who want to learn a little bit about programming, and then a lot about the ethics and philosophy of machines in general. It's a little abstract for me, and tends to be looked at as CS for non CS folks, but that's not necessarily fair.

    Computer Systems Engineering is the cross between hardware and software. You'll learn to program a little bit like the CS folks, but without a lot of the theory. You also take a bunch of circuits classes from the Electrical Engineering department. It's a pretty cool major for people who want to go on to systems design.

    Science, Technology and Society is sort of a technical major for managers. It deals a little bit with engineering, but not mch past C programming. Certainly not much in the way of theory. It does, however, have the advantage of a bunch of classes on business, entrepreneurship, and so on, but you can take those from any major here.

    Electrical Engineering is for the hardcore hardware people. Everything from signal processing to chip design. EE is one of the biggest majors at Stanford, and it's prettty involved. They are also likely to learn a little bit of C, but the focus is definitely on the hardware.

    So, where do you fit? If you love computers, my guess is CS or CSE. CS allows you to pick up all the programming you could want, and here at least, teaches you some hardware as well. CSE is neat in that you learn a lot about hardware, but you also miss out on some of the theory (which can be a plus or a minus!).

    --
    You just come along with me and have a good time. The Galaxy's a fun place. You'll need to have this fish in your ear.
  84. On the other hand by hawk · · Score: 2

    >Couldn't agree more. Anything not directly associated with the CS
    >dept. is likely to be a serious mistake if you want a career as a
    >techie. (ie, programming, not just managing programmers.)

    Caveat: this is more than 15 years old; you were (at best) in diapers :)

    When I was an undergrad (Physics, Math, & Philosophy), things weren't as settled. The engineering degree was still called "Computer Science" (it changed to "Computer Engineering" a couple of years later to keep accreditation boards happy), and there was a CS degree through the math department, as wells. One of the articles had an article outside his door with an on-the-record comment from an IBM recruiter/manager. He said that when hiring a programmer, he *preferred* a math major to a cs major, because, "I want someone who can think."

    THe point being that with a solid grounding in mathematics, it's easy to teach someone to program. If you come from a "cookie-cutter" engineering or CS program, you know solutions to a few specific problems, and can't solve anything useful.

    I am *not* claiming that all CS programs have this problem--but I've met folks with MSCS's from respected universities suffering from it. "I know Fortran IV, not 77." "I don't know how to do that kind of sort" (with a bubble sort in front of him, he couldn't figure it out and apply it to a different variable.[1] I had to build some cards and show him by hand[2]

    hawk

    [1] Yes, I know that a buble sort is inefficient in most cases. (a) the code in front of him was one of the cases where it made sense, and (b) the bubble sort in the code pre-dated my involvement.

    [2] If it took this to show him a bubble-sort, do you think there was *any* chance of showing him any other kind? :)

  85. Well.. by mindstrm · · Score: 2

    Really, proper computing science courses are not about an OS or a language specifically.. they are about algorithms. Languages should be picked due to their ability to implement algorithms; some languages are better than others.

    I don't think a computer science course should *ever* teach 'shell scripting' or 'perl'.

    Those are things that someone with an understanding of computing can learn on their own.

    Computing science is about the science of computing. Shell scripts and such are *adminsitration tasks*, and you need no degree to do them.

  86. From a recent graduate who did both by punker · · Score: 2

    I recently graduated with bachelors degrees in both computer engineering and computer science. My school is ranked in the top 25 for both of these programs, and here are some observations for people looking at going into one of these programs.
    First, you can probably do both. If you are inclined towards doing OS work, or mathematically intensive programming like graphics, then your computer science electives are probably valid as courses in computer engineering.
    A second thing to look at is your school's courses for computer engineers vs computer scientists vs electrical engineers. If you look at the courses for the two engineering programs, and see alot of similarities in the sophomore and junior years (within the major curriculum), you might want to look at another school. For the computer science side of it, you will want to look at how many required courses are on things such as object theory or other things that are not related to hardware.
    Around my sophomore year, I found out what really interested me. I basically chose courses that focused on microprocessor and ASIC design, compiler design, and operating systems. You need to figure out what you enjoy doing. If you really like working on UI's, databases, or other things that operate at a high logic level, then computer science is probably where you want to be. If you really like making things go fast or logical design, then computer engineering is for you. As I said before, your particular interests may overlap, but I think you'll get more out of school if you figure out what you enjoy and focus on it rather than just following what the course catalog says.

    A few other observations:
    -You will run into quite a few people who (in my opinion) don't belong in either program. You will meet CS students who can't code and CPE students who never bother learning about hardware. It is important that you learn to ignore them, because they are future management types and you need to get an early start at dealing with them.

    -Look at the third level circuits course in computer engineering. If it is the same as the electrical engineers, look at another school. Computer and electrical engineers are focusing on completely different aspects of circuits at this point, and your college should recognize this.

    -If you do both majors, you'll go through more weed out courses. These are classes to get rid of the people who don't belong in your major. Your first two circuits and programming courses will probably be weed outs. If you have any talent, you'll get through both fine.

    -Hardware engineers typically make about $10K more a year than programmers after a few years out. However, CPE's and CS that do the same job, generally get paid the same, so deciding if you want to work in hardware or software is important.

    -Don't get trapped doing something you hate. If you hate doing OO crap, then CS probably isn't for you. If you despise working on compilers and hardware, CPE isn't for you. You probably have to do whatever you choose for a long time after you get out of college, so make sure you like it.

    -Have fun. This is far more important than anything else in school. If you don't have fun in college, you'll never have fun again, and that would really suck.

  87. If you want to build software... by BEHiker57W · · Score: 2

    If you want to hack or build software primarily (and hardware is interesting but secondary) then you should eschew the formal CS/CE classes and major entirely.

    Study something that will broaden your mind and teach you new ways to think (yes, you can learn new ways still for decades -- your education is only beginning, if you keep your mind open). I would suggest Maths, Organic Chemistry, Philosophy, Economics, or History. I'd like to suggest literature but I'm afraid that has become just a political subject at many schools and you need to check carefully.

    And don't just fill the major in those subjects -- they're not as challenging as CS/CE or Physics and many people much less smart than you need to graduate in them so the requirements are easy. Demand the hardest courses, the broadest and deepest work, connections with allied fields, the most difficult teachers, and do a senior research project of some scope. It's more work to be a top star, but otherwise you're just stagnating in the easy subjects, so do it.

    An ECE/CS education is worthwhile especially for hardware people but software you mostly teach yourself even when you major in it. And you can afford a nice linux box and some digital circuit toys and analysis tools for less than the tuition for one semester at a state school, so you don't need the school's equipment (but you can probably get it just by asking).

    And if you do want a hardware course or three, take it. Ask nicely the teacher, know the background from reading, and the dean will allow you in.

    But I suppose you MUST take 4 semesters of calculus (1,2, multivar, and diffeyQ), 2 of physics (calc based), and linear passive circuits (usually the first EE circuits course) just to be liberally educated in the sciences, no matter what. Unless you already did that stuff in high school. After that, you can teach yourself software; read books and read others' code and program, program, program, program!

    And learn to think.

    -Brian

  88. astronomy and telescopes by cpeterso · · Score: 2

    Computer science is to computers as astronomy is to telescopes.

  89. Re:As a Electrical Enginnering Student by mike_g · · Score: 2
    I think of the involuntary EE's as CS's without all the math. Granted some people are in EE cause they want to be, and not cause they couldn't handle CS.

    That is funny, because at my school we view it exactly the opposite. Most of the involuntary CS's were EE's who couldn't handle all of the math. I don't know of a single person who has switched from CS to EE. All I ever see are the EE's going to CompE or to CS.

    Now I'm not saying that CS is easy, but it is definitely less math oriented than EE or even CompE. I've taken CS classes and about the only math that was used was inductive proofs and simple efficiency of algorithms. While in EE we routinely use higher math such as Laplace and Fourier Transforms for frequency analysis.

    At my school it only takes two extra math clasees beyond what the EE dept requires in order to complete a math minor. I would hardly consider that to be a CS without all the math.

    But as advise to the student, I would say what most other people have said. If you want to be a programmer or are-not-very-good-at/don't-like math go for the CS degree. If you like math and would like to learn more about the hardware side as well as learning to program go for the CompE.

  90. You could look into a dual Major by threep · · Score: 2

    I am majoring in electrical engineering and biomedical engineering at a pretty competitive, primarily engineering school. I have a few friends that are doing both Computer Science and Computer Engineering. The required classes for the two majors overlap a bit, and the Computer Science degree is pretty flexible so that you can fit in all the engineering classes. If you can handle it, this seems like it offers the best of both worlds. After four years, you leave with a diploma that says Computer Science and Computer Engineering. Then, you are free to make up your decision after school and concentrate on whatever you like better. Just my opinion. I won't lie and say that it is easy.

    --
    ~dan
  91. Re:As a Computer Enginnering Student (WRONG) by Stradivarius · · Score: 2

    Let me share what I've seen at my school with ECE vs. CS majors, and their experiences with hardware/architecture.

    I expect that which major - ECE vs CS - you choose will depend largely upon how the individual school structures their programs. At Carnegie Mellon, where I am currently a senior, those interested in hardware and architecture design would do best to major in ECE, as that is where much more emphasis/coursework is to be had in those areas.

    Keep in mind that if you try hard enough, you can probably get away with being a CS major and taking the hardware courses through the ECE Dept, it's just harder due to prerequisites. Similarly, you can be an ECE major and take the stereotypically CS courses. Which says something about the flexibility about both programs here (both programs are among the best in the nation) but I don't know how flexible other schools may be with that. YMMV.

    The reason, it seems to me, that there is debate about which is better for a given interest is because there is significant overlap between the two fields. People in both areas have to know the basics of hardware and software, just because each has to interact with the other. Which aspect you want to specialize in will probably determine your choice of major. I chose to major in ECE because I didn't know which path I wanted to take; it's looking now more like software, so I'm taking a bunch of CS classes, but I find my hardware background to be very valuable in my software work as well. I don't think I'd have been as well prepared if I had started in CS and tried to migrate towards hardware.

    So my advice to someone choosing a major:

    1. Check how your school of choice structures their program. Maybe even try to contact faculty at the school, and ask them questions. This more than anything will help you figure out which would best match your interests.

    2. If that doesn't give enough info to make your choice, go into CE. It will give you a broad foundation from which you can easily migrate to CS if you later find that's what you want.

  92. The question is too broad by The+Swedish+Chef · · Score: 2

    The answer to your question is not as clear-cut as you would like. The answer really depends on the universities that you are considering, as I'm sure each one has a slightly different definition of "Computer Engineering". To make matters worse, companies suffer the same lack of uniformity in defining these titles.

    Generically speaking, you have five (or more, depending on how you break things down) different types of technical folks involved with computer development (both hardware & software):

    1) Electrical Engineers (EE): deal with things like designing processors, peripheral equipment (video cards, sound cards, hard drives, etc.) & physical networking medium. You can think of these folks as designing the actual physical boxes that sit on your desk. (There are also scads of other engineering disciplines involved in designing the actual boxes: Chemical, Materials, Mechanical/Heat-Transfer, but you aren't interested in those, right? :-)

    2) Computer Scientists (CS): covers a wide range of job responsibilities. Computer Scientists can do just about anything related to software. That said, most people I know who call themselves Computer Scientists prefer to work on low-level software that is algorithm intensive. Typical examples include operating system kernels, networking protocols (network through session or presentation layers on the OSI model), system libraries, programming language development, compiler design, numerically intensive applications, just to name a few.

    3) Computer Engineers (CE): typically act as the glue between the hardcore hardware geeks (Electrical Engineers) and hardcore software geeks (Computer Scientists). Your typical Computer Engineer integrates hardware and software, and as such has to be conversant in both (to a point). Computer Engineers might design hardware (say, a disk controller), or software (a RAID driver) or both. Some computer engineers also get involved in higher-level hardware design (like designing a system architecture, with the low-level software needed to support it). A lot of Computer Engineers get involved with embedded applications (automobile computers, robotics, networking cards, etc.).

    4) Software Engineers (SE): this is a VERY broad brush to paint people with. I know Software Engineers (by title) who write operating system code, and I know some who write no code, but are more involved with large software system architectures & project management. In the academic sense, Software Engineers typically operate at the highest level: designing large software systems, implementing quality control schemes & doing very little (if any) coding. In my (limited) industry experience, Software Engineers are typically applications programmers who dabble in the activities that define an "academic" Software Engineer.

    5) Information Technology (IT): this is newer, and even less defined than Software Engineering. IT people do a range of activities: maintaining corporate networks, system administration, web design, database administration, help desk staffing, software testing/verification, programming, etc. This is really a catchall for things that don't fit in other categories.

    Electrical Engineering and Computer Science are relatively straightforward, in that most schools have these departments by name. Computer Engineering usually falls under the auspices of one of these two. In my experience Computer Engineering is more often mated with EE in schools with stronger engineering programs, while the reverse is true of schools that have stronger science programs.

    Software Engineering is not, in my experience, available as a named major to undergraduates, though it is increasingly popular as a graduate major. Typically, Software Engineering-type courses will be offered by a Computer Science department, but not always (this was not the case at RPI, where I went to school). If your ultimate goal is to become a Software Engineer (as described above), your best bet is to major in Computer Science and take a long, hard look at courses offered by the EE/CE department.

    IT is a fledgling major at schools that do offer it (which I don't think is too many). At RPI it was (is?) largely a joke: basically CS for those who can't hack CS. This might not be true anymore at RPI, or at other schools (but I doubt it).

    My advice is to delay declaring a major as long as possible. Most universities won't make you do it until you are a junior. By then you should have experienced enough to make up your mind.

    Good luck!.

  93. Learn theory by charvolant · · Score: 2
    If you do go for computer science, make sure that the course covers the theory of CS and doesn't just teach you "how to program".

    I majored in physics. I later went back and did CS as a graduate student. The amount of useful theoretical stuff I learned about grammars, complexity theory, semaphores, analysis of algorithms, language design and so on during that time has stood the test of time and informed everything I've ever done from then on. The theory books still remain on my shelves after thousands of System X49.J33 Unleashed! books have been consigned to the dustbin of history.

    The point of going to university is to get an education, not do an apprenticeship.

  94. CS vs CSE vs CE by realspkr · · Score: 2

    There have been programs using Software Engineering at the core of the program for years; RIT is WRONG about being the first. Being a Software Engineer (_not_ a programmer) I have found that most companies have little use for Software Engineering. Most of my time is spent writing code, not engineering it. What they are really looking for are programmers that can crank out working source at a high rate -- regardless of quality. This is EXACTLY the shortsighted mentality that delivers the usual mediocre code year after year. I digress... If you're looking to get the degree, decide which you're most interested in, programming, engineering of software, or hardware, and from there you can target CS, CSE or CE respectively.

    --
    Just because you write code, doesn't mean your an engineer. Unless you also drive a train...
  95. don't do computer anything!!! by small_dick · · Score: 2

    I am realizing I made a terrible mistake going into "computer science".

    First off, it's considered a "weak science" -- that is, much easier than physics, chemistry, mech/elec engineering to get a degree.

    Just read anything in the trade journals regarding Sun, MS, Microsoft. "no coding required" is the watchword of the day.

    I was at a tech fair several months ago -- I saw some vidcap systems on display. After playing with the software for awhile, I mentioned to the sales person that the gui felt "like something from the eighties" and had a lot of grammar errors in the english.

    He proudly stated that they had moved all programming to India and "saved a bundle" of money.

    Now, do you really want anything to do with programming when India and Chinese outsourcing is on the rise? If you specialize in something like moving shops overseas, you'll do well in the coming years, but the corporations, public opinion and US government view "programmers" as *way overpaid* and "losers" (personality wise).

    Do yourself a favor -- do as much hardcore math, physics and chemistry as possible and try to stay away from programming.

    Most of the corporate jobsites are heavily padded to make it look like there is a massive shortage of programmers. My brother worked for a company that had hundreds of programming openings on their website -- yet never hired anyone. It's a scam to pressure the government into opening more visa opportunities and easing outsourcing regulations.

    In fact, you may want to consider getting out of the sciences altogether. Much of engineering and programming is going to move overeas in the next couple decades.

    Don't just take my word for it...research what's really happening in the sciences. Unless you're really a gifted engineer, you may not like what's coming up.



    --


    Treatment, not tyranny. End the drug war and free our American POWs.
    See my user info for links.
  96. MODERATORS! by PD · · Score: 2

    My article which you have thoughtfully labelled a troll was NOT.

    Is every dissenting opinion a troll? If you think that, then why not just censor the internet for every idea that you disagree with?

    The article that I posted which started this thread should either be left alone, or marked +1 insightful.

    You can moderate this article either +1 insightful, -1 flamebait, or -1 offtopic, take your pick.

    1. Re:MODERATORS! by PD · · Score: 2

      Thank you for your support. Ladies and Gentlemen, I present Exhibit A: /. moderator.

      I rest my case, no further explanation is necessary.

  97. Education != True Understanding by FallLine · · Score: 2

    What separates the men from the boys is experience. I don't care what you say, but merely passing, or even graduating with honors, from any program does not somehow magically confer you the powers of deep understanding. Nor is it true that just because a person is self-taught, that the person cannot have a deep understanding of the subject matter. There simply is no replacement for hard work with the relevant material. I'll readily conceed that taking a particular program can _help_, but it's neither necessary nor is it a guarantee of understanding.

    Empirically speaking, I've known people with top grades from the best programs in the country who can't hack their way out of paper bag (or perform other technical tasks). I've also known people that are largely self-taught, but are more capable and committed. There are also numerous counter-examples. Rather than enumerating each and every one, let me just say that you're overgeneralizing. I think your problem is that you confuse the entry level VB-type programmer for all self-taught programmers. This is simply a mistake. That programmer simply has never been exposed to anything more advanced than a couple simple subjects in limited scope. But if the programmer has covered more advanced subjects and written effective code for it, he WILL know his stuff.

    If I, as an employer, had my choice between hiring a self-educated programmer with 10 years experience developing operating systems and compilers or a wet behind the ears programmer from any school in the country, everything else bring equal, I'd take the experienced one in a minute. What's more, I suggest to you that virtually any technology that is new and innovative is LARGELY focused around self-education (this is particularly true in engineering). In fact, one of the things that you should have learned in school (but didn't necessarily recieve) is not just about how computers work, but how to teach yourself, how to learn, how to think, discipline, etc.

  98. Specific Examples ...... by benspionage · · Score: 2
    Being in the 5th year of a Comp Eng. / Comp Sc. degree (Uni of Newcastle, Australia), I thought it might help to give some subjects Ive done from each side of my degree to get a feel for the differences.

    Comp Eng:

    • ELEC220 - Sensors and Actuators
    • ELEC340 - Signal Processing
    • ELEC371 - Microprocessor Systems
    • ELEC470 - Advanced Computer Systems
    • ELEC471 - Real Time Systems
    • ELEC480 - Computer Engineering Project

    Comp Sc:

    • SENG205 - Introduction to Web Programming
    • COMP223 - Introduction to Algorithmics
    • SENG211 - Software Analysis and Verification (Java)
    • COMP325 - Database Systems
    • SENG328 - Computer Networks

    The first number in the above subject codes gives the year they are undertaken. As you can see it largely backs up what other posters have been saying regarding Comp Eng. having a larger hardware/electronics/system design emphasis with Comp Sci. emphasising algorithm/programming/internet skills.

    However, youll notice I have bolded the last Comp. Eng. point because, IMHO, an important difference b.w. the degrees that has not been emphasised is that Computer Engineers do a final year practical project. This project is 9 months work and is a BIG chunk of your final mark. It is the principal reason a Comp Eng. degree goes for 4 years (vs 3 years for Comp Sc.).

    With Comp Sc. there is no final year project. An honours year after you graduate (provided you have the marks) will let you do a project similar to that of a final year Comp Eng. but this means the degree will also go for 4 years.

    Computer Engineers get honours based on their final mark. For example at my University a final mark of 77 or greater gives you first class honours. This may seem easy to get but no more than the top 5% of the course attain this mark.

    My final point is that I believe the Comp Eng. part of the course has been much harder than the Comp Sc. part. The maths is far more involved and the amount of theory including circuit knowledge is harder to grasp.

    But this is just my opinion relating to my particuar University and although my mates at Uni have said similar things, Im sure it does not apply for everybody.

  99. Re:On the other hand (slightly off-topic) by hawk · · Score: 2
    >One instructor burned
    >"if all you have is a hammer, everything looks like a nail" into our
    >minds for a semester, which killed any 'favorite language syndrome' in
    >me forever.

    However, if that one language is Fortran . . . :)


    >There were still a lot of 'cookie cutter' programmers in
    >my classes, but I'm convinced that this was despite the
    >instructors'/Professors' best efforts.


    Yep, there's limits :) In the math class, the CS folks served as curve fodder. We also got a bunch of EE's in our EM THeory l class (after they had a disaster instructor in their electromagnetic theory class). This instructor handed out tests sorted by grade. With 9 of us (Physics) and 18 of them (engineering), we usually got 8 of the first 9 tests.


    Before the tests, they would ask us, "how do you remember all these fromulas."


    We'd stare blankly back. "You're kidding, aren't you? There's 200 in that chapter. Know this one and this one and integrate".


    At which point a blank look would be returned . . .

  100. 13 years ago.... by pjrc · · Score: 2
    When I started at Oregon State University in 1988, the "Computer Engineering" degree was relatively new, at least at OSU. I had been interested in programming and electronics for many years, and at an orientation I originally mentioned "computer science". I did quite a bit of hardware hacking in my last year of high school, mostly connecting stuff to my homebuilt Apple2 (hey, it was a mainstream system back then). I was a bit bored with only programming and hardware seemed much more creative, so I changed to "Computer Engineering". I later switched to Electrical Engineering, mostly because the CS department at OSU had a three-year run of TAs they hired who couldn't speak english (accent so heavy it was like listening to the teacher in Peanuts!)

    At least in 1988 to 1992, the difference between computer engineering and electrical engineering was a small handful of classes. CpE required about 6 classes in algorithms and other programming related topics, which replaced EE classes about machines/motors, transmission lines (all the wierd stuff that happens when you don't terminate a cable, like forgetting that 50 ohm resistor on 10BaseT), and a couple more more advanced math classes. Other than switching this small handful of classes, there really weren't any differences between CpE and traditional EE. In the final year of EE, there is some choice about what classes to take, such as control/feedback, communication theory (math), analog electronics, high power systems/circuits, computer/digital architecture, and microcontroller-based design. If you went the CpE route, you'd take the courses in these last two groups.

  101. CIS != CS by elegant7x · · Score: 2

    CIS, as far as I know stands for "Computer Information Systems" wheeas CS is computer sciance. There's a pretty big diffrence.

    Rate me on Picture-rate.com

    --

    "and dear god does this website suck now." -- CmdrTaco
  102. Ask Slashdot: Computer Science vs. Sex? by CrayDrygu · · Score: 3

    Ask Slashdot: Computer Science vs. Sex?

    Dan B asks: "Like many other students across America, I plan on attending college as a freshman next fall. I am very interested in computers (I only reload the Slashdot site every five minutes), but there is something that perplexes me: why can't I get any? It seems that many companies are looking for computer scientists, but would any girls be desperate enough to accept one? What is the difference anyway? Well, a college guidebook could tell you 'computer engineering deals mostly with hardware' and 'girls deal mostly with shopping and makeup', but that isn't clear enough for me. I believe the Slashdot community would be best fit to offer a more in depth perspective on the two options."

    --

    --

    --
    "I personal[ly] think Unix is "superior" because on LSD it tastes like Blue." -- jbarnett

  103. Re:As a Computer Enginnering Student (NO, WRONG) by BDW · · Score: 2

    I have two degrees in CS, and am currently persuing a third. I do VLSI design, often down to the level of drawing the polygons as they will be fabricated on the chip.

    The curriculum for CS/CE/ECE varies widely from department to department. Often the program is what you make of it. When I was an undergraduate I decided I liked hardware, but didn't like the EE curriculum at my school, so I chose to do hardware as a CS major. YMMV.

  104. Re:System Admin by gascsd · · Score: 2

    what?

    a little of everything; programming, integration, software evaluation, hardware issues (including electrical power and air conditioning planning), as well as many great human relations skills

    when's the last time you read BOFH? what about rigging e-mail systems, elevators, video cameras, the NOC, and most importantly, giving users 4 megs of space?

  105. Re:This is a demonstration of how ambiguity kills by Mr.+Slippery · · Score: 2
    The "ability to produce solutions in some problem domain" is horribly vague. This is an example of popular culture affecting language.

    Sorry, no. The usage has nothing to do with pop culture. It's well established in terms and phrases like "library science", "arts and useful sciences", "medical sciences", "literary sciences", "Motion Picture Arts and Sciences", and "science of war" are pop culture. Is Lucent's "Mathematical Sciences Research Center" (where, to tie in another thread, Claude Shannon did his thing) a misnomer?

    Like it or not - and I can tell that you don't - any body of systemized knowledge can be called a "science". Yes, today that usage usually refers to a specific method of inquiry - the "scientific method - but not always.

    Tom Swiss | the infamous tms | http://www.infamous.net/

    --
    Tom Swiss | the infamous tms | my blog
    You cannot wash away blood with blood