Featured

Algorithms

The term algorithm is used in computer science to describe a finite, deterministic, and effective problem-solving method suitable for implementation as a computer program. Algorithms are the stuff of computer science: they are central objects of study in the field.
We can define an algorithm by describing a procedure for solving a problem in a natural language, or by writing a computer program that implements the procedure.

Algorithms are not confined to mathematics alone. When you cook bread from a recipe, you’re following an algorithm. When you knit a sweater from a pattern, you’re following an algorithm. When you put a sharp edge on a piece of flint by executing a precise sequence of strikes with the end of an antler—a key step in making fine stone tools—you’re following an algorithm. Algorithms have been a part of human technology ever since the Stone Age.

THE STUDY OF ALGORITHMS AND DATA STRUCTURES is fundamental to any computer-science curriculum, but it is not just for programmers and computer-science students. Everyone who uses a computer wants it to run faster or to solve larger problems.

From N-body simulation problems in physics to genetic-sequencing problems in molecular biology, the algorithms have become essential in scientific research; from architectural modeling systems to aircraft simulation, they have become essential tools in engineering; and from database systems to internet search engines, they have become essential parts of modern software systems.

The descriptions of algorithms in this blog are based on complete implementations and on a discussion of the operations of these programs on a consistent set of examples. In addition to presenting pseudo-code, I like to work with real code, so that the programs can quickly be put to practical use. I tend ro write the code in Java, Python or both, but in a style such that most of our code can be reused to develop implementations in other modern programming languages.

As Carl Sagan put it, “Science is a way of thinking much more than it is a body of knowledge.”
Happy learning!

Here is a list of my favorite Open Data Sources that I use with my students often: