Now that we've seen that a number of models of computation are equivalent to each other and we've expressed the Church-Turing Thesis that they jointly represent what we can reasonably call computable. Let's return to the question of what things can do this. So, what complex systems ranging from chaotic dynamical systems to mechanical devices, can actually carry out the steps of a computation. In fact long before Church and Turing and Rosa Peter and the other theorists of computable theory came along, Charles Babbage, in the 1800's, wanted to build various mechanical computers. One of them was called the Difference Engine. It was really only capable of carrying out certain types of calculus. Babbage's goal was to have a machine which could print out good nautical tables of sines and cosines and logarithms and that sort of thing. Hopefully steam powered so that people wouldn't have to do it by hand. But Babbage also dreamed of a more complicated machine called the Analytical Engine which is really in modern terms, would have been, had it been built, a universal computer. And Ada Lovelace studied his designs and came up with some very nice observations about them. First of all, she wrote the first complex program with two nested 'for' loops that would have computed a type of a number called the Bernoulli numbers but she also predicted something very interesting. She noticed that if you could represent numbers in such a machine, then you could represent many other things as well. For instance music and she imagined machines which could aid in the composition of new musical pieces. And so the world we live in today where the bits and bytes and integers that are stored inside computers can also represent audio, video, images, movies, music, all the things we are used to, that's really the world that Lovelace envisioned where we can represent many different types of data with numbers, digits, or bits inside of a computer.