Saturday, November 23, 2013

Artificial Intelligence: The Current State and the Future




What is Artificial Intelligence? What do you think of when you hear these two words? My mind instantly goes to the movie, I, Robot! It was the first movie that made me grasp the concept of AI. Essentially, AI is the concept of making gadget self-aware in some way.


Current Progress
AI has made much progress since the invention of the programmable digital computers in the 1940’s. We have numerous robots in the world doing work that was previously done by man or just impossible to do. These robots also have some sort of artificial intelligence that allows them to learn and think on their own. Apparently, robots are now completing over 80% of theassembly of a car (bitrebels). This is beyond amazing and truly shows the power of AI.

Currently, Google is working on a self-driving car that utilizes artificial intelligence. This is truly revolutionary and can truly transform society. AI is a remarkable field that enables many new inventions and there is so much more to come in the future.
                                                                                                                 

The Future of AI
While there has already been much progress in the field of artificial intelligence, there is still a great amount of progress to be made in the future. The automobile industry has already adopted AI into many things already and in the future, we are going to see smarts put into everything! We’ll see intelligent transportation, emotional computing and much more. I’m truly excited to see how AI will revolutionize the medical field in the future.


Sunday, November 17, 2013

History of Computer Science: It's All About the Languages

It's no doubt that programing languages are important! Guess how many programming languages exist today. 50? 100? 500? Hmmm, 1000? Nope! 1500? Higher! 2500?!? YES (well, close enough)! There are more than 2500 documented programming languages. Simply, a programming language is a language that is used to communicate with computers. You've probably heard of at least one, if not more. Here is a list of a few of the ones I've heard: Java, C, C++, Python, Ruby, PHP, FORTRAN, Ada, Scheme, Lisp and this goes on! They're are so many of them but many of the newer languages are derived from the older ones. Let's talk about the different kinds of programming languages and some of the major developments.

Machine Language
Machine Language or machine code is the lowest-level programming language and it's the only language understood by computers. How do computers understand it? Well, a set of instructions that is made up of binary values is run by the computer's central processing unit (CPU). Above the machine language, there is the assembly language.

Assembly Language
Assembly languages are also low level languages but people can read them, unlike machine language which is almost impossible for humans to read. So how does a computer read assembly language? It can't. An assembler is used to convert the assembly language to machine language that the computer can understand. Assembly language use a mnemonic instead of numbers in order represent instructions. There are some disadvantages to using assembly languages though. First of all, it's still hard to understand. Secondly, assembly language is often machine depended where only a certain machine's CPU will be able to process the language.

High-Level Language
This language allows programers to write programs that are easily readable and are not dependent on a specific type of computer. It closely resembles the human languages. Again, how does a computer read this language? Well, a compiler or an interpreter is used to translate it into machine language. FORTRAN, COBOL, and ALGOL were created in the 1950's and were crucial to forming the foundation of future programming languages.

Programming languages are beautiful. If you would like to learn more about programming languages, then this page gives a great overview of some of the programming languages. 

Works Cited

Sunday, November 10, 2013

File Sharing: Peer-to-Peer File Sharing


Have you ever shared anything with someone else before? It can be food, clothes, pencils, pens, CDs and pretty much anything. Yes? Great, you’ll understand what file sharing is easily. No? Really? Well, no problem. You’ll still be able to understand the gist of file sharing, specifically, peer-to-peer file sharing.

First, let’s define a few terms.

File sharing: As the name implies, this a term to share digital files electronically. These files could be music, video, games and anything really.

Peer-to-Peer: Peer-to-peer (P2P) is a method of “file sharing that allows normal users (“peers”) to connect directly to other users to share files.

Copyright Infringement: This is the act of “violating the exclusive rights of copyright owner” (oit.utk.edu). Simply, this is the act of sharing other people’s works (music, books, movies) without their permission.

Now that you know what file sharing is, I’d like to specifically discuss peer-to-peer sharing in more detail. For P2P file sharing, you use a software program instead of your web browser to find a computer that has the file you are looking for. This diagram gives you a good idea of what happens with P2P file sharing.



  1. With the P2P software you are running on your computer, you send out a request. In the diagram, the request is “Baby go home.mp3”.
  2. The software then queries other computers that are running the software and are connected to the internet.
  3. When the file is found, the download begins.
This sounds like a great way to share content with other people, right? Sure! However, there are some negative aspects with P2P sharing.
  1.  Leeching. Some people download the files they are looking for and immediately disconnect the software, not allowing others to obtain files from their system. One of the solutions to this problem is a method called tit-for-tat. BitTorrent, “a protocol that offloads some of the file tracking work to a central server (called a tracker)", uses this method where in order to receive file, you also have to give them (computer.hostuffworks.com).
  2. Copyright Infringement. It’s no secret that file sharing consists of not only sharing legal content but illegal content. You can visit www.copyright.gov to learn more about it.
  3.  Personal Dangers. Many P2P software applications that you install on your computer may often come with spyware and other programs that can put your computer at risk.
 I’ve only given a basic overview of P2P file sharing but there are many resources to learn about P2P file sharing. Just remember, there are consequences to sharing copyrighted materials without the permission of the creator. I briefly mentioned BitTorrent and if you would like to learn more, the article HowBitTorrent Works is great. If you want to learn more about file sharing, the article "What is File Sharing?' is great.



