Computer Engineering is a discipline that encompasses broad areas of: electrical & electronic engineering and computer science. Computer engineers are electrical & electronic engineers that have additional training in the areas of software design and hardware-software integration. In turn, they focus less on power electronics and physics. Some areas computer engineers are involved in are ASIC design, FPGA development, firmware development, software development, hardware-(firmware/software) integration, circuit design, and system-level design and integration.
Computer Engineering has had a major impact on all our lives during the last thirty years. Its impact has been more significant and more pervasive than that of many other disciplines. Think of the mobile phone, the Internet and the Sony PlayStation 2 - ALL products that weren't even imagined 30 years ago, but have now been realized by the ingenuity of the computer engineer.
Computer engineers need not only to understand how computer systems themselves work, but also how they integrate into the larger picture. Consider the car. A modern car contains many separate computer systems for controlling such things as the engine timing, the brakes and the air bags. To be able to design and implement such a car, the computer engineer needs a broad theoretical understanding of all these various subsystems & how they interact. This might involve mechanical engineering, thermodynamics and fluids as well as the computer systems themselves.
A computer engineer needs excellent problem solving skills, a good theoretical grounding in the fundamentals of engineering and the practical skills to put theory into practice. Computer engineers may design computer hardware, write computer programs, integrate the various subsystems together or do all three. Computer engineers need good management skills as they often get quickly promoted to project manager type positions. Furthermore, computer engineers need good people skills, as they have to sell their ideas to other engineers, other professionals and members of the public.
Due to increasing job requirements for engineers that can design and manage all forms of computer systems used in industry, some tertiary institutions around the world offer a bachelor's degree generally called "computer engineering. Both computer engineering and electronic engineering programs include analog and digital circuit design in their curricula. As with most engineering disciplines, having a sound knowledge of mathematics and sciences is necessary for computer engineers.
In many institutions, computer engineering students are allowed to choose areas of in-depth study in their junior and senior year, as the full breadth of knowledge used in the design and application of computers is well beyond the scope of an undergraduate degree. The joint IEEE/ACM Curriculum Guidelines for Undergraduate Degree Programs in Computer Engineering defines the core knowledge areas of computer engineering as:
* Computer architecture and organization
* Computer systems engineering
* Circuits and signals
* Database systems
* Digital logic
* Digital signal processing
* Embedded systems
* Human-computer interaction
* Operating systems
* Programming fundamentals
* Social and Professional issues
* Software engineering
* VLSI design and fabrication
* Computer Networking
The breadth of disciplines studied in computer engineering is not limited to the above subjects but can include any subject found in engineering.