TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: Learning Engineering

27 点作者 xel02将近 15 年前
I understand many people here are either from an engineering background or (like me) from a computer science background. In a lot of discussions people claim that engineering is a better background to have when it comes to problem solving.<p>I was wondering what are some good resources for computer scientists (or anyone) to learn the principles of engineering?

14 条评论

mooneater将近 15 年前
I kinda like: <a href="http://www.alankennington.com/philo/eng.html" rel="nofollow">http://www.alankennington.com/philo/eng.html</a> after a quick skim.<p>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).<p>I would add to the above, a very central concept is the "engineering trade-off" -- there is no free lunch, etc.<p>Another smaller one I like is "visibility", seeing clearly into your system and its state is critical to debugging/design and clear thinking.<p>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 年前
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.<p>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.<p>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).<p>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.<p>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.<p>Also, learn to love math and be able to read and understand formulas and equations with a lot of Greek letters.
评论 #1484681 未加载
MicahStevens将近 15 年前
Learn by doing, taking things apart, exploring. A good school helps too. And legos.. I'm not sure it matters whether you're an EE, or SE, or CS major. It hasn't in my experience, I know crappy engineers from each faith as well as good ones.
deniscales将近 15 年前
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.
physcab将近 15 年前
heh, I'm exactly the opposite. I was a physics engineering major with an emphasis on electrical and materials engineering before I switched to more computer-sciency stuff for graduate school.<p>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.<p>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?"<p>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 年前
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 (<a href="http://en.wikipedia.org/wiki/Process_flow_diagram" rel="nofollow">http://en.wikipedia.org/wiki/Process_flow_diagram</a>).<p><i>Then there were the tests.</i> 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.<p>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.<p>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.<p>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.<p>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 年前
What I have to say is probably more of a meta-response -- a few things to think about / look for when you're learning.<p>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.<p>Others here have stated, and I agree, you need to try <i>doing</i> stuff. There seem to be two sides to engineering: understanding/developing theory, and implementing it. Both are worlds unto themselves.<p>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.<p>(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).<p>I'd recommend starting out with these branches:<p>Differential Equations - as most physical systems adhere to these types of rules<p>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)<p>and<p>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.<p>Again, the best way to learn this stuff is by doing.<p>[EDIT: Grammar]
wwortiz将近 15 年前
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.
评论 #1484707 未加载
lleger将近 15 年前
I'm going to give you an unpopular answer, but as an engineer I have enough credence to say this:<p>You cannot become an engineer or learn engineering without going to college to become one.<p>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.<p>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 :)<p>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.<p>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.<p>I hope this helps. Engineering is such a wonderful major, and I love every minute of it. Good luck!
_delirium将近 15 年前
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.<p>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 年前
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.
r3570r3将近 15 年前
Principles of engineering is machine building. Then, it takes off as your interest. The funda of Machine building in Computer engineering is called Automata Theory. So, you can start with Formal Language and Automata. That along with mathematics forms the principle of any form of engineering.
schn将近 15 年前
Lego.
评论 #1484551 未加载
krf将近 15 年前
MIT OpenCourseWare - ocw.mit.edu - has a lot of engineering courses.
评论 #1484463 未加载