An algorithm is a step-by-step process used to solve a problem or reach a desired goal. It's a simple concept; you use your own algorithms for everyday tasks like deciding whether to drive or take the subway to work, or determining what you need from the grocery store. Software programs are an example of much more powerful algorithms, with computing resources used to execute multiple complex algorithms in parallel to solve much higher-level problems.

As computers become more and more powerful, algorithms are helping them take on a life of their own - literally! Machine learning techniques rely on algorithms that learn and improve over time without need for a programmer's guidance. These techniques can be used to train algorithms for relatively simple tasks like image recognition or the automation and optimization of business workflows. And at their most complex, these algorithms are at the core of building the deep learning and artificial intelligence capabilities that many experts expect will transform our world even more than the advent of the internet!

Learning to understand and apply algorithmic techniques for problem solving is an incredibly important skill for solving complex computing problems, and studying this field requires more specialized prerequisites than some programming-focused computer science courses.

Students should be familiar with writing code in common programming languages like C, Javascript, and Python. However, it is also essential to have good discrete mathematics skills such as logic, sets, functions, and graphs. It is also helpful to start with a foundation in data structures, which is the study of how to organize, manage, and store data to enable efficient access - a critical underpinning of any effective algorithm.

Because algorithms are central to so many types of computer programming work, professionals with skills in this area can end up working in high-paying roles in a wide range of companies. For example, experience with algorithms is important for work as a data scientist, one of the most widely in-demand jobs in tech.

Other algorithm jobs are more specialized. Tech companies working with artificial intelligence or other advanced applications may employ algorithm engineers, machine learning engineers, automation software engineers, and computer vision engineers. There are also highly specialized jobs with companies working with Internet of Things (IoT) applications, such as computer vision engineers, medical device algorithm engineers and self-driving car engineers.

It's easy to find lots of computer programming and coding courses online, but courses in algorithms are more specialized and less common than courses teaching popular programming languages like Python or Javascript.

Introductory courses on data structures and algorithms are a good place to start, often after completing prerequisites in discrete math and computer programming fundamentals. Higher-level students may want to continue into more specialized topics like machine learning and reinforcement learning, neural networks and deep learning, and AI engineering.