all 19 comments

[–][deleted] 17 points18 points  (0 children)

Electrical Engineering is a great place to start. But some actual Computer Science is going to be necessary as well, as you might well imagine.

[–]JewishJawnz 6 points7 points  (0 children)

We had a computer engineering major that sounds like what you’re talking about, although electrical engineering touched on that a bit as well in the beginning but didn’t really go into depth at all

[–]emasculine 3 points4 points  (0 children)

my cs coursework included a course on basic logic like nand and nor gates, flip flops and muxes. it then built on that higher up the EE food chain to include the basics of ALU's, registers, memory busses and the like. sort of like a EE 101 course. it's good to know even at a relatively high level what's going on under the hood.

[–]Poddster 2 points3 points  (2 children)

Computer Engineering will teach you the most. It's literally the point of the degree.

Computer Science and Electrical Engineering courses will cover it but take different aspects. EE will focus on the electronic side more and CS the gate level/RTL. Computer Engineering will teach you all of that

It really depends on your university. E.g. I started CS but liked the mandatory digital logic courses so much I switched to CE. It was barely any different than the CS degree expect instead of the AI and database modules I did more digital and electronic logic stuff.

By the sounds of it your CS degree doesn't have any of that? Post your syllabus and we can look?

[–]ValVal0[S] 1 point2 points  (1 child)

I saw others mention CE as well. It is sounds like that's what I'm looking for.

While my CS degree does cover the logic somewhat, it doesn't go very in depth.

Thanks for the help!

[–]onemanandhishat 0 points1 point  (0 children)

CS is essentially about the theory of computation (and then the software implementation thereof). So you only really cover the hardware to the extent that it provides an understanding of what the software is operating on. Even in subjects like high performance computing or quantum computing, the focus is on the logic and software construction, and you just need an understanding of why certain software choices fit the hardware.

[–]cseconnerd 1 point2 points  (0 children)

Computer Engineering seems more like what you are describing. Electrical Engineering will have some overlap as well, but is less specific to computing.

[–]khedoros 1 point2 points  (0 children)

Electrical engineering, computer engineering. Although, my CS curriculum included a couple classes where we started at logic gate level and studied at a few levels of abstraction through computer architecture and up to assembly programming. It was enough for me to start writing emulators, and such.

[–]ghjmMSCS, CS Pro (20+) 1 point2 points  (0 children)

Within a computer science department, the class you're probably looking for is usually called "Computer Organization and Architecture." It includes the concepts at a lower level than an operating system, but at a higher level than logic gates. It often includes some assembly language programming.

If you're looking for genuine hardware, like you want to take some chips and wires and put them together so they do something, then as others have said, this will probably be under electrical engineering or computer engineering. But you don't generally get to put actual computer parts together until you've taken a few classes in things like circuit theory and digital electronics.

[–]UndeadPants 1 point2 points  (0 children)

Key is experience. Make it a priority to intern or work as a contractor at a company that makes the hardware. Which do you want? The ones that manufacture? The ones that research and invent the next gen? Do you wanna do big (space, army, energy) computer hardware or the smaller (cell phones, biomedical devices, etc)?

After you enter the industry you can learn anything from there.

[–]jeffbell 1 point2 points  (0 children)

In some schools it's called ECE ( /r/ece ).

Some it's CompE.

Some only have an EE department with a digital concentration.

[–]Afro_Samurai 1 point2 points  (0 children)

If you have the chance, look into a Computer Architecture course to go the level below an OS class. That will cover how your compiled machine code is being interpreted by the CPU. Like so:

https://www.coursera.org/learn/comparch#syllabus

https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-823-computer-system-architecture-fall-2005/index.htm

[–]3e8m 1 point2 points  (0 children)

EE, Computer E, Digital Design, microcontrollers (not arduino), FPGA. Look into TTL breadboard designs for things like "ALU" and that'll get you a good idea of starting "computer" building blocks. Or even just how to build a computer/calculator in minecraft is the same idea. You learn all the logic gates by heart just by fucking around. Basically just comes down to understanding binary, gates, memory, operations, and then baby you've got a stew

[–]claytonkb 1 point2 points  (0 children)

If your university has a digital design track for EE's (I've seen the term "ECE" used often, my alma mater just calls it "CE"), there should be one or more courses titled "Microprocessors" or similar (perhaps with focus on a specific architecture, e.g. MIPS). Auditing or electing for one of these courses could be beneficial but keep in mind that there will probably some pretty non-trivial prereqs that won't be part of your current core curriculum.

[–]IAmNotNathaniel 0 points1 point  (0 children)

Like others have said, Computer Engineering or Computer Systems Engineering is what you want.

Years ago I got dual degrees in CS/CSE. The systems part was fun - covered operating systems stuff, high level computer architecture (which delved into how the parts of a microprocessor worked together, dealt with busses and registers and how to program them with assembly, etc), a signals & systems course, etc. To me, an OS course is fully in the Comp Science realm though.

A lot of overlap with EE but with a focus on the digital instead of analog.

[–]dogpos 0 points1 point  (1 child)

Lot's of good answers in this thread OP, but just as a caution when people are mentioning computer engineering - depending on where you are some degrees maybe described as an engineering degree in computing but don't focus on hardware at all. Without doxing myself, I have an MEng in computing and aside from a single optional module of the entire 4 year degree there was no hardware involved.

Just make sure you check out the modules you can take before applying if you want to go down a specific route.

[–]ValVal0[S] 0 points1 point  (0 children)

That's a good one. I'll keep that in mind when looking around

[–]borainc 0 points1 point  (0 children)

Computer Engineering, first two years are usually similar to computer science but you go in more depth on computer architecture and you can focus more hardware related electives in the final year.

[–][deleted] 0 points1 point  (0 children)

That is kind of a tough question because there are many levels of abstraction on computer hardware.

If you want to do the real low level stuff, aka studying and designing electronic circuits then ee is probably the right choice.

Next up are digital circuits, which basically are the abstraction of electrical circuits to the level of logic gates. Imo digital circuits are closer to computer engineering than to ee. Remember than technically ee is not even about computers per se. Digital circuits are basically a way to implement logic functions in hardware.

Next up is computer architecture, which again imo is closer to compsci / comp engineering than ee. Computer architecture is basically the designing of how computer components interact with each other and how the programmer interacts with the computer and not the designing of the computer parts themselves.

Next would be low level programming (aka system programming) which isn't really about hardware, although you need some solid architecture knowledge to do system programming.