Archive for September, 2012
“A large part of mathematics which becomes useful developed with absolutely no desire to be useful, and in a situation where nobody could possibly know in what area it would become useful; and there were no general indications that it ever would be so.” ~Jon Von Neumann
Jon Von Neumann was born into a Hungarian family on December 28, 1903. His family was consisted of wealthy jewish parents and was considered the eldest of his three brothers. At an early age Jon was considered to be a child prodigy being able to divide two 8 digit numbers (without paper and pencil) at age six by the time he was age eight he was doing differential and integral calculus. Jon went to Fasori Evangelikus Gimnázium in Budapest for his high school education in 1911. By the age of fifteen Neumann was studying advanced calculus under one of the greatest mathematicians of all time Gábor Szegő. Szegő was so impressed with Neumann’s computational ability that he was in tears after their first study session. Szegő continued to tutor Neumann and at the age of nineteen Neumann published two mathematical papers. Neumann graduated with a degree in mathematics with minors in both experimental physics and chemistry. After obtaining his degree he took a teaching job at the University of Berlin during the his first few years there he had posted twelve more papers in mathematics. By the end of his career he had published thirty-two major math papers averaging at least one paper per month. In 1930 Neumann was invited to go tour Princeton University and be a professor in mathematics there. It was during this latter year of Von Neumann’s life that he married twice and conceived one child his daughter Marina.
Most of Von Neumann’s achievements have been major contributions to mathematics either establishing new ideas to the discipline or building and exploring the foundations for some older theories. Some of these contributions include game theory, quantum logic, lattice theory, operation theory, and many more. Neumann had also learned to use his work in explosions leading him into being part of the Manhattan Project which led to the first nuclear bomb.
What did Von Neumann do for computer science though? Seeing as he is considered a founding member of the discipline Von Neumann had starting using computers with his work on the nuclear bomb. He and his colleagues used computers to simulate the numbers of what possible effects on impact and after effects could happen if the bomb was to be used. Von Neumann had also wrote a paper titled First Draft of a Report on the EDVAC. The paper described computer architecture which also led to his work with the ENIAC. Von Neumann’s work as led him to be credited as a founder for modern computer architecture.
If it wasn’t for Von Neumann’s ingenious mind and brilliant thinking we might have not reached this point in modern computing technology.
The heart of blogging is linking…linking and commenting. Connecting and communicating – the purpose of the Internet. (George Siemens)
Since the birth of the internet human beings have been connected in a variety of different ways. Take social media for example, blogs and other html based communicating mediums have been the foundation for social interactions. Blogging was first envisioned in the 1990s with the creation of web publishing tools. The term “weblog” was then coined by Jorn Barger in 1997 and then was later shortened by Peter Merholz when jokingly on his own blog (ironically) split the term into “we blog”. It wasn’t much longer until the term “blog” became the standard form for something of that category.
How were people communicating before the creation of the blog? The internet was just starting to thrive and seeing the potential of people communicating, various groups of people used various tools like Usenet, GEnie, BIX, and Bulletin Board Systems (BBS). These formats soon lead to foundations of blogs the web diary. Web diaries were just as simple as their name nothing more than an online resource for users to post their daily lives and experiences in an html format. Another way to think of a web diary was just a website that has its information (the posts) updated regularly with information concerning the topic (in this case the life of the user).
So what were the results of such a creation? Generally users use their blogs as a digital chronicle of their lives and experiences. Politicians saw the blogs as a potential resource to submit their opinions on various issues (war, economy, ethics, etc…) so that potential voters could either agree or disagree on their opinions thus leading to the candidates gain or loss in support. Politicians were not the only ones who could see the potential of this valuable resource. Various marketing companies and businesses could make their own blogs to advertise the product and service that they are trying to sell. Not only that but they could also as for feedback on previous products or get input on what to design or implement next. With the speed and connectivity of the internet such information could be processed and received instantly. Another example, a sport team could use a blog to not only document the schedule for their games but also give their fans more information and interactivity with the team.
Blogging today though is not just about the words composed on the blog. Other mediums including pictures (flickr, photobucket, and deviantart) can help enhance the experience of the blog post itself. Videos have also been quite popular enough that even blogs of users just speaking about a topic (known as vlogs) have become quite popular as well.
The internet has open the world to a vast number of communication networks. Blogs are just one example to the media that humans use to interact and communicate with other individuals in our growing world of technology.
Applications in computer science have always been a staple part of the discipline. When talking about distributed computing one must first understand the idea being presented. Distributed computing focuses on the idea of distributed systems. That system is made up of many autonomous computers that interact in a computer network. Distributed computing has been known to have similarities with other distributed systems. These systems include parallel and concurrent computing. Parallel computing focuses on the idea that all processors in the computer must be able to have complete access to the computer’s shared memory to exchange date between the other processors in order to accomplish the task that computer is required to solve. Concurrent computing focuses on having programs that are initially coded to interacting with other computational processes which then can be set to run through the parallel computing style.
An example of distributed computing would be something that we find using everyday the internet. The internet is composed of a series of networks that use the internet protocol suite. In the words of Major Owens the internet is “Those involved in the program are interested in how to use photography, videos, the Internet, film, and anything related to communications and transmission of information in the most up-to-date modern ways.” One example of how the internet is doing distributed computing is looking at basic online transactions. When a consumer purchases an item on any website say amazon they submit their credit card/payment information. This information is processed by one computer and after verifying said information then has another computer that sends information of the approved purchase to one of amazon’s warehouses. The computers along with the workers there will process and ship the order while documenting what is being taken away from the warehouse inventory. The computer that receives this information will then modify the amount of the supply of that specific product.
Another good example of distributed computing would be gaming. To be more specific I am talking about giant multiplayer online games think World of Warcraft. Servers in that game have to keep track of various factors/items that go along with just one players account. For example say a player has just found a sword in the game. A computer first has to generate the values for the weapon when he first obtains it. Then another computer/server is maintaining the item in his inventory or equipment slot depend on what the player decides to do with it. If the player decides to sell the item to a store the computer must now keep in mind that item has now been added to the inventory of said store. If the player chooses to put the item into storage and take out a different item a computer must keep track of what is left in the player’s storage.
This is just a brief showing of what computers are capable of doing with distributed computing. The applications mentioned before can be quicker and more reliable as our technology increases over time.
The idea of Turing completeness states that a computer should be able to simulate another and vice versa. This idea is closely related to lambda calculus. Originally Babbage’s analytical engine that he had envisioned could have technically been Turing complete. It was only later through the work of other great computer scientist like John von Neumann through the ENIAC and EDVAC did a theoretical physical manifestation of a Turing complete computer became a reality. To fully understand the concept though we need to dig through the history and the practicality of turing’s greatest creation.
To first get a complete idea on Turing completeness we need to focus on the machine that first envision the idea. The Turing machine was first envisioned by Alan Turing in 1936. He had described the machine as an “automatic” machine that could understand any algorithm. If anything the Turing machine in his mind was to only help fellow computer scientist with understanding the limits that a computer can have with logical/mathematical computation. Turing gave a full report of his discovery in 1948 in his groundbreaking essay Intelligent Machinery in which Turing described the machine like this: “…an unlimited memory capacity obtained in the form of an infinite tape marked out into squares, on each of which a symbol could be printed. At any moment there is one symbol in the machine; it is called the scanned symbol. The machine can alter the scanned symbol and its behavior is in part determined by that symbol, but the symbols on the tape elsewhere do not affect the behaviour of the machine. However, the tape can be moved back and forth through the machine, this being one of the elementary operations of the machine. Any symbol on the tape may therefore eventually have an innings.“(Turing 1948, p. 61) A Turing machine is considered “universal” if said Turing machine can simulate and another Turing machine with that machines input.
So how does a Turing machine work. The physical manifestation of the Turing machine is just a device that writes either a 1 (for true) and a 0 (for false) on a length of theoretically infinite sums of tape. Overall the four necessary parts are: tape (obviously so that the computer has something to print the values on), the printing head (used to print the values on the tape), a state register, and a table or the instructions given to the Turing machine in order to carry out the algorithm that the programmer wants the machine to perform.
Does the universal Turing machine have any practicality to our day and age? The obvious answer is yes as it holds for all computer scientist a way to understand and adapt to the limits of computer logic to create something to help advance our society.
The second CIS blog post focuses on early computing and early computing devices whether that be an early modern computer to a simple counting device. One of the major devices that helped start the formation of the basic ideas of “computing” has been used around the world and throughout time up to this present day. The device I am talking about is the abacus a simple device used to help calculate numbers. The modern-day abacus consist of square wooden frame with spokes within the frame holding beads or other small objects that can be moved around. The early abacus was just more or less a table with grooves allowing rocks, beads, beans, etc… to move around the grooves. Abacuses were first documented in history during the age of the Mesopotamian era dating around 2700-3000 BC. The abacuses used during the time were for just simple math computations such as addition or subtraction but not for much more complex operators. The first actually physical abacus found from human history dates back to the ancient Greeks as early as fifth century BC. Their abaci were constructed of mainly marble and wood and some have been found to be over fifty-nine inches long! Two more notable civilizations that used abaci in their culture were the chinese. The chinese abacus dates well back into the second century BC. Their abaci were known as suànpán or “counting trays” The abacus looked very similar to the modern abacus of today since it was constructed of hardwood and used beads to move along the spokes. Unlike the ancient greek abacus the chinese abacus is capable of doing harder computations. These include multiplication, division, square roots, and many more.
So why is this important to modern-day computers? Well a special abacus called the binary abacus is used to explain how computers manipulate numbers. The binary number system was first envisioned by the Indian scholar Pingala in the fifth to second centuries BC. The idea was pushed forward later by Francis Bacon in 1605. He theorized that letters could be coded into simple binary bits. When George Boole published his idea of Boolean algebra in 1854 he along with Claude Shannon set the foundations for both binary numbers but electronic circuits as well. The basics of binary code involve the countless ones and zeros many have seen on reality tv shows when it comes to the characters of that show messing around with computer software (in most cases breaking the computer). In reality though the ones and zeroes can represent any number of our basic integer system. Binary numbers can be used through any of our basic math operators. These operators can be made through a series of tables which again have the user/computer manipulate a grouping of ones and zeros (that represent numbers) to get the desired result. This is why the abacus a device that was made originally to do simple calculations has led to be one of the greatest foundations for modern computing science of our day and age.
Pictures of Abaci: