Ask HN: Learning Engineering
27 points| xel02 | 15 years ago
I was wondering what are some good resources for computer scientists (or anyone) to learn the principles of engineering?
27 points| xel02 | 15 years ago
I was wondering what are some good resources for computer scientists (or anyone) to learn the principles of engineering?
[+] [-] mooneater|15 years ago|reply
I have a computer eng undergrad degree from a solid canadian school. I cant say we were explicitly taught "engineering principles", I wish we were. We learned mostly domain-specific principles, but there are some deeper cross-domain principles that are worth learning (like the link above includes).
I would add to the above, a very central concept is the "engineering trade-off" -- there is no free lunch, etc.
Another smaller one I like is "visibility", seeing clearly into your system and its state is critical to debugging/design and clear thinking.
There are also things you kind of learn by osmosis from doing projects and in the workforce. Like, dont overestimate how hard it is to do some custom work to create something new (a good FPGA programmer or C programmer can do amazing things in a week). And also, dont underestimate how hard it is to maintain said custom work (most university projects dont give a sense of maintenance cost, the overriding cost in the real world).
[+] [-] drblast|15 years ago|reply
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.
[+] [-] vecter|15 years ago|reply
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.
[+] [-] MicahStevens|15 years ago|reply
[+] [-] deniscales|15 years ago|reply
[+] [-] physcab|15 years ago|reply
Having seen both sides, I don't think either discipline prepares you more for problem solving more than the other. It's all about your mindset.
What I will say though is that engineering problems are rooted in practical issues. e.g "This suspect is approaching security, do we have a machine that can spot them far enough away to interrogate them safely?" Science problems by contrast are more concerned with the phenomena, e.g "Does the suspect reflect enough light for our detector to pick them up at extended ranges given atmospheric turbulence?"
tl;dr If you want to be a good engineer, seek out everyday problems and solve them practically with a given budget and timeline. If you want to be a good scientist, learn to ask better questions.
[+] [-] tel|15 years ago|reply
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.
[+] [-] amishandroid|15 years ago|reply
One of the first things I was told when beginning my E.E. degree was that I'd be _learning how to learn_. Many years later (after obtaining a master's), I see that it is true.
Others here have stated, and I agree, you need to try doing stuff. There seem to be two sides to engineering: understanding/developing theory, and implementing it. Both are worlds unto themselves.
Also, learn the tool of the trade: Math. Even if you don't learn a particular subject, at least familiarize yourself with it enough to be able to later on say to yourself "hey, I think this type of math is what I need to solve this problem" then go and learn it.
(And, relating back to doing things, try looking at example problems and connecting the concepts involved to their equational counter-parts -- this will make connecting the math to the context easier when you try to come up with solutions or understand something else).
I'd recommend starting out with these branches:
Differential Equations - as most physical systems adhere to these types of rules
Linear Algebra - as this is useful for taking differential equations and turning them into computations a computer can perform (via state-space) as well as many many other things -- I've found a lot of the ideas I learned from linear algebra were helpful in understanding other branches of math, such as differential equations (e.g. basis vectors/functions)
and
Laplace/Fourier Transforms - lots and lots of engineering will look at things in different domains (esp. these two), so it'd be a good idea for you to get used to doing that.
Again, the best way to learn this stuff is by doing.
[EDIT: Grammar]
[+] [-] wwortiz|15 years ago|reply
[+] [-] golwengaud|15 years ago|reply
[+] [-] lleger|15 years ago|reply
You cannot become an engineer or learn engineering without going to college to become one.
You have to understand: engineering is far different from computer science. Even computer engineering — which is my field. It's a field that you can't practice in without a degree. It's not like computer science where you can get a job programming without a degree. No engineering firm will even consider you without a degree.
And that's because engineering requires formal training from certified teachers according to a standardized curriculum. The skills, thought processes, problem solving strategies and specific knowledge of the individual engineering fields is highly tailored. And, most importantly, extremely arduous. If an engineer has ever scoffed at your degree in college, it's because compared to his workload — no matter your degree — you have an easy time. (Because of this, we're also all arrogant :)
But, to answer your question: the best place to learn the principles of engineering is in an engineering class. In fact, it's the only place. Even if you read online articles or textbooks, you won't ever get the full engineering perspective. Only professors, uniquely qualified to endow the sacred profession, can teach the principles.
If you're currently studying CS at school, I highly recommend sitting in an introduction to engineering class. Speaking from experience, engineering has helped me immensely in computer science. I'm a much better programmer from the problem solving skills I learned in my engineering classes.
I hope this helps. Engineering is such a wonderful major, and I love every minute of it. Good luck!
[+] [-] _delirium|15 years ago|reply
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.
[+] [-] bpourriahi|15 years ago|reply
[+] [-] r3570r3|15 years ago|reply
[+] [-] schn|15 years ago|reply
[+] [-] yurisagalov|15 years ago|reply
[+] [-] krf|15 years ago|reply
[+] [-] CountSessine|15 years ago|reply
[+] [-] coned88|15 years ago|reply
[deleted]