Wednesday, February 27, 2013

Brief History on Computers


A computer is defined by Dictionary.com as "… an electronic device designed to accept data, perform prescribed mathematical and logical operations at high speed, and display the results of these operations." While there have been many machines since early history that have helped humans perform these operations, it has only been recently in terms of human history that computers have existed. Computers as we know them today were not born overnight but through many different computers that with the innovations made to them improved computers as a whole.

One of the first recorded machines that fit this description was the Hollerith Machine which was made around 1890. It was invented by Dr. Herman Hollerith for use by the Census Bureau who up until this point in history had performed the census by hand every 10 years. The main problem that the Census Bureau ran into was there were far too many people to be counted by hand; the Hollerith Machine solved this problem. It accepted the responses from the census questionnaire in the form of punch cards. When there was a hole in the punch card it would make an electrical signal in order to make the needed calculations. After inventing the Hollerith Machine, Hollerith went on to form the Tabulation Machine Company which went on to become the modern day company, IBM. (Abdelmoumin)

(Hollerith Machine)

The next machine, the Atanasoff-Berry Computer (ABC) is considered to be the first computer in the modern sense. It was conceived during the winter of 1937-1938 by Dr. John Vincent Atanasoff of Iowa State College. It wasn't until 1939, when funding was secured, that construction on the computer by Atanasoff and a graduate student Clifford Berry began and it lasted through 1942. This computer gave birth to many concepts still used in computers today. Some of these concepts are binary arithmetic and separate memory and computer functions. It weighed more than 700 pounds, and contained about a mile of wiring. (Atanasoff-Berry Computer)

(Atanasoff-Berry Computer)

After the Atanasoff-Berry Computer came Colossus, regarded as the first programmable computer. It came to be during World War II as a tool for breaking the large number of top secret high-level communications that were encrypted and then sent using the Germans Lorenz Machine, code named by British code breakers as “Tunny.”. Colossus Mark I was completed, moved to its permanent location, and operational by February of 1944. In June of 1944 the Colossus Mark II, an improved version of the Colossus Mark I, was complete. It operated five times faster than the Mark I. The Colossus was the first computer to be able to do boolean calculations which are calculations that return either true or false. The Colossus was also the first programmable computer, although it was not programmable in the sense of computers today. Today, computers are programmed through software, the applications which are installed on the computer. The Colossus was programmed through the use of switches and plug panels, which are types of hardware. Examples of hardware that may be more familiar include a keyboard or a mouse. (Colossus)

(Colossus)

Next week I will continue with the history of computers from after Colossus through modern times

Works Cited:

Abdelmoumin, Ghada A. "CSC 110 Class." Personal interview. Aug. 2012.

"Atanasoff-€“-Berry Computer." Atanasoff-€“-Berry Computer. N.p., n.d. Web. 27 Feb. 2013. http://www.princeton.edu/~achaney/tmve/wiki100k/docs/Atanasoff–Berry_Computer.html>.

"Colossus." Colossus. N.p., 2004. Web. 27 Feb. 2013.   http://users.telenet.be/d.rijmenants/en/colossus.htm>.

"Computer." Dictionary.com. Dictionary.com, n.d. Web. 27 Feb. 2013. <http://dictionary.reference.com/browse/computer?s=t>.

All images are from a Google image search.

Progress on my Program (2/27)

If you are new to my blog, during this semester I plan to create a program using the java programming language which will allow a user to store their passwords for easy access. In order for the program to function as I intend for it to, it needs to be able to interact with the user, store and at a later date recall records, and also have those records be encrypted to keep user data safe. Prior to this week I had figured out the code to be able to read records from a text file. I also figured out the code to be able to write a new entry to an existing text file. To see the blog where I show these two functions click here (Will open in a new window)

This week I have managed to get the remaining part of the write function working as I need it to. Last week using the write function I was able to add a new entry to the record that the program could access but I was not able to edit password that had already been entered into the program and saved. This week I managed to finally get that part to work and it sure was difficult. Below are a few screenshots that show this function working.

The first screenshot shows the my test file which contains entries and passwords to show how they would appear when this program is actually used. This is how the entries and passwords appeared before the program demonstrating the portion of write function I figured out this week. Below that is a screenshot of the command prompt showing me running this program. The reason that the password in the file is the exact same as the password as what the program says that it is plus a number is that there needs to be a way to distinguish passwords from each other even if they are the same. While demonstrating the program I change two password to show that using the code I don't have to reboot the program each time I want to change a different password  And the final screenshot shows the program after I have run the program. Notice how the passwords under Entry1 and Entry3 have changed. That is due to the program working correctly.





Wednesday, February 20, 2013

Progress on my Program(Part 2)


While I have been able to make two of the major functions of my program work very well there is still a fair amount for me to be working on before this program is complete. The first major thing that I need to work on is finding a solution to a problem that has arisen with my write function. While adding new entries to the end of the text file works perfectly, I run into the issue when I try and write anything to the middle of the file. One example of when the program would be doing this is when updating the password stored under an entry.

After I solve that issue the next two things will become my next concern. These are the delete function of the program and improving the overall user interface. With the interface I want to make it clearer to the user what commands need to be entered in order to cause certain results. It will also include making sure that the program runs smoothly without any unexpected errors appearing.

The final things that I will need to work on in the coming weeks won't be a focus of mine until I have the basic functions of my program coded(New entry, Edit entry, Delete entry and viewing an entry's password) and my current problem solved. These things that will be last to be worked out will be encrypting the entry names and passwords that are stored, and making the program be able to be started up from a desktop icon as opposed to typing code into the command prompt to achieve the same goal.

Progress on my Program(Part 1)

These past two weeks I have been working quite a bit on learning the java programming language and working on the code and interface for key parts of my program. I have also made a major decision regarding the final product that will be produced by the end of this semester.

The major decision I have made regarding my program is that I will not be coding a GUI into the program. My main reasoning behind this decision is the amount of time it will take, not only to further research how to make one but also the time it will take to design and then build the GUI. From the research that I have done thus far on the subject it is apparent to me that it will take quite a bit more research to find the information needed for me the be able to start making GUI's. The other problem with the research about GUI's is there may not even be the information I am looking for available to me. The other issue is the amount of time that will have to be put into first designing the layout of the GUI and then coding it. Due to the amount of time those two tasks will take, I don't think that I would be able to make significant progress on the GUI before the semester is over.

Instead of a GUI, I think that making the program command-line based would be much less time consuming and I am sure that it can be as effective and user friendly as a GUI. The only thing I need to make sure of is to make the commands available to the user very clear and make sure to check the final product thoroughly for any sections of the program which may not be as user friendly as I would like.

I have made quite a bit of progress in learning code that has helped with the coding of  some of the main functions of my program. The functions that I have been able to write code for include reading a line of text from a document and being able to write records to a file.

The first thing that I learned how to do was have my program read a line a text from a text document and display the result on the screen. Below is a screenshot showing that I can indeed have a program read from a file. The text file that I have opened contains the text that the program is to read. In the command prompt window I also have open in this screenshot shows the result of the simple program I wrote to demonstrate that the code is functional. The main benefit to having this ability in my program is that it will allow the user to view their previously store passwords.


The next function that I was able to learn how to do was take a line that the user enters into a program and store that line in a text file. This function will make it so that when the user goes to add a new entry into the program, their entry and password are stored and are therefore able to be accessed at a later date. Below are three pictures showing this function working properly. The first picture is of the text file before the write function is used to edit the file. The second picture is of the command prompt, first instructing a user to input the text they want written to the file, then telling the user that the text they entered has been written to file. The final picture is of the text file after the function has been used on it, as you can see the text that was entered into the program via the command prompt has been added to the text in the text file









Wednesday, February 6, 2013

Basic Information on GUI's

A basic GUI must contain at least three kinds of objects. The first of these are components which define an element which interacts with the user directly either by getting information from the user or displaying some for the user. A few examples of this would be a text field or a scroll button. A special type of component is a container which is used to hold other type of components. You can think of it as the window that is displayed when you run a program. The next type of object that is needed for the most basic of GUI’s is an event is an object that represents some occurrence such as pressing a mouse button or entering text. The final object that is needed for a basic GUI is a listener which is an object that waits for an event to happen; when it does the listener reacts to it.

When programming a GUI the relationship between these three objects must be thought of. Even a button must be planned out so that the programmer knows exactly what will occur when that button is clicked. Behind each component that is added to the GUI there needs to be at least one event and one listener in order for that component to be useful. The programmer must define the event that will signal interaction with the component and also what the program is to do upon interaction so that the listener can wait for the interaction to occur. Once the interaction happens the listener then tells the component that is has been interacted with so that the interaction can cause a response by the program.

 

Rader,Cyndi.“Java GUI Basics” Web.6 Feb. 2013

 

 

Components of my Program

There are going to be four main sections of my program that will allow it to run well and be user-friendly. The first will be the JAR file which will serve both as the storage device for all the necessary files to be used by the program. It will also be used to cause the program to start running on its own without the help of any other programs.

The next section will be the GUI(Graphical User Interface) which will allow the user to use the program with much more ease than a command line based program would be. I will have one main section of the GUI which will display a listing of all the labels that have been entered into the program. On the top will be a bar with buttons to create a new entry, edit an entry, delete an entry, and any additional functions that will be needed for a user to use the program.

The next two sections will work together; they are parts of the code that will store any new information provided by the user and then also encrypt it to make the information more secure. The part of the code that stores the information provided by the user will not be individually visible to the user but will work together with the GUI in order to make information stored by the user available not only right after the user hits the “save” button but also every time that the user opens the program up. The second part, the code that will encrypt any information provided by the user, will not be visible to the user but will play an important role in keepings the user’s information safe.

In some of my coming posts I will be discussing the makeup of each of these parts for when I create them for my program.