Device driver - CS, CE or EE degree

Hi,

I’m a high school student and will go to college next year. I’m interested
in low level programming such as programming device drivers. I can’t decide
which one I should study in college. What are the major differences between
the 3? How are they being applied to writing system or hardware level
software? I would like to hear opinions from real world experts.

Thanks,
Michael

I’ve worked in low level and the kernel for over 30 years. I have a BA in
Psychology/Religion and only an Asc in Computer Science. Mostly I think it’s
in what you are most interested. If you expect to work most in hardware then
the CE/EE, probably. It also depends on what you want to do . spend 30+
years writing code for an existing OS or be the thinker of the next major
break through in computer science.

You can do whatever you want with whatever you get. In the end, most of it
simply depends upon you. 40 years from now you may have had a wonderful
career growing pansies, because whatever your degree may be, is no guarantee
that will be your vocation.

Truthfully, study what interests you and gets you the degree. Spending 4 or
more years studying something you hate will do you no good.

The personal opinion of

Gary G. Little

From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of kiddy kid
Sent: Saturday, June 20, 2009 2:58 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] Device driver - CS, CE or EE degree

Hi,

I’m a high school student and will go to college next year. I’m interested
in low level programming such as programming device drivers. I can’t decide
which one I should study in college. What are the major differences between
the 3? How are they being applied to writing system or hardware level
software? I would like to hear opinions from real world experts.

Thanks,

Michael

— NTDEV is sponsored by OSR For our schedule of WDF, WDM, debugging and
other seminars visit: http://www.osr.com/seminars To unsubscribe, visit the
List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

It may seem trite but study any discipline that through the course of study
will teach you how to teach yourself. Software engineering like most
disciplines is a constant process of applying basic principles to problems
you have not seen before to be solved with tools that you have recently
needed to learn how to use. Sure, over time, you rely more and more on a
?kit? of knowledge, technique, and tools but in reality, you are constantly
?on the learn?. So get good at it. A solid foundation in an engineering
discipline does not hurt but I know exceptional software developers whom
came from a educational backgrounds as seemingly unrelated as English
literature, biology, music, and law. They were excellent because they
were passionate about problem solving and learning.

Good Luck,

Dave Cattley

From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of kiddy kid
Sent: Saturday, June 20, 2009 3:58 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] Device driver - CS, CE or EE degree

Hi,

I’m a high school student and will go to college next year. I’m interested
in low level programming such as programming device drivers. I can’t decide
which one I should study in college. What are the major differences between
the 3? How are they being applied to writing system or hardware level
software? I would like to hear opinions from real world experts.

Thanks,

Michael

— NTDEV is sponsored by OSR For our schedule of WDF, WDM, debugging and
other seminars visit: http://www.osr.com/seminars To unsubscribe, visit the
List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

+1 to what David said. Pick something you like. In my opinion, you can find good or bad devs with any degree you can think of, including mine, the dropout, which is a very popular though ill advised one. I mean, I completed the course work for a degree in pure mathematics, but the reality (at least in my opinion) is that that prepared me no better or worse than anything else for this.

In a nutshell, I wouldn’t sweat it if I were you. Just that you found your way here to ask this question is a very good sign of what the future holds for you, in my opinion.

Good luck,

mm

What what everyone says above is true, the chance to actually DO a lot of programming/engineering in school will be enhanced if that’s what you major in. Also, it’ll probably be easier to convince a future employer that you’re a qualified software developer if you have a CS/CE/EE degree and you can talk about the project you did towards that degree.

The differences in the degrees varies at lot depending on where you study.

EE is more focus on building devices: Circuit theory (analog and digital), for example. There also tends to be (in my experience) A LOT more math in the EE curriculum. We’re talking differential equations, for example. By the way, don’t let anybody tell you that knowing math, specifically, is important for computer science. It’s not. Having said that, the logical thinking involved in math is certainly good training for software development. But so is anything with lots of deductive reasoning: Philosophy (no kidding), law, etc.

The CS curriculum depends A LOT on where you study. Your primary courses in this major will be various programming languages, data structures, etc.