Works Cited

Saturday, November 2, 2013

Data Structures: What Are They and Are They Really That Important?

Data is everywhere! It doesn’t take a genius to figure out that the data must be structured in some way. If it wasn’t…NO! Don’t even go there. If you are dealing with data, you better be dealing with the right data structures too. What are data structures?  Simply, “a data structure is a format for organizing and storing data” (Rouse) so that the data can be used efficiently.

There are many different types of data structures that you can use depending on the application.  The following are a few of the more popular ones with their advantages and disadvantages.

Array: This data structure is used to collect numerous elements in a specific order. The advantages include fast access if the position of the element is known and quick inserts. The disadvantages include slow searches and deletes.

Linked List: This is one of the most common data structures. Essentially, linked lists are kind of like arrays in the sense that you have an ordered set of data elements. What’s different? Well, each element has link to its successor and sometimes its predecessor. Use this data structure if you want quick inserts and deletes. One negative aspect of using this structure is slow searches.

Hash Table: This is my absolute favorite data structure! The hash table is used to implement an associative array (a structure that maps keys to their values. If you have a large quantity of data, then you can use this to search that data in O(1) time! The drawback is that the insertion and deletion times are somewhat larger than other data structures.


 There are so many more data structures: Stack, Queue, Binary Tree, Red-Black Tree, Heap, Graph and the list goes on. I recommend that you become familiar with all of them since knowing them will give you a good idea of what data structure is best for your application. Data structrue questions also come up A LOT in interview questions. In my opinion, one of the best books to learn and understand data structures is Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein. Another alternative book is Data Structures and Algorithm Analysis in Java by Mark A. Weiss.

In conclusion, I hope your answer to the second question in the tile is a big fat YES!


Other Works Cited
Cormen, Thomas H. Introduction to Algorithms. Cambridge, MA: MIT, 2009. Print.
Quora. "How Do I Strengthen My Knowledge Of Data Structures And Algorithms?" Forbes. Forbes Magazine, 03 July 2013. Web. 02 Nov. 2013. <http://www.forbes.com/sites/quora/2013/07/03/how-do-i-strengthen-my-knowledge-of-data-structures-and-algorithms/>.
Rouse, Margaret. "Data Structure." SearchSQLServer. N.p., Feb. 2006. Web. 02 Nov. 2013. <http://searchsqlserver.techtarget.com/definition/data-structure>.
 

Sunday, October 27, 2013

Hacking: Security Through Insecurity



Growing up, I have always thought that the term “hacker” had a negative connotation and associated the term with a cyber-criminal. Why? Mainly, it’s because of how the media gives most of its attentions to ‘black-hat’ hackers, people who hack with unethical intentions. Just imagine how shocked I was when I found out that hacking can actually be a good thing and that all hackers aren’t some sort of cyber criminals. Once I learned about the existence of ‘white-hat’ hackers, people who hack in order to improve security, I gained a new appreciation for hackers and learned about the importance of hacking.

What exactly is hacking? Hacking “is the practice of modifying the features of a system, in order to accomplish a goal outside of the creator’s original purpose” and although there are many types of hacking (phone hacking, brain hacking, etc), “computer hacking is the most popular form of hacking nowadays, especially in the field of computer security” (http://whatishacking.org/).

White-hat hackers or ethical hackers are invaluable because they are extremely good at spotting bugs and security holes. They can demonstrate the vulnerabilities in the security of large companies so that it can be fixed. With the rise of cyber-crime, ethical hacking is a great way fight against online threats. Cyber-security is a major issue and there is a growing demand for ethical hackers.

Black-hat hackers or crackers are people who hack with malicious intent without authorization. They “typically want to prove his or hacking abilities and will commit a range of cyber-crimes, such as identity theft, credit card fraud and piracy” (Bodhani.). Recently, Adobe was hacked and millions of customers’ data was stolen. Specifically, their IDs, password, and credit card information was obtained. Because of this attack, the company’s brand was tarnished and many of their customers were negatively affected. This just proves the importance of Cyber-security and the need for white-hat hackers to expose these holes in security to the company.

There are many more types of hackers like grey-hat, blue-hat, Elite hacker and etc. If you would like to learn more about the different types, you can read this informative article. If you want to hack, then stay away from the dark side as there are way too many consequences. 

Works Cited
Bodhani, Aasha. "Ethical Hacking: Bad in a Good Way." E & T Magazine. N.p., 17 Dec. 2012. Web. 27 Oct. 2013. <http://eandt.theiet.org/magazine/2012/12/bad-in-a-good-way.cfm>.