Parallel and high-performance computing are the future. With the vast amount of complex data and information that has to be processed, modern machines are not up to the task on their own. This is where distributed networks and parallel computing come into play.
Working closely with the hardware (such as CUDA with NVIDIA, OpenMP, etc.), software engineers write programs that achieve peak performance. I for one wish to delve further into this powerful science and technique.
Today, numerous devices we use everyday have computers such as our phones, tablets, and gaming consoles. However, computers are used in far more applications than just these; massive machines such as cranes, cars, home appliances, and many more all use computers, and software engineers have to write programs to accomodate them and their environments.
Often, one must write code on extremely limited hardware, which may also exist in harsh temperatures/weathering. Optimization and situational planning are the keys here, and I want to learn more.
Compilers have existed in Computer Science since the earliest days of programming. Machines do not understand words and phrases, so a compiler has to translate the programmer's high-level syntax and paradigms to a numeric [binary] representation. The Java Virtual Machine for example has a very sophisticated compiler (which is also a interpreter). C, C++, and others are likewise compiled languages.
Furthermore, they're one of the lowest levels that source code reaches before it's fully recognized as commands and opcodes by the processor/machine.