Sunday, November 24, 2013

Artificial Intelligence



We've seen artificial intelligence change over the decades and it is quickly being used for many projects regarding robotics and the like. There are even cases where computers are now able to perform a couple of tasks better than a human such as playing chess or playing a game of Jeopardy. As artificial intelligence develops, we are starting to see a trend of human tasks being replaced by a robot or software. Debating whether this trend will provide much needed support or lead to future consequences is yet to be seen.

The rapid advances of artificial intelligence are seen mostly in robots. We now have portable vacuum cleaners that move around the house for its daily routine, picking up any mess to be seen or felt. Other examples include military projects in which robots or other devices will be used to replace humans in hazardous situations such as defusing bombs. Another example of the rapid advances of artificial intelligence is Amnon Shashua, an Israeli computer scientist, who has modified his Audi A7 to be able to drive from Jerusalem to Tel Aviv without having to touch the steering wheel by adding a camera and artificial-intelligence software. [2]

With these advances in artificial intelligence, there is no telling how close we are to living in a world where robots will one day become a necessity for every human and whether or not this will be beneficial for the future.




Sunday, November 17, 2013

History of Computer Science: Programming languages

Every Computer Science student begins their programming skills by learning their first programming language, which may be Java, C, or any other language. Most students today start off their programming skills with the popular languages such as Java, C, C++, or Python due to it being more readable and structured. But what about the languages that helped inspire these languages? In the 1950’s saw the rise of many second generation (Assembly language) and third generation of programming languages (Fortran, COBOL, Lisp). These languages are considered the oldest, but are still used today.

The idea of second generation languages were to have native machine instructions written in a way that it would be readable for humans by using symbols for instructions and memory addresses. It was called assembly language because people would run the text through a utility called an “assembler” that would translate the nearly-human-readable code into machine instructions.

The purpose for the third generation of programming languages was to solve machine-specific problems and make programs more understandable. “The third generation languages made it possible for businesses to create huge, complex applications that would remain in service for decades such as supercomputing applications, AI development, or business software." NASA, credit cards, and ATMs still use these languages till this day.

Soon later, the idea of structured programming was thought of and the languages that we know and use were invented. For a brief history of programming languages, I offer you a visual chart that can be found at http://www.veracode.com/blog/2013/04/the-history-of-programming-languages-infographic/.


Saturday, November 9, 2013

File Sharing


File sharing is the practice of distributing or providing access to digitally stored information, such as computer programs, multi-media (audio, video), documents, or electronic books. With the internet becoming a useful tool for group work, many people are starting to use file sharing programs like Dropbox, Google Docs, SkyDrive, or any other file sharing program to communicate and share project ideas/work. As the idea of collaborating online as a group sound convenient, there should be some form of etiquette for those that are new to the whole idea or to simply avoid being a jerk to others and prevent any miscommunication between the group members.
Naming folders after projects instead of people should be useful since you want others to keep track of what each folder contains rather than see who made the folder.
It is common courtesy to ask your project members if it is okay to delete any files just in case someone may need the information. Do not add more frustration to the project by deleting something that could be crucial for another team member to use in order for them to complete their task.
Don’t change file names or rearrange files because doing so could become detrimental for those that are using it. Even though you may be doing a favor for them, it may bring upon more confusion and upset those that didn’t know the change since they might have had a procedure or structure that worked well for them. An example of this would be that you wouldn’t want your roommate or some other person to fix your room and have your things placed in unfamiliar territory. If you still have that that urge to fix the arrangement of the folders, then politely ask or offer some assistance or suggestions and see if the group agrees.

The best thing is to have a group discussion about how the folders and files be organized. Miscommunication is a nuisance and can waste the groups' time. Having too many folders isn’t necessarily a bad thing as long as they make sense and don't contain repetitive files. If you go by these guidelines, your group may communicate effectively and there shouldn't be less discrepancies among each group member.

Saturday, November 2, 2013

Data Structures: A Vital Part of Being a Programmer

        

        As a young programmer who started learning about programming a year ago, I haven’t really spent a lot of time mastering my knowledge on data structures. I have learned the basics such as arrays, array lists, hash maps, tree maps, stacks, queues, binary trees, simple sorting algorithms, and linked lists. With this knowledge, I realize that finishing a particular project or problem involving data structures can be done in various ways. This is where creativity and figuring out which data structure is more efficient to use will separate you from everyone else. For example, I am currently working on a calendar project for my Java object-oriented design class and realize that there are many ways to approach the project. Some students may use an array list or a hash map to sort out the events that need to be included in the calendar.


How important is data structures for a programmer?       

        Well let’s put it this way, every programmer is required to learn data structures as it is a fundamental part of being a computer scientist. Big companies like Microsoft or Amazon require interviewees, especially those who just graduated from college, to be well-informed in data structures. 

But why interview on data structures?

        We can assume that a recent graduate may not have the working experience to demonstrate that he or she can program in a working environment. Testing interviewees on data structures is an excellent way to tell if the person is able to succeed with the company and be able to see what the person’s critical thinking skills are like when it comes to solving a particular problem. Since data structures are conceptually the same for other programming languages, it is easier to compare two programmers’ knowledge by asking them questions that tests the basics of programming than comparing whether this programmer knows this amount of information more than the other. 

Data structures are a vital part of being a programmer and without having a deeper knowledge of them may result in finding a job in the programming career field a bit more difficult.