Live data from Hacker News

Ask HN: Learning Engineering

news.ycombinator.com

11–20 of 22 posts

Re: Ask HN: Learning Engineering

#11
My advice for learning CS, from someone who is completely self-taught, learn ad hoc and strive to completely understand - trying to just understand stuff built on top of other things without understanding the bottom layer is not very good for learning.

Re: Ask HN: Learning Engineering

#13
It depends on what type of CS degree you have. MY CS degree is considered an engineering degree, mainly because my curriculum is similar to that of an engineering students. We all basically took the same core classes, from basic programming to physics, chemistry, Calc 1-3, Differential Equations, Linear Algebra, probability Theory and discreet math. Then our classes after that were all project based and problem solving.

If your CS degree is like this, which many are, you already have most of the taugt engineering skills. If not, you need to go through the paces and solve problems which are above your skill level and keep doing it.

Re: Ask HN: Learning Engineering

#14
I've got a B.S. in Comp Sci, and like you, heard that engineering would be a more valuable degree, so when I had the opportunity to get my masters, I got it in E.E.

I don't think there are many aspects of EE, if any, that prepare you more for "problem solving" than CS. That's not to say it's not worthwhile. EE is more difficult and broader than CS; it's also expensive and time consuming to learn it all on your own.

The nice thing about engineering is that the math is extremely similar between fields. Mechanical engineering uses a lot of the same techniques that electrical engineering does, as many of the principles are the same (stability is important in both).

You can use a lot of your CS skills to do engineering experiments. There are a lot of EE fields that are nearly all done in software now. Software Radio is a big one and Digital Signal Processing is another.

So, get an introductory Circuits textbook and learn the math. Learn differential equations. Play around with robots and try to get them to do things extremely accurately; this will introduce you to control systems.

Also, learn to love math and be able to read and understand formulas and equations with a lot of Greek letters.

Re: Ask HN: Learning Engineering

#15
post #14

I've got a B.S. in Comp Sci, and like you, heard that engineering would be a more valuable degree, so when I had the opportunity to get my masters, I got it in E.E. I don't think there are many aspects of EE, if any, that prepare you more for "problem solving" than CS. That's not to say it's not worthwhile. EE is more difficult and broader than CS; it's also expensive and time consuming to learn it all on your own. T…

I'm not sure whether one can say that EE is harder than CS, or vice versa. For starters, which subfields of EE and CS are you comparing? If, for CS, you pick Theory of Computation, Algorithms, or Machine Learning, then those are pretty difficult fields. If you pick programming languages, databases, or user interface design, those are "easier" than the aforementioned (although still challenging in their own right).

In EE, if you pick some of thee classes that Stephen Boyd [http://www.stanford.edu/~boyd/] teaches at Stanford, I would imagine those are difficult.

How much more difficult is convex optimization than complexity theory? I'm not sure, but I don't think one's necessarily easier than the other.

Re: Ask HN: Learning Engineering

#16
post #4

I can only speak from a more physical engineering (ME) persspective but the best way to become better at problem solving is by solving problems. To add to that you must also continue to solve harder and harder problems to improve at a steady pace.

Terry Tao, a mathematician, agrees: http://terrytao.wordpress.com/career-advice/continually-aim-...

Re: Ask HN: Learning Engineering

#17
I'm a VP of IT at my company and I have an Aerospace Engineering degree. The only distinction that I can say between problem solving with an engineering background versus a CS background might be the breadth of the tools you have to solve your problems. Many times, I noticed programmers do a great job of solving problems, but they are only able to use the languages they know best to solve them. As an engineer, I felt that I was, mentally, more free to solve problems with out-of-the-box ideas. I don't believe there is a book or write-up that can help you there though, other than experience and the willingness to open up your mind and research solutions outside of your normal expertise.

Re: Ask HN: Learning Engineering

#18
I was CS for undergrad, but my school had everyone take an intro-to-engineering-principles class that used digital signal processing (DSP) as the domain. There are pros and cons to that, but it provides one view on a lot of things that come up in many areas of engineering: mathematical modeling (and validating and knowing the limits of mathematical models), analyzing systems in frequency and time domains, different tools for characterizing the aggregate response of systems (resonant frequency, impulse frequency response, etc.), different ways of visualizing or analyzing the behavior of systems (mostly in Matlab), solving mathematical models in reverse (e.g. finding a physical system that will produce the desired behavior), and so on.

There are a bunch of good DSP introductions, and it's a useful thing to know in itself, so I think you could do worse than working through one of them.

Re: Ask HN: Learning Engineering

#19
post #15
post #14

I've got a B.S. in Comp Sci, and like you, heard that engineering would be a more valuable degree, so when I had the opportunity to get my masters, I got it in E.E. I don't think there are many aspects of EE, if any, that prepare you more for "problem solving" than CS. That's not to say it's not worthwhile. EE is more difficult and broader than CS; it's also expensive and time consuming to learn it all on your own. T…

I'm not sure whether one can say that EE is harder than CS, or vice versa. For starters, which subfields of EE and CS are you comparing? If, for CS, you pick Theory of Computation, Algorithms, or Machine Learning, then those are pretty difficult fields. If you pick programming languages, databases, or user interface design, those are "easier" than the aforementioned (although still challenging in their own right). In…

I can only speak from my own experience but in general I found EE to be much more challenging, particularly in the sub-fields like DSP that involved a lot of probability.

I think what makes CS more tractable is that the theory is easily testable and you can write a program and see things work. Many times when you're working with signals and antennas all you have is the theory and there's very little you can do to visualize what's actually going on, not to mention working in the analog domain always throws you some surprises.

Never in CS will you hear "Well that's due to relativistic effects."

Additionally there's the practical problem in EE that you rarely encounter in CS of actually building physical things. How many times has a program given you bad results because someone somewhere turned on the microwave? :-)

Re: Ask HN: Learning Engineering

#20
For my major (Biomedical Engineering) we had an intro to engineering class that did a pretty good job of laying down some basics. It was taught using a chemical engineering book (which I won't actually recommend) and we spent the lectures learning how to do mass/momentum/heat/energy balances using Chem E block-flow diagrams (http://en.wikipedia.org/wiki/Process_flow_diagram).

Then there were the tests. How would you lift an elephant? How many liters of syrup are used in a Waffle House each day? Design a dishwasher. Explain why you think implanted blood glucose meters are difficult to design. All in an hour and with demands for equations, pictures, assumptions and models. These aren't just Fermi Questions.

You couldn't study for it. You were graded like a kindergartener for "points achieved" instead of percentage correct and yet you still somehow failed the tests all semester long.

But at some point during the semester you start to enumerate assumptions, apply math as a tool to create and communicate an engineering model of the world, and then make designs and conclusions with error bounds and a good understanding of your personal confidence in them. It was pure survival-motivated.

In short, the class did exactly as advertised and we took one step closer to thinking like engineers. I'm not sure that CS degrees cover something like that, but I'm curious to know if I'm wrong.

So try that kind of thing. You're already used to modeling (building) information processes. See how good you can get at building/modeling/analyzing physical processes. Not knowing things won't hold you back from learning the philosophy. It'll just make you less accurate.

Post reply on HN