Computer engineering
Computer Engineering is an academic subject taught at some universities, typically by combining elements of both Electrical engineering and Computer science.
Examples of Computer Engineering
- Design of a microprocessor. A certain degree of electrical engineering is involved. However, a successful design requires a broad view of the context in which the processor will be used. Thus, an understanding of program execution patterns and compiler technology is helpful.
- Design of a compiler. A compiler is a computer program capable of translating a unambiguous description of an algorithm into a form which can be executed by a machine. To design a compiler requires knowledge of both the programming language and the operation of the machine.
- Digital Signal Processing. 20 years ago, a radio would probably be designed using traditional electical components. Today, it is just as likely that a large portion of this task would be implemented in software, with just the minimal amount of electronics to convert the analog signal to digital and vice-versa.
Differences from Computer Science
Computer Engineering is a very practical form of computer science. Computer Science focuses also on abstract algorithms for performing mathematical tasks efficiently, where Computer Engineering focuses more on the implementation of computers and computer systems.
For instance, a computer scientist might consider an algorithm which sorts a list of numbers. In doing so, the scientist might first describe the algorithm as a series of instructions which cause the desired effect, perform a rigorous proof that the algorithm will always perform the task properly, and analyze how efficiently said algorithm performs its task against criteria such as time or memory complexity before finally implementing it. A computer engineer would research how such algorithms work, and attempt to create computer hardware capable of executing those instructions, optimized against calculation time, component cost, component size, power consumption, etc., and attempt to validate and verify the correctness of said implementation.
Differences from Electrical Engineering
While electrical engineering is a broad field, computer engineering generally focuses on a restricted subset of electical engineering known as digital logic design. Digital Logic Design is a way to simplify many tasks in electrical engineering, by creating reusable building blocks such as the NAND Gate.
In general, the analysis of an electrical circuit is complicated. At its lowest level, electronics depends on physical properties of conductors and insulators. The mathematics used in electrical engineering can become quite difficult: simple circuits containing resistors, capacitors and inductors may require solving a set of differential equations, and circuits containing transistors may require the engineer to solve trancendental equations. Through the design of robust and simple digital building blocks, a digital designer may avoid much of this mathematics and focus on systems which can be easily described with discrete mathematics. This method allows a digital engineer to create larger systems, more complicated systems.