I have been studying about computers and found that they evolved from the basic mechanical devices with limited functions to the amazing machines we have today. Its all very new and interesting to me. I believe that programming is the act of writing an algorithm in a higher or lower level language. An algorithm is a sequence of detailed and unambigious steps needed to solve a problem or complete a task. Older computing devices such as the Jacques loom, pascalline, the US census counting machine, ABC computer, were said to have limited programmability because they could only carry out a limited range of algorithms? is this correct? The program for the Jacques loom was the punching cards that were input into it? So programming often meant the result was changing the physical motions of these old computers? The architecture of a computer refers to the the components and the interactions between them. The Von Nuemann architecture consists of a CPU, Memory unit, and an I/O. The CPU is where the steps of algorithms are carried out, the computational unit. The memory unit contains the program and the data required for the program, the I/O is a connection to the outside world. My question is, what are the alternatives to this type of architecture and is my understanding of it correct? What are the advantages of this architecture as compared to others?