If you think you might be interested in Operating Systems, device drivers, and/or systems internals, you should know that MOST universities don’t teach much of this any more. Rather, the “hot topics” these days tend to be things like web programming, Java and SQL. So, look specifically for a college with something more than one or two operating systems courses available to undergrads.

CE? I have no idea what they teach in this discipline. Sorry, it’s been “a while” (cough cough mumble) since I’ve been out of school.

At least as important as what and where you study will be you’re work experience. Summer jobs writing code as an intern, work-study or coop work is HIGHLY valued in the industry. If you know what you’re doing, and the economy doesn’t completely suck, you can almost be guaranteed a job when you finish school if you intern someplace decent and in an area that interests you. For example, Microsoft hires a bunch of summer interns, and kids going into their junior and senior years that are studying OS development can find themselves working over the summer on the Windows kernel team. You should also know that the last person we hired at OSR started here as an intern (and is now a Consulting Associate).

Hope some of the above helps. Feel free to contact me off-list if you need any additional guidance, now or in the future.

Peter
OSR

Just to add what Peter said.

Yes, any decent Electrical Engineering department will force you to learn a lot mathes. By the time you’re at your junior year of EE program, you are just a few courses away towards a mathematics degree. EE are so broad, they have different focus, i.e. analog, digital, RF, antenna, electric power, control systems, signal processing etc. I was a RF/analog EE. I try to summarize the basics that ALL ee will need.

CE is diverged from EE. They would take 2 of the three fundamental EE courses (as mentioned below) generally can get away from the electromagnetics. They are more on digital logic design, state machines. They are capable of building large scale digital circuits from DMA engine to a CPU using Verilog or VHDL. In general, they are not required to get into the details of charge, current, signal. They don’t have to know analog. It requires relative less math than a EE does.

I don’t know much about CS. I guess it would be data structures, algorithms, languages, compilers, Java, .net etc.

If you like low level programming, I would suggest going for a CS with some CE electives. If you are math and physics inclined, go for a EE. All of them will learn programming even for a EE. I.e. they would need to program the DSP to process the discretized analog signals. But don’t expect the programming skills and CS foundations are as good as a typical CS grad. Some said that the worst program you can see is from a EE typing code in one hand and with a soldering iron on the other. I agree with it to some extend.

When I was interviewed for my first programming job, I was asked to write a program to add and remove entries to and from a doubly linked list, and a program to print a literal string reversely, i.e. “Hello world” to “dlrow olleH”. I barely did the first one and the second got me. After that, I just learned that these are very basic problem for a CS. Of course I was not hired.

It’s not to say that EE is useless. The rigorous quantitative study, mathematical reasoning, modeling and formulations skills are good for doing anything serious.

If you can’t decide which one to go for, I would suggest to do EE first. you can switch to other if things don’t work out. EE ->CE->CS is much easier than the other way.

Summary of EE basics:
At undergrad level, the fundamental (extremely important) courses for a EE are:

  1. Linear circuits analysis (or network theory).
    It uses ordinary differential equations and elementary integral transformations to study the static (DC), dynamic (AC) and transient and steady behaviors of circuits/networks consist of resistors, capacitors, inductors, transformers, transistors, Operational Amplifiers etc.

  2. Signals and Systems.
    Study both continuous and discrete time LTI (Linear Time Invariant) systems in both time and frequency domains. Typical LTI system examples are linear feedback amplifiers, electronics filter, PID (Proportional-Integral-Differential) controller. It uses Fourier Transforms (both continuous and discrete time), Laplace transforms, z-transforms, conformal mapping, complex analysis(calculus of complex valued functions), Cauchy Residue theorem, difference equations for discrete-time systems (counterpart of differential equations in continuous-time systems). Hilbert transform is helpful to understand de/modulation part.

  3. Elementary Engineering Electromagnetics
    It’s steps further from the electrodynamic part of the calculus based physics you have already taken in your sophomore year. You use vector calculus and partial differential equations to study the electromagnetic fields and waves and the Maxwell’s Equations. Don’t forget the knowledge you’ve learned in your calculus III or you will be very miserable and easily get lost. Take a course on Partial Differential Equations for engineers and scientists prior to this class if possible. Make sure it covers boundary value problems and Fourier Analysis in detai.

Without solid understanding of these three, you can’t go deeper in more advanced topics such as Feedback Control Systems, Communication systems, Signal Processing, Antenna, Guided Wave, Computational Electromagnetics, EM simulations etc. You need all these to compute the radar cross-section of a fighter jet:) They make you a real good EE.

Good luck!

Calvin Guan
Broadcom Corp.
Connecting Everything(r)

— On Sun, 6/21/09, xxxxx@osr.com wrote:

> From: xxxxx@osr.com
> Subject: RE:[ntdev] Device driver - CS, CE or EE degree
> To: “Windows System Software Devs Interest List”
> Date: Sunday, June 21, 2009, 8:52 AM
> What what everyone says above is
> true, the chance to actually DO a lot of
> programming/engineering in school will be enhanced if that’s
> what you major in.? Also, it’ll probably be easier to
> convince a future employer that you’re a qualified software
> developer if you have a CS/CE/EE degree and you can talk
> about the project you did towards that degree.
>
> The differences in the degrees varies at lot depending on
> where you study.
>
> EE is more focus on building devices: Circuit theory
> (analog and digital), for example.? There also tends to
> be (in my experience) A LOT more math in the EE
> curriculum.? We’re talking differential equations, for
> example.? By the way, don’t let anybody tell you that
> knowing math, specifically, is important for computer
> science.? It’s not.? Having said that, the logical
> thinking involved in math is certainly good training for
> software development.? But so is anything with lots of
> deductive reasoning: Philosophy (no kidding), law, etc.
>
> The CS curriculum depends A LOT on where you study.?
> Your primary courses in this major will be various
> programming languages, data structures, etc.?
>
> If you think you might be interested in Operating Systems,
> device drivers, and/or systems internals, you should know
> that MOST universities don’t teach much of this any
> more.? Rather, the “hot topics” these days tend to be
> things like web programming, Java and SQL.? So, look
> specifically for a college with something more than one or
> two operating systems courses available to undergrads.
>
> CE?? I have no idea what they teach in this
> discipline.? Sorry, it’s been “a while” (cough cough
> mumble) since I’ve been out of school.
>
> At least as important as what and where you study will be
> you’re work experience.? Summer jobs writing code as an
> intern, work-study or coop work is HIGHLY valued in the
> industry.? If you know what you’re doing, and the
> economy doesn’t completely suck, you can almost be
> guaranteed a job when you finish school if you intern
> someplace decent and in an area that interests you.?
> For example, Microsoft hires a bunch of summer interns, and
> kids going into their junior and senior years that are
> studying OS development can find themselves working over the
> summer on the Windows kernel team.? You should also
> know that the last person we hired at OSR started here as an
> intern (and is now a Consulting Associate).
>
> Hope some of the above helps.? Feel free to contact me
> off-list if you need any additional guidance, now or in the
> future.
>
> Peter
> OSR
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars
> visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online
> at http://www.osronline.com/page.cfm?name=ListServer
>

> I’m interested in low level programming such as programming device drivers. I can’t decide which

one I should study in college.

If you are REALLY interested in OS-level stuff, self-study seems to be the only way to go - you should go very well beyond any course that the college offers. As Gary told you already, everything depends on you and only on you.

However, I have to warn you that, unless you are lucky enough to be in few certain locations ( or at least are able to relocate there without too much hassle) you are quite unlikely to find an employer who may want to take advantage of your system-level skills - system-level programmers is a rare beast these days.

Therefore, if you have decided to become a system-level programmer only because you had heard from someone that system-level programmers earn much…then think again

Anton Bassov

I heard writing financial software in NYC makes way more than us writing device drivers in California.

I agree study *solely* for the potential of making money is not good.

Calvin

— On Sun, 6/21/09, xxxxx@hotmail.com wrote:

> From: xxxxx@hotmail.com
> Subject: RE:[ntdev] Device driver - CS, CE or EE degree
> To: “Windows System Software Devs Interest List”
> Date: Sunday, June 21, 2009, 4:42 PM
> > I’m interested in low level
> programming such as programming device drivers. I can’t
> decide which
> > one I should study in college.
>
> If you are REALLY interested in OS-level stuff, self-study
> seems to be the only way to go? - you should go very
> well beyond any course that the college offers.? As
> Gary told you already, everything depends on you and only on
> you.
>
> However, I have to warn you that, unless? you are
> lucky enough to be in few certain locations ( or at least
> are able to relocate there without too much hassle) you are
> quite unlikely to find an? employer who may want to
> take advantage of your system-level skills - system-level
> programmers is a rare beast these days.
>
> Therefore, if you have decided to become a system-level
> programmer only because you had heard from someone that
> system-level programmers earn much…then think again
>
>
> Anton Bassov
>
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars
> visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online
> at http://www.osronline.com/page.cfm?name=ListServer
>

First as a lot of folks have acknowledged you can get into this from many
ways. That being said I would recommend a CS degree just because nowadays
way too many companies use resume scanning software and putting in BSCS or
MSCS is pretty common.

As Peter points out there are many schools that do not offer operating
system classes at all any more, and many of those who do teach only Linux or
Linux vesus Windows at a very high level. You really need to understand a
number of systems even though the world is mainly on the Linux and Windows.
The reason behind this is that many of the problems have been solved in the
past, and sometimes the best solution is to take a page from something other
than the common systems (Note: I have a colleague who designs hardware who
does well because he applies techniques that most people have forgotten, so
it is not just software).

I also highly agree with Peter, get into a coop program if at all possible.
Also try to find a school where there are software firms near, offer to code
for free (or very little) to these firms in exchange for the experience.


Don Burn (MVP, Windows DDK)
Windows Filesystem and Driver Consulting
Website: http://www.windrvr.com
Blog: http://msmvps.com/blogs/WinDrvr

“kiddy kid” wrote in message news:xxxxx@ntdev…
> Hi,
>
> I’m a high school student and will go to college next year. I’m interested
> in low level programming such as programming device drivers. I can’t
> decide
> which one I should study in college. What are the major differences
> between
> the 3? How are they being applied to writing system or hardware level
> software? I would like to hear opinions from real world experts.
>
> Thanks,
> Michael
>
>
>
> Information from ESET NOD32 Antivirus, version of virus
> signature database 4173 (20090620)

>
> The message was checked by ESET NOD32 Antivirus.
>
> http://www.eset.com
>
>

Information from ESET NOD32 Antivirus, version of virus signature database 4175 (20090621)

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com

Now I’m adding to Calvin and Peter —

If you think computer science fits your interest then what you might see
in a decent University/College undergraduate curriculum are : -

  1. Introduction to Computer Science
  2. Introduction to Software Programming
  3. Discrete Math I
  4. Discrete Math II
  5. Data Structure I
  6. Data Structure II
  7. Alogrithms
  8. Communication Theory
  9. Networking I & II
    10)Programming Languages
    11)Compiler Construction I & II
    12)Calculus I & II
    13)Probability and Stochastic Processes
    14)Computer Architecture & Digital Circuits I & II
    15)Systems Programming
    16)Embedded Programming
    17)Operating System I & II
    18)Mathematical modelling of Computer and Communication Systems
  10. Autometa Theory
  11. Formal Logic and Languages
  12. Heuristics and Artificial Intellegence
  13. Abstract Algebra
  14. Linear Algebra & Vector space
  15. Algebric Geometry and Robotics
  16. Data Base I & II
    **) And some more specialized …

Lot of these courses will also have labs work to hone the knowledge…

As you can see there are a lot of different offerings and it depends on
what school you go to, and what are being offered at that time. Sometime
professor comes from different university on sabbatical and offers their
current interests as advanced courses - they are usually to generate
interest and often for the future market for possible job opportunities.

So it is really open to you. It is very very hard to decide what you will
take and what you will leave while you are taking courses … But you can
always align your interest by taking courses from CE, EE, and Math dept.
while you are majoring in Computer Science.

Best …

-pro

Just to add what Peter said.

Yes, any decent Electrical Engineering department will force you to learn
a lot mathes. By the time you’re at your junior year of EE program, you
are just a few courses away towards a mathematics degree. EE are so broad,
they have different focus, i.e. analog, digital, RF, antenna, electric
power, control systems, signal processing etc. I was a RF/analog EE. I try
to summarize the basics that ALL ee will need.

CE is diverged from EE. They would take 2 of the three fundamental EE
courses (as mentioned below) generally can get away from the
electromagnetics. They are more on digital logic design, state machines.
They are capable of building large scale digital circuits from DMA engine
to a CPU using Verilog or VHDL. In general, they are not required to get
into the details of charge, current, signal. They don’t have to know
analog. It requires relative less math than a EE does.

I don’t know much about CS. I guess it would be data structures,
algorithms, languages, compilers, Java, .net etc.

If you like low level programming, I would suggest going for a CS with
some CE electives. If you are math and physics inclined, go for a EE. All
of them will learn programming even for a EE. I.e. they would need to
program the DSP to process the discretized analog signals. But don’t
expect the programming skills and CS foundations are as good as a typical
CS grad. Some said that the worst program you can see is from a EE typing
code in one hand and with a soldering iron on the other. I agree with it
to some extend.

When I was interviewed for my first programming job, I was asked to write
a program to add and remove entries to and from a doubly linked list, and
a program to print a literal string reversely, i.e. “Hello world” to
“dlrow olleH”. I barely did the first one and the second got me. After
that, I just learned that these are very basic problem for a CS. Of course
I was not hired.

It’s not to say that EE is useless. The rigorous quantitative study,
mathematical reasoning, modeling and formulations skills are good for
doing anything serious.

If you can’t decide which one to go for, I would suggest to do EE first.
you can switch to other if things don’t work out. EE ->CE->CS is much
easier than the other way.

Summary of EE basics:
At undergrad level, the fundamental (extremely important) courses for a EE
are:

  1. Linear circuits analysis (or network theory).
    It uses ordinary differential equations and elementary integral
    transformations to study the static (DC), dynamic (AC) and transient and
    steady behaviors of circuits/networks consist of resistors, capacitors,
    inductors, transformers, transistors, Operational Amplifiers etc.

  2. Signals and Systems.
    Study both continuous and discrete time LTI (Linear Time Invariant)
    systems in both time and frequency domains. Typical LTI system examples
    are linear feedback amplifiers, electronics filter, PID
    (Proportional-Integral-Differential) controller. It uses Fourier
    Transforms (both continuous and discrete time), Laplace transforms,
    z-transforms, conformal mapping, complex analysis(calculus of complex
    valued functions), Cauchy Residue theorem, difference equations for
    discrete-time systems (counterpart of differential equations in
    continuous-time systems). Hilbert transform is helpful to understand
    de/modulation part.

  3. Elementary Engineering Electromagnetics
    It’s steps further from the electrodynamic part of the calculus based
    physics you have already taken in your sophomore year. You use vector
    calculus and partial differential equations to study the electromagnetic
    fields and waves and the Maxwell’s Equations. Don’t forget the knowledge
    you’ve learned in your calculus III or you will be very miserable and
    easily get lost. Take a course on Partial Differential Equations for
    engineers and scientists prior to this class if possible. Make sure it
    covers boundary value problems and Fourier Analysis in detai.

Without solid understanding of these three, you can’t go deeper in more
advanced topics such as Feedback Control Systems, Communication systems,
Signal Processing, Antenna, Guided Wave, Computational Electromagnetics,
EM simulations etc. You need all these to compute the radar cross-section
of a fighter jet:) They make you a real good EE.

Good luck!

Calvin Guan
Broadcom Corp.
Connecting Everything(r)

— On Sun, 6/21/09, xxxxx@osr.com wrote:
>
>> From: xxxxx@osr.com
>> Subject: RE:[ntdev] Device driver - CS, CE or EE degree
>> To: “Windows System Software Devs Interest List”
>> Date: Sunday, June 21, 2009, 8:52 AM
>> What what everyone says above is
>> true, the chance to actually DO a lot of
>> programming/engineering in school will be enhanced if that’s
>> what you major in. Also, it’ll probably be easier to
>> convince a future employer that you’re a qualified software
>> developer if you have a CS/CE/EE degree and you can talk
>> about the project you did towards that degree.
>>
>> The differences in the degrees varies at lot depending on
>> where you study.
>>
>> EE is more focus on building devices: Circuit theory
>> (analog and digital), for example. There also tends to
>> be (in my experience) A LOT more math in the EE
>> curriculum. We’re talking differential equations, for
>> example. By the way, don’t let anybody tell you that
>> knowing math, specifically, is important for computer
>> science. It’s not. Having said that, the logical
>> thinking involved in math is certainly good training for
>> software development. But so is anything with lots of
>> deductive reasoning: Philosophy (no kidding), law, etc.
>>
>> The CS curriculum depends A LOT on where you study.
>> Your primary courses in this major will be various
>> programming languages, data structures, etc.
>>
>> If you think you might be interested in Operating Systems,
>> device drivers, and/or systems internals, you should know
>> that MOST universities don’t teach much of this any
>> more. Rather, the “hot topics” these days tend to be
>> things like web programming, Java and SQL. So, look
>> specifically for a college with something more than one or
>> two operating systems courses available to undergrads.
>>
>> CE? I have no idea what they teach in this
>> discipline. Sorry, it’s been “a while” (cough cough
>> mumble) since I’ve been out of school.
>>
>> At least as important as what and where you study will be
>> you’re work experience. Summer jobs writing code as an
>> intern, work-study or coop work is HIGHLY valued in the
>> industry. If you know what you’re doing, and the
>> economy doesn’t completely suck, you can almost be
>> guaranteed a job when you finish school if you intern
>> someplace decent and in an area that interests you.
>> For example, Microsoft hires a bunch of summer interns, and
>> kids going into their junior and senior years that are
>> studying OS development can find themselves working over the
>> summer on the Windows kernel team. You should also
>> know that the last person we hired at OSR started here as an
>> intern (and is now a Consulting Associate).
>>
>> Hope some of the above helps. Feel free to contact me
>> off-list if you need any additional guidance, now or in the
>> future.
>>
>> Peter
>> OSR
>>
>>
>> —
>> NTDEV is sponsored by OSR
>>
>> For our schedule of WDF, WDM, debugging and other seminars
>> visit:
>> http://www.osr.com/seminars
>>
>> To unsubscribe, visit the List Server section of OSR Online
>> at http://www.osronline.com/page.cfm?name=ListServer
>>
>
>
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

> many of those who do teach only Linux or Linux vesus Windows at a very high level.

…which is not bad at all - I saw a book on the topic with a sample OS written in Java…

Concerning Linux, I would highly recommend the OP to download the very first version of it, as well as the one of Minix 1 that it was inspired by, from respectively kernel.org and minix.org, and start playing around with them, introducing the new features and modifying the existing ones. These systems are pretty small and can be reasonably handled by a single person…

Anton Bassov

I have to second everything said so far. No one degree (or lack thereof)
can make or break you as a developer. Having a EE degree helps you
understand the hardware a lot better at the bit/signal level. Having the
CS/CE (Computer Engineering) degree helps in understanding advanced queueing
theory most EEs don’t get. I couldn’t decide so I just got both! If you
want to do pure embedded work, that is the way to go. I can participate on
the hardware designs (not as the lead EE0 and understand the tradeoffs
between the hardware and software and how they truly interact.

If you’re on the edge, check into what it will take to get a “double major”.
At most universities, it would only be an additional year and well worth the
investment if low-level work is the area you wish to pursue.

Greg
www.NewCovenantConsulting.com

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@osr.com
Sent: Sunday, June 21, 2009 10:53 AM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] Device driver - CS, CE or EE degree

What what everyone says above is true, the chance to actually DO a lot of
programming/engineering in school will be enhanced if that’s what you major
in. Also, it’ll probably be easier to convince a future employer that
you’re a qualified software developer if you have a CS/CE/EE degree and you
can talk about the project you did towards that degree.

The differences in the degrees varies at lot depending on where you study.

EE is more focus on building devices: Circuit theory (analog and digital),
for example. There also tends to be (in my experience) A LOT more math in
the EE curriculum. We’re talking differential equations, for example. By
the way, don’t let anybody tell you that knowing math, specifically, is
important for computer science. It’s not. Having said that, the logical
thinking involved in math is certainly good training for software
development. But so is anything with lots of deductive reasoning:
Philosophy (no kidding), law, etc.

The CS curriculum depends A LOT on where you study. Your primary courses in
this major will be various programming languages, data structures, etc.

If you think you might be interested in Operating Systems, device drivers,
and/or systems internals, you should know that MOST universities don’t teach
much of this any more. Rather, the “hot topics” these days tend to be
things like web programming, Java and SQL. So, look specifically for a
college with something more than one or two operating systems courses
available to undergrads.

CE? I have no idea what they teach in this discipline. Sorry, it’s been “a
while” (cough cough mumble) since I’ve been out of school.

At least as important as what and where you study will be you’re work
experience. Summer jobs writing code as an intern, work-study or coop work
is HIGHLY valued in the industry. If you know what you’re doing, and the
economy doesn’t completely suck, you can almost be guaranteed a job when you
finish school if you intern someplace decent and in an area that interests
you. For example, Microsoft hires a bunch of summer interns, and kids going
into their junior and senior years that are studying OS development can find
themselves working over the summer on the Windows kernel team. You should
also know that the last person we hired at OSR started here as an intern
(and is now a Consulting Associate).

Hope some of the above helps. Feel free to contact me off-list if you need
any additional guidance, now or in the future.

Peter
OSR


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

Michael,

The opinions given so far are right-on, and you’ve definitely come to the right place to post your question. I do however want to add my two cents. I have an Bachelor’s in EE and an MS CE, yet I am barely qualified to operate a soldering iron. After I got out of school fifteen years ago, I started in software and never looked back. Yet my EE background has been more of an asset to me than I believe a CS would. I’ve always preferred to work on system-level software, and you will find that today there are fewer and fewer people who understand how an operating system works. If you have a solid understanding of what makes a computer tick, and are thoroughly versed in operating system mechanisms, you will always be in high demand. So I would look closely at the offerings at a particular school and take the classes that interest you. In the end, it really doesn’t matter if your diploma is stamped EE, CE, or CS.

Dan

Although I’ll stand by my original position of suggesting that you should just pick what you like, in my opinion, there’s no question in my mind that on average, between a CE, CS and EE, the EE will be much better received. Engineering is discipline and an ee is a well known commodity; a ce seems to be decidedly more variable, depending on where the degree is from; and as PGV said, as cs can mean pretty much anything, depending on where it’s from.

mm

Guan Calvin wrote:

I heard writing financial software in NYC makes way more than
us writing device drivers in California.

Correct :slight_smile:

Calvin,

I heard writing financial software in NYC makes way more than > us writing device drivers in California.

Are you sure you are not speaking about PRE - “dotcom-bubble-bust”??? What you are saying sounds very typical for 1990s when someone with basic computer skills could expect tremendous remuneration, particularly in the financial industry, without having a clue about OS-level stuff However, their days seem to be long gone…

Anton Bassov

> If you have a solid understanding of what makes a computer tick, and are thoroughly versed

in operating system mechanisms, you will always be in high demand.

You seem to be much too optimistic…

today there are fewer and fewer people who understand how an operating system works.

…probably, just because demand for this kind of knowledge gets lower and lower everywhere, apart from few specific locations on the globe???

Anton Bassov

I actually went to college to get a CE degree. 2 months into the
semester I picked up a charged capacitor by the leads (dumb mistake 1,
student left capacitor charged. Stupid mistake 2, I picked it up by
the leads), got thrown across the room, and had an eye that twitched for
2 weeks. Software is safer in my book…

–Mark Cariddi
Consulting Associate
OSR…

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of
xxxxx@hotmail.com
Sent: Monday, June 22, 2009 12:47 PM
To: ntdev redirect
Subject: RE:[ntdev] Device driver - CS, CE or EE degree

If you have a solid understanding of what makes a computer tick, and
are thoroughly versed
in operating system mechanisms, you will always be in high demand.

You seem to be much too optimistic…

today there are fewer and fewer people who understand how an operating
system works.

…probably, just because demand for this kind of knowledge gets lower
and lower everywhere, apart from few specific locations on the globe???

Anton Bassov


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

Geez, Mark. It was a pretty common stunt in EE lab to charge up a big
electrolytic, with the leads folded over carefully to the side and toss it
to some newby across the lab :slight_smile:

If they caught it, they remembered it - and leaned to step out of the way
next time. Of course these were not ten Farad devices with 600 volts
applied - that would be cruel.

But now capacitors you can see are a novelty in circuit design outside of
the power supplies. The labs are probably pretty safe :wink: Now that giant
thing supplying the impulse current to Scott’s car stereo subwoofer is
another matter …

Cheers,
-dave

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Mark Cariddi
Sent: Monday, June 22, 2009 1:03 PM
To: Windows System Software Devs Interest List
Subject: RE: [ntdev] Device driver - CS, CE or EE degree

I actually went to college to get a CE degree. 2 months into the
semester I picked up a charged capacitor by the leads (dumb mistake 1,
student left capacitor charged. Stupid mistake 2, I picked it up by
the leads), got thrown across the room, and had an eye that twitched for
2 weeks. Software is safer in my book…

–Mark Cariddi
Consulting Associate
OSR…

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of
xxxxx@hotmail.com
Sent: Monday, June 22, 2009 12:47 PM
To: ntdev redirect
Subject: RE:[ntdev] Device driver - CS, CE or EE degree

If you have a solid understanding of what makes a computer tick, and
are thoroughly versed
in operating system mechanisms, you will always be in high demand.

You seem to be much too optimistic…

today there are fewer and fewer people who understand how an operating
system works.

…probably, just because demand for this kind of knowledge gets lower
and lower everywhere, apart from few specific locations on the globe???

Anton Bassov


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

My assembly language programming class had a variation on this. We had a
weird printer that used a charged stream of ink that passed between 2 plates
the deflected it to print the letters. Seeing who of the teaching
assistants and students remembered to discharge the plates when the printer
messed up (a several time a day occurance) was a great initial screen of
whether the person had enough smarts to help you. So Mark this can happen
even in programming, or at least did in the days when PDP-11/20’s were “hot
new machines”.


Don Burn (MVP, Windows DDK)
Windows Filesystem and Driver Consulting
Website: http://www.windrvr.com
Blog: http://msmvps.com/blogs/WinDrvr

“David R. Cattley” wrote in message news:xxxxx@ntdev…
> Geez, Mark. It was a pretty common stunt in EE lab to charge up a big
> electrolytic, with the leads folded over carefully to the side and toss it
> to some newby across the lab :slight_smile:
>
> If they caught it, they remembered it - and leaned to step out of the way
> next time. Of course these were not ten Farad devices with 600 volts
> applied - that would be cruel.
>
> But now capacitors you can see are a novelty in circuit design outside of
> the power supplies. The labs are probably pretty safe :wink: Now that
> giant
> thing supplying the impulse current to Scott’s car stereo subwoofer is
> another matter …
>
> Cheers,
> -dave
>
>
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf Of Mark Cariddi
> Sent: Monday, June 22, 2009 1:03 PM
> To: Windows System Software Devs Interest List
> Subject: RE: [ntdev] Device driver - CS, CE or EE degree
>
> I actually went to college to get a CE degree. 2 months into the
> semester I picked up a charged capacitor by the leads (dumb mistake 1,
> student left capacitor charged. Stupid mistake 2, I picked it up by
> the leads), got thrown across the room, and had an eye that twitched for
> 2 weeks. Software is safer in my book…
>
> --Mark Cariddi
> Consulting Associate
> OSR…
>

Information from ESET NOD32 Antivirus, version of virus signature database 4178 (20090622)

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com