The evolution of digital computing is often divided into
generations. Each generation is characterized by
dramatic improvements over the previous generation in
the technology used to build computers, the internal
organization of computer systems, and programming
languages. Although not usually associated with computer
generations, there has been a steady improvement in
algorithms, including algorithms used in computational
science. The following history has been
organized using these widely recognized generations as
mileposts.