An algorithm is a procedural plan for solving mathematical and computer problems, such as sorting data. It’s not a computer program yet. It’s merely a description of how you want the program to perform a task.

You can think of an algorithm as an outline, such as one a writer prepares before writing a piece. Similarly, a developer can plan how to solve a problem before writing an actual program.

In computing, algorithms serve as sets of instructions that determine the “what” but also address the “how.” Using algorithms makes it easier for programmers to gain a better understanding of the processes that would help them solve problems.

Other interesting terms…

An algorithm has two basic parts—a problem and its solution. The problem is, of course, the goal that you wish to achieve. The solution, meanwhile, is a step-by-step guide to produce the desired end product.

Think of it as a recipe. The problem is the completed dish, and the solution is the procedure you need to follow to make a delicious meal.

### What Is an Algorithm For?

Algorithms are used in performing calculations, processing data, and doing automated reasoning.

#### Algorithms to Perform Calculations

Algorithms have been around since ancient times. Babylonian mathematicians, for instance, began using a division algorithm in 2500 B.C. Egyptian mathematicians followed their lead in 1550 B.C. Greek mathematicians used algorithms to find prime numbers with the sieve of Eratosthenes in 240 B.C. They then used the Euclidean algorithm to find the greatest common divisor of two numbers. Arabic mathematicians used cryptographic algorithms to break code based on frequency analyses.

Algorithms continue to help computers perform calculations in spreadsheet applications and the like. Computing employees’ salaries is an example of this.

#### Algorithms for Data Processing

Data processing involves several processes that include but aren’t limited to:

• Validation: Ensuring that the data is correct and relevant.
• Sorting: Arranging data points in some sequence or into different sets.
• Summarization: Reducing details to identify main points.
• Aggregation: Combining data points.
• Analysis: Collecting, organizing, analyzing, interpreting, and presenting data.
• Reporting: Listing details or summarizing data or computed information.
• Classification: Separating data into various categories.

#### Algorithms for Automated Reasoning

Automated reasoning refers to understanding the different aspects of reasoning. It helps developers produce programs that let computers give complete or near-complete reasoning automatically. Even if it is considered a subfield of artificial intelligence (AI), it is also connected to theoretical computer science and philosophy.

Algorithms allow computers to perform one of the most developed areas of automated reasoning—theorem proving. In this process, you input a theory into a computer that will use if-then statements to prove it.

### What Are Real-World Applications of Algorithms?

Apart from solving mathematical problems, algorithms are essential to ensure that computer programs work correctly. Here are some computing applications of algorithms.

• Calculating employees’ paychecks
• Printing students’ report cards
• Computing companies’ revenue
• Creating profit and loss statements
• Calculating taxes

### Ways to Express Algorithms

Algorithms can be expressed in various ways, including natural languages, pseudocode, flowcharts, drakon-charts, programming languages, or control tables.

#### Natural Languages

Natural languages refer to those that evolved naturally through constant use and repetition among humans without planning or premeditation. They can be expressed verbally or by signing. Due to their informal nature (not typically defined in dictionaries), though, they aren’t used to program computers or study logic.

#### Pseudocode

A pseudocode is a plain language description of the steps in an algorithm. It often uses structural conventions of a standard programming language. It is intended for humans rather than machines to read. Pseudocode is easier for people to understand compared to conventional programming language code. It is commonly used in textbooks and scientific publications to document algorithms and planning for software development.

#### Flowcharts

Probably the most familiar, a flowchart is a diagram that represents a workflow or process. It shows a step-by-step approach to solving a task. Here’s an example showing how you can deal with a nonfunctioning lamp.

#### Drakon-Charts

Drakon-charts use a uniform way to represent flowcharts (even the most complex ones) that are easy to read and understand.

#### Programming Languages

A programming language is any formal language made up of strings to produce machine code outputs. It is used to implement algorithms. Some of the most popular programming languages are Python, JavaScript, and PowerShell.

#### Control Tables

Control tables are tables that control the flow of a program. While they don’t need to follow a specific structure or present defined content, they should direct control flow in some way for the execution of a processor or an interpreter. Control tables reduce the need to program similar structures or program statements repeatedly. Here’s an example.

As you probably discerned, without algorithms, no computer program would function the way they’re meant to. Any developer, therefore, should have advanced knowledge of and excellent skill in creating algorithms.

## Key Takeaways

• An algorithm is a procedural plan used to solve mathematical and computer problems. It’s a description of how you want a program to perform a task.
• Algorithms have two basic parts—a problem and its solution. The problem is the goal you wish to achieve. The solution, meanwhile, is the step-by-step guide to produce your desired end product.
• Algorithms are used to perform calculations, process data, and do automated reasoning.
• Calculating employees’ paychecks, printing students’ report cards, and computing company revenue are real-world applications of algorithms.
• Algorithms can be expressed using natural languages, pseudocode, flowcharts, drakon-charts, programming languages, or control tables.