Lesson

Exploring Algorithms (Lesson)

One way of defining an algorithm is by creating a series of step-by-step instructions that can be used to solve a problem or carry out a task. The intent of this section is to show what is possible with algorithms. You might have experienced the power of an algorithm when the information you were looking for was at the top of your search results or when your GPS device suggested another travel route based on traffic. You might have noticed that it is possible to develop an algorithm or test it without writing any code, but technology can be quite useful for carrying out many steps of an algorithm more quickly than if you were to try and do it by hand.

Traveling

Determining the most efficient path to travel across a country is a challenge computer scientists refer to as the Traveling Salesperson problem. It is not necessarily hard to determine one possible path. In the activity, you might have developed your own process for traveling through each city. The difficulty is determining the path that is the shortest or includes the fewest number of steps and whether that optimal solution can be generated in a reasonable amount of time. It turns out that much like many other scientific endeavors, the act of investigating the Traveling Salesperson problem and other problems like it has yielded advances in fields such as computer networking, genomics, and of course route planning. Consider this the next time you feel intimidated by a problem; even the act of trying to solve it might lead to interesting discoveries.

Words over Time

Algorithms, when implemented in technology, are able to carry out instructions far more quickly than a human ever could. If this efficiency is coupled with a large amount of data, then it might be possible to make discoveries that would normally require years of painstaking research or many people working together. One of the original uses of the term computer referred to a large group of people working together to perform a calculation that could be solved today by almost any pocket calculator. The n-gram viewer is an example of an algorithm applied to a large data set that yields interesting, and sometimes humorous, insights into our culture. As more people learn how to analyze data and organize information, they will be able to apply it in new situations and expand the understanding of the universe in ways never before imagined.

Cellular Automata

Chaos is a system set in motion with initial conditions and rules that govern it. For Cellular Automata, a small change in the cells that are alive at the beginning or in the rules being followed dramatically, changes the outcome. Chaotic systems are found in weather and traffic patterns, as well as cosmology and genetics. The algorithms used in Cellular Automata are very simple and math enthusiasts have enjoyed playing versions of the Game of Life over the years. Technology enables us to quickly see the effect of these rules applied over many cells over many generations and enable mathematicians to simulate chaotic conditions for a large range of problems using algorithms

Genomics

Farmers have known that plants and animals create offspring with similar traits to those of their parents for millennia. When it was discovered that all life shares a genetic code base and heritage, this opened up tremendous opportunity for exploration. Insights gained from studying flies can be applied to pigs and other species. Understanding the human genome and how genes vary over time and across cultures can improve medical practices, as well as provide a historical record for the human species. Human DNA contains thousands of genes and each gene can potentially lead to a lifetime of research. Algorithms are used to quickly search and analyze samples to look for patterns and simulate the effect of mutations and treatments. No two human phenotypes are identical and the study of genetics allows you to better understand what makes you unique and how you fit into the larger story of life.

More are learning how to develop algorithms and apply them in new situations and domains of knowledge. What are you passionate about and where do you see possibilities for algorithms to provide new ideas and opportunities to learn and explore? Share your ideas with your colleagues in the course community.