Skip to content

Instantly share code, notes, and snippets.

@mjeaton
Last active May 6, 2016 17:01
Show Gist options
  • Save mjeaton/e4e0c5a46913da9cb9f085d9b156db4f to your computer and use it in GitHub Desktop.
Save mjeaton/e4e0c5a46913da9cb9f085d9b156db4f to your computer and use it in GitHub Desktop.
Computer Engineering and Math

I'm helping a friend out - he's in high school and has a paper to do.

Here is his email: "

  • I have to explain what Computer Engineering is,
  • What Math is required to get a degree in it, and
  • What Math is required in the career on a day to day basis.

The general questions I have is...

  • What is your definition of Computer Engineering?
  • What do Computer Engineers do, to be a little more specific

I need an answer of that question on both the Hardware Side and the Software side? What Math is required in the career of Computer Engineering on a day to day basis? If there is more about Computer Engineering that you would like to tell me, feel free to because any extra information for my research paper would be appreciated and I want to pursue this as a career of mine in the future."

Any help you guys can give (just respond to this gist) would be great!

@darrelmiller
Copy link

I graduated in Computer Engineering way back in 1994. I'd give you a description in my words, but the intro paragraph here https://en.wikipedia.org/wiki/Computer_engineering does a much better job than I would do. When I took the program, Computer Engineering was a taste of everything, some mechanical engineering, too much of electrical engineering, a smattering of computer science, a smidge of software engineering and some insight into hardware design.

Regarding the math required, I believe it is very similar to other engineering programs. The first two years of my program were identical to the other engineering specialities and we did the usual differential calculus, numerical methods and linear networks courses. Because computer engineering and electrical engineering faculties are closely related we then did math related to communication systems. Laplace and Fourier transforms. In our final year we did courses like microprocessor design where you end up doing lots of applied mathematics for calculating capacitance values. The only part I remember about that work was when our answers were within an order of magnitude we considered them correct!

Since graduating, I have worked in software development, never in hardware. I have almost never used the math I learned at university. The only areas that I have seen any applicability is in matrix math and linear networks.

@Merennulli
Copy link

Computer Engineering is the discipline between hardware and software. It's a combination of electrical engineering and software engineering that gives the skills necessary to design a computer system. It can include hardware design, data structures, and software design with a focus on operating software. Practically speaking, these are the people who design computer hardware - from network cards, sound cards, and motherboards up to full computer, server, cell phone, or other systems, as well as the drivers or embedded software to interface with it.
I know several universities require some combination of calculus, differential equations, and linear algebra. Since I'm on the software side, I can't speak directly to what's used day to day, but calculus would inherently be necessary.

@mjeaton
Copy link
Author

mjeaton commented May 6, 2016

This was my original response to the student (via email):

Wow...great questions and honestly, I may not be qualified to answer them. ;-)

Let me give you my background and we can go from there.

I am a self-taught software developer with a background in Sociology and Criminal Justice. I took a couple Computer Science class in college, but pretty much failed them both.

I have a semester of Algebra I in college.

I currently work for Quicken Loans as a Senior Software Engineer, writing the tools and building blocks that the rest of the company uses to build solutions that customers use every day. Before that, I was a self-employed consultant for 14 years, working for a variety of clients throughout the United States. I worked on projects that managed unemployment benefits for the majority of hospitals in Michigan and Illinois, one that dealt with electronic door locks (I wrote the code that wrote schedule data directly to the lock firmware) and many others.

In the end, very few of my colleagues have degrees in CS / CE, but they do have degrees in English, Psychology, Music and Theater. :-)

and the follow-up

At my job (and for almost every single project I've worked on over the past 20 years), the need for math has been almost non-existent. Sure, every now and then something comes up, but Google is a powerful tool. Well, Google and StackOverflow.com. Of course, I can't speak for every Sr. Software Engineer at Quicken Loans - I know some have more need for math than I do. In fact, an engineer on another team is talking about open sourcing a Math library he wrote for his project. It's currently in the early stages of approval, but that'll be hitting github.com soon (probably listed in the same place as the work my team has open sourced - https://github.com/RockFramework).

The most important skills someone in this field can have are all on the softer side - can you communicate well? That includes speaking and writing. Can you learn quickly? Can you break down a problem into simpler "things" and figure them out? Can you explain how and why you did what you did?

When we interview people, we're almost always looking for those things - yes, tech skills are important, but passion and a desire to learn are probably more important.

Looking at the definition of Software Engineer on Wikipedia: https://en.wikipedia.org/wiki/Software_engineering

"an engineering discipline that is concerned with all aspects of software production" probably covers it.

Looking back over your original email - what does a software engineer do on a day-to-day basis? We solve problems. I'd say less than 60% of our time is actually writing code (we use a variety of languages include C#, Elixir, Erlang) and the rest is spent communicating with team members - helping them solve their own problems. The team I'm on does a lot of mentoring as well as code writing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment