I am a student in Computer Engineering, and I am wondering why programs still teach digital logic. We have already taken a computer organization class in which we learn about computer architecture including Flip-Flops, registers, ALU, Logic, etc... can anybody explain why we are still expected to take a digital logic class?

There is technology out there nowadays that can simplify everything for us, and that'll do for anybody who isn't planning on going into a logic-related field, yet most schools still require digital logic to graduate.


closed as not constructive by Leon Heller, user17592, Nick Alexeev, Dave Tweed, clabacchio Apr 24 '13 at 19:30

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. If this question can be reworded to fit the rules in the help center, please edit the question.

  • \$\begingroup\$ What are you expected to study in the digital logic class? \$\endgroup\$ – Andy aka Apr 24 '13 at 16:59
  • \$\begingroup\$ Much of it is actually simplifying boolean expressions, sequencers, counters, other similar things \$\endgroup\$ – Dan Drews Apr 24 '13 at 17:06
  • \$\begingroup\$ Is your question "why do we have to learn digital design at all," or is it "why did my university make me take an additional digital design course after I had already taken a computer organization class which seemed to have covered most of the material that I am now seeing in the digital design course?" The answers below are answering the first of those two questions. I think you might have been asking the second? \$\endgroup\$ – Wandering Logic Apr 24 '13 at 17:37
  • 1
    \$\begingroup\$ If you think the curriculum isn't perfect and there is too much overlap, the best thing is to take it up with the faculty. They are not infallible. Maybe they just screwed this up. They can rearrange the topics covered between those courses so there is less overlap. Architectures courses should focus on the higher level functioning of machines: instruction sets, pipelines, caches, virtual memory blah blah. Digital logic should be lower level, and perhaps have labs in which you construct circuits. \$\endgroup\$ – Kaz Apr 24 '13 at 20:14
  • 1
    \$\begingroup\$ It is somewhat unusual to teach digital design after computer organization. Most curricula go "bottom-up". They put digital design first. You start out with boolean logic and end up with a extremely simple computer in the first semester. Then go on to comp. organization. I can imagine doing it top-down, like your university did, to try to provide motivation for why the digital logic is important. (Obviously the motivation isn't working in your case.) \$\endgroup\$ – Wandering Logic Apr 26 '13 at 12:46

It's the classic undergrad question: Why learn how to calculate the deflection of a beam when there are finite element analysis programs? Why learn Ohm's law when there's SPICE? Why learn compressible flow when there are fluid dynamics programs?

Here's why:

As engineers, we are responsible for truly understanding how our designs work. That means understanding the analysis, even if the arithmetic was done by a computer. If you don't know how to do at least a reasonable approximation by hand, then how can you trust the result of the program? How can your customer trust you?

  • \$\begingroup\$ +1 and what do you do when the real-world doesn't match the simulation? \$\endgroup\$ – kenny Apr 24 '13 at 17:18
  • 1
    \$\begingroup\$ @kenny real-world seldom matches simulation 100% \$\endgroup\$ – jippie Apr 24 '13 at 17:40
  • 5
    \$\begingroup\$ @kenny - as they say in the Army, if the map doesn't match the terrain, trust the terrain. \$\endgroup\$ – Pete Becker Apr 24 '13 at 18:02
  • \$\begingroup\$ and when that happens you say @jippie ;) \$\endgroup\$ – kenny Apr 24 '13 at 19:10

Things I tell my students:

  1. Engineers are paid to know "why". If you don't know "why" you are just a technician. When things go wrong, you will be stumped (--> fired).

  2. There are no black boxes in engineering. It's your design. You are responsible for it. No one else on the planet will (or should) know your design better than you do. That means you aren't permitted the luxury of broad abstractions. No one will ask SPICE what it thinks the answer is, they'll ask you.

  3. Intelligent computer analysis is a myth. The computer is really just a high-speed idiot capable of making more critical mistakes in a millisecond than you could in a lifetime! ;-) You must be able to intuit when the simulator/calculator has gone awry and when it is doing your bidding.


Two reasons:

  • Someone has to actually make that "technology that can simplify everything for us", they have to know how it works.
  • Knowing how a system internally works helps the understanding on a higher level. In an analogy, we could say: "Knowledge of Assembly programming helps you making C programs more efficient, although you don't really have to know how Assembly works in order to program in C."

Okay, three reasons:

  • It's fun!

Not the answer you're looking for? Browse other questions tagged or ask your own question.