Computer engineering is an immensely broad field – or set of fields to be more accurate. This article looks at some of the important aspects of computer engineering, the qualifications needed to enter into computer engineering work, and some of the great pioneers that helped shape the field and move it forwards.
Computer engineering has played a huge role in the history of the human race – especially in the last two centuries. Undoubtedly, you are reading this article on a machine developed by computer engineers while connected to a network created in part by computer engineers. With such a vast and important topic at hand, this article can obviously not cover all bases. Instead, it is an introduction to some key elements of computer engineering that every prospective computing student, businessperson, and investor should get to know. Computer engineering knowledge should not be restricted to a small cadre of specialists. The significance of the field means that the widest possible group of people should be clued up.
There is no one qualification that enables a person to become a computer engineer. The field is simply too varied to be condensed into one course. A Bachelor’s degree in computer engineering or computer science is generally considered to be a good base for progress in an engineering field. For project management, previously qualified engineers will need to take a Masters of Engineering Management postgraduate degree. Software engineering degrees are commonly sought by people hoping to find a career in software engineering – naturally. Specialist network engineering degrees are also available, although these are less common. For those wanting to go into academic research and push the boundaries of computer engineering, Doctorate funding is necessary. This enables researchers to join research teams at universities where cutting-edge technology is developed.
Ultimately, there is no replacement for the accruement of experience in the world of computer engineering. Qualified computer scientists and engineers will still need to seek work within organizations as low-level assistants before they can operate in the research and development realm. If you are looking to become a computer engineer, you can do a great deal worse than seeking out work as an assistant to a more experienced person.
Project management within computing is usually overseen by an engineering manager – often a specialist with experience in computer science or computer engineering. Project management during a large-scale development program is immensely complex. Due to the sheer number of variable factors and stakeholders involved, the project manager has to have a surefire combination of specialist knowledge and interpersonal communication skills. Luckily, modern software makes project management slightly more simple. Project management software allows a manager to centralize all of the reporting and communications produced by the team under their command. Aspects of computer engineering project management include:
Project managers need to discuss project aims and progress with stakeholders – including business executives and investors.
Picking the most suitable candidates from within an organization to work on a project and recruiting talented people from outside said organization.
Setting a budget after carefully analyzing the resources needed during a project.
Developing Realistic Progress Indicators – commonly known as RPIs – by which the progress of a project can be measured. The quantification of progress in a long-term complex engineering project is not a simple ordeal.
Writing up progress reports and using them to improve performance during the course of a project.
Team Management And Conflict Resolution
Like any manager, a computer engineering manager needs to make sure that a team is performing at its best. This work often includes the resolution of conflicts before they can affect performance or staff retention.
Research is an essential part of computer engineering. There are two kinds of research conducted in the field:
Academic research is conducted with the aim of advancing or investigating an aspect of computer engineering. This is immensely important. Almost all developments in the field have occurred in the aftermath of a wave of research papers. Everything from the development of the microprocessor to the creation of the World Wide Web was first outlined in a research paper or group of research papers. Computer scientists and engineers wanting to go into academic research will usually have to seek a Ph.D. after they qualify. PHDs allow engineers to take time away from practical work in order to pursue groundbreaking research.
Product research is conducted with the specific aim of developing an innovative product using computer engineering skills. Engineers researching during the development of a product may look at academic papers, conduct experiments, or commission market research. When working for a large organization, market research will have been carried out before a computer engineering team gets involved. Engineers then work with a brief produced by product development teams and research with the aim of finding an appropriate technological solution.
The actual design of a product is the ‘meat’ of a computer engineer’s job in many cases. Using the research that they have conducted and the specialist skills they have accrued in training, a computer engineer works as part of a team in order to develop a working blueprint and eventual prototype of a new hardware or software product. Computer-Aided Design software has aided engineers in the design process in recent years. 3D component printing has also allowed for the easy and cheap creation of prototypes that would previously have taken a huge amount of money and time to produce. Hardware engineers typically work in research laboratories equipped with CAD and 3D printing technology. Software engineers may work in less physically specialized environments.
When a prototype piece of hardware or beta software design has been completed, computer engineers need to begin rigorously testing the fruits of their labor. Specialist testing engineers are usually employed as part of large-scale development projects. Hardware and software testing differ in many ways. Hardware testers typically need to be more thorough with their work as there are fewer programs that can automate the testing and reporting process in comparison with those available for software testing. All companies engaged in computer engineering need to invest considerable resources into testing in order to ensure that the designs that they are funding fulfill their brief. Neither new hardware nor software is considered to be safe, reliable, and secure without multiple stages of testing conducted by engineers.
In recent years, the development of automated testing software has blossomed. This software often relies upon machine learning algorithms that can learn from and identify anomalous data produced when things go slightly wrong. The development of this software is another task for engineers!
Very few computer hardware or software systems operate outside of a network these days. This was not the case in the past – when computers and programs were often stand-alone devices that were sometimes completely unique, and they rarely connected to the internet for longer than the internet was being used.
Network engineers are responsible for the integration of hardware and software products into wider networks. This is an immensely complex task due to the value and inherent vulnerability of networked devices. We live in an ever more networked world, and the mass migration of computing services to the cloud is only accelerating this singularization. When Isaac Azimov predicted a computational human singularity in his famous short story ‘The Last Question’, he surely had no idea how quickly the networking of society would progress.
Software engineering is an extremely important field within computer engineering. All computer hardware is reliant upon software – programs loaded onto or accessed by devices. The development of new software enables the creation of new capabilities on preexisting machines. Software engineers are well paid for their work, which befits their importance in the commercial, military, and experimental computing worlds. As well as developing new software, engineers are often tasked with auditing and improving old software. They use their technical knowledge and troubleshooting skills to overhaul code and create user-friendly and highly capable software updates. Debugging and database management are also tasks in the wheelhouse of a qualified software engineer.
Pioneers In Computer Engineering
Throughout the history of computer engineering, some figures have advanced their field enough to be recognized as pioneers. Here are some of the great people that have bought the world of computing forwards into new eras. This is by no means an exhaustive list.
Englishman Charles Babbage began working on his famous difference engine in the 1820s after studying mathematics at Cambridge University. This simple pioneering computer was able to perform mathematical calculations and caused a huge stir: allowing Babbage to work on an even more ambitious project. The engineer and mathematician expanded on his work and created what he called his analytical engine. This machine is largely considered to be the forerunner of modern computers and is widely considered to be his most enduring legacy. The analytical machine operated using the first computer program, consisting of cards with holes punched through them. Different programs could be ‘written’ by punching new holes in a card and feeding it into the machine. The analytical engine was not fully completed during Babbage’s lifetime, but his work was continued by the legendary Ada Lovelace.
Ada Lovelace, the only legitimate daughter of the poet Lord Byron, took up the mantle of Charles Babbage and made huge strides forwards in computing. She had met Babbage at a party in 1833 and was fascinated by a small demonstration of computing that he put on for her. She was the first person to suggest that Babbage’s machine could have applications outside of mathematics and worked on some of the first computer programs. She is commonly known as the ‘prophet of computing’ and is one of the most influential female engineers in any field.
Nicholas Metropolis first rose to prominence not in computer engineering but in nuclear physics. He was one of the trusted group of men chosen by Robert Oppenheimer to work on the first nuclear reactors during the Second World War. After the conclusion of the war and the devastating use of nuclear weapons in Japan, Metropolis set about working on a computer. His design, the MANIAC I, weighed 1000 lb and was pioneering in design. It had enough computing power and memory to play simplified chess-like games. Fascinatingly, it beat a human being in a 6 x 6 chess-like game in 1956 – predating the success of Deep Blue by many years.
Seymour Cray is known as the ‘father of supercomputing’. During the 60s, 70s, and 80s, he built the fastest and most ingenious computer systems that the world had ever seen. He was a maverick until the end and consistently thought out of the box when designing machines. He looked to the human body for cooling mechanisms – even encasing one of his most ambitious computers in artificial blood. Cray famously shunned bureaucracy. When he was tasked with writing a 5-year plan for the company he co-founded, he wrote:
“Five-year goal: Build the biggest computer in the world. One-year goal: Achieve one-fifth of the above”.
Needless to say, his engineering efforts were a success: he helped create immensely capable machines.
Tim Berners Lee
Tim Berners Lee is a figure that will be familiar to any network engineer reading this article. He is, of course, the inventor of the World Wide Web – the most extensive and far-reaching computer network ever conceived. While working at CERN in the 1980s, Berners Lee conceived of a computer network that could be used to share scientific information. Whether or not he knew of the impact his idea would have on the world is academic. Berners Lee was an engineer that truly helped to usher in a new age of human communication. His ‘Information Management’ proposal, which outlined the World Wide Web concept, was published by CERN in 1989. By 1990, the first web server and operational browser were in use at CERN.