Friday, September 30, 2016

Machine Learning and Artificial Intelligence


From movies like  I, Robot and the Transformers series to having Siri on our iPhones, we are constantly exposed to the idea and presence of artificial intelligence. Our world is quickly moving towards having more and more technology that can interact with humans on an almost human level. Machine Learning is a subfield of computer science that is derived from pattern recognition and computational learning theory.  Machine learning explores the making of algorithms that can learn and make predictions from data in the same way humans do when we think. 

Artificial intelligence is a version of Machine learning and is defined as being, “the theory and development of computer systems able to perform tasks that normally require human intelligence”. Algorithms like this usually build a model from example inputs from the user to use to make predictions and decisions. Machine learning is often used to predict in commercial use in another subfield known as predictive analytics. This allows engineers and financial analysts to uncover hidden insights through understanding the trends in the data for use in many financial situations.

Machine learning is categorized into three different subsets: Supervised learning, Unsupervised learning, and Reinforcement learning. Supervised learning is when the user inputs both example inputs into the computer and the desired outputs and the computer is tasked with learning a general rule that maps the inputs and outputs. On the other hand, Unsupervised learning is when no label is given to the program and the algorithm has to find structure in its input. Finally, Reinforcement learning is when the program interacts with the environment to reach a certain goal without the guidance of the user. All three types of Machine learning are very common and are used on many of our computational devices. If you would like to learn more about artificial intelligence please feel free to check my references below as they are very helpful with explaining the different concepts and even the history behind artificial intelligence. 

References:

http://softwarefocus.net/technology/ten-misconceptions-about-artificial-intelligence.html


Friday, September 23, 2016

What is Data Compression?


Imagine you have a handful of soaking wet paper towels. You squeeze the handful with considerable force into a small ball of paper towel, with water leaving the towel as you did this. This is an odd, yet good example I believe, that explains compression. As students of computer science and having turned in four programming assignments that include multiple .java files, we are very familiar with .zip files. If you are unaware of what a .zip file is, it is simply a file that compresses other files into one compact file. Data compression works by reducing the amount of data needed for the storage or transmission of a given piece of information. It is is a critical aspect of our computing devices as it allows us to transmit large quantities of data over communication networks. This technique to compact data is very similar to Morse code which assigned the shortest codes to the most common characters.

Data compression is usually categorized into two subsets: lossless and lossy. Lossless data is exact and can be reversed to yield the original data. Lossy, on the other hand, is inexact and can lose detail or yield errors when data is reversed back from compression.The wet paper towel example would be considered lossy since you squeezed water from the towels as you compressed them and if you were to detangle the paper towel ball you would have much less water in it, which is like losing data. The .zip files we use for our assignments are lossless which is great because it means that our assignments will never have any problems when they are turned in! In addition, a great thing about data compression is that it can usually compress images by factors of 10 to 20+. This means that we get to store more pictures of our cats and dogs and family members on our computer to post on Facebook!

Data compression is a very important part of our computing systems and, although it is not as simple as squeezing wet paper towels, it is still a good thing to  know about especially as computer science students.


References:

https://www.britannica.com/technology/data-compression#ref886796

https://medium.com/@_marcos_otero/the-real-10-algorithms-that-dominate-our-world-e95fa9f16c04#.azqyazfwh

Photo Reference:

http://www.gitta.info/DataCompress/en/html/CompIntro_learningObject2.html




Friday, September 16, 2016

The Secure Hash Algorithm



Have you ever entered your bank card number or social security information into a website to buy something online or to register to vote? Have you ever inputed your phone number or email address into an app when creating a profile? Websites, apps, and many other mediums that use the internet tend to be a hub for hackers to infiltrate and acquire personal information about people. Today, more than ever, our computing devices need to be kept secure. Hackers and viruses are on the rise and it is important to protect ourselves and the information we store on said devices. 

The Secure Hash Algorithm is a group of cryptographic algorithms created by the National Institute of Standards and Technology (NIST) that help to determine that you download what you want and not a virus or a portal for a hacker to enter your computing devices. It also makes sure that the information that you enter into mediums that use the internet is secure. Many apps and websites use this algorithm to protect our information whether it be for our personal information security or as legal protection for themselves so that they are not liable for any of our inputed information being hacked if happened to be.

The millennial generation is known for their tendencies to press "accept" when asked to agree to terms and conditions, or anything of that nature, without reading them. We don't know for a fact if the app or website we are using is secure enough for us to put our information in or if the medium even guarantees safety of your information. Thanks to The Secure Hash Algorithm we mostly don't have worry about the information we enter into mediums that use the internet that are widely known or are the websites of large corporations as most are usually secured by this algorithm or a similar group of algorithms.

References:

https://www.hackingtrainer.com

https://medium.com/@_marcos_otero/the-real-10-algorithms-that-dominate-our-world-e95fa9f16c04#.azqyazfwh

Friday, September 9, 2016

Link Analysis and Page Rank in Social Media and Search Engines

Have you ever wondered how Google knows which search results to show you when you research something? Have you wondered how Facebook suggests people you may know and may want to send a friend request to? Google, Facebook and many other websites use link analysis and page rank to do this. Link analysis is a computational concept widely used by search engines and social media as a means to form connections and link what we do on the internet to other things we may do on our computational devices. Link analysis is very prevalent in such things as internet cookies in which ads from websites that you may have visited often show up on the side bars of your computer because it remembers that you visited that website and links your computer to the website. It is also prevalent, for example, on Facebook when you see mutual friends as possible people to add. Link analysis looks at your current friends and your personal settings (such as which university you went to or the area you live in) and finds a link between you and other people that have that friend or other aspects in your profile in common. 


Link analysis can be described as being a graph in a matrix. The structure of the graph in the matrix can help the computer assess the importance of each node and essentially whether or not it would be relevant if it were presented to the user. The mathematics behind link analysis can be very extensive and confusing therefore the picture below shows the concept of link analysis in a non computational way to help visualize what it actually is in simpler terms.

Link analysis is also related to page rank in search engines. Link analysis allows the search engine to remember what you and other people have searched regarding a certain topic and rank it in a way that makes the most related, and also most visited, page of the topic show up at the top of your search. Google and most search engines use the concept portrayed in the diagram below in their page ranks. Page ranks are easiest to explain using examples therefore page C and page E will be used as examples. Page C has less links to it than page E yet page C has a higher percentage chance of being visited because the few links to page C are deemed more important than the many links to page E. This may be because page C was determined to be more related to the topic searched even though there are less links to it. Therefore the number of links to a page does not automatically mean that it is going to be ranked the highest as content quality also matters.

Link analysis and Page Rank are very helpful sources that we use in our day-to-day lives that make researching and finding new friends to add much easier. If you would like even more clarification or elaboration on these topics please look at my references they are very helpful!

References:


https://en.wikipedia.org/wiki/PageRank#History

http://pr.efactory.de/e-pagerank-algorithm.shtml

Thursday, September 1, 2016

Computer Science in MRI Scans

MRI (Magnetic Resonance Imaging) scanners are some of the most groundbreaking technologies used in modern day medicine. If you have ever had an MRI scan then you would remember the large tube-like machine that you were slowly slid into and told to lay completely still in for likely a very long time. 
MRI’s use magnetic fields to produce detailed images of our tissues and organs. They are helpful as they can help detect abnormalities in our tissues and organs and can be used as a preventative measure for many diseases and conditions. Computers are used as a way to control the magnetic field in MRI's and retrieve the information of the body scan to transform it into a relevant image. A major issue that was present with MRI’s was how long a patient would have to lay still in the scanner which was up to about 45 minutes. MIT actually came up with an algorithm to reduce that time to about 15 minutes which has greatly benefited both patients and doctors in terms of saving valuable time. MRI’s produce many scans during their process and were programed to start from the beginning when they started a new scan in the body, which caused the machine to take a long time. 
MIT created an algorithm that would use the information from the first scan that the MRI acquires and use it as a basis for the rest so that it would take less time. In scans successive to the first scan, the algorithm tries to predict the formation of a tissue but does not assume it as  that would risk losing important details that show up in later contrast images. Although the image quality is slightly less than if the MRI were to take the full 45 minutes, it is still a valid way of scanning a patient and is helpful in saving both doctor and patient some time.

Writing References:
http://news.mit.edu/2011/better-mri-algorithm-1101

https://prezi.com/gx2sq08ffvzb/computer-science-and-health-computer-science-in-mri-technology/

Image References:
http://www.radiologyinfo.org/en/info.cfm?pg=bodymr

http://news.mit.edu/2011/better-mri-algorithm-1101

Algorithms That Have Made Digital Maps Possible

As a society we are accustomed to the fact that we have a map of the world on our electronic devices and can find the fastest distance to any known place on Earth. We often take this for granted and don't think about the extensive amount of time spent forming the algorithms that make the resource work the way it does. Edsger W. Dijkstra, the man who essentially developed the ‘skeleton’ code for the program, used a ‘shortest path’ problem which, as you can likely tell from its name, finds the shortest path between two points on a graph. This is helpful as we usually to try to find the shortest route between two places, with the graph being the grid like system most streets are allocated into. ‘Shortest path’ problems tend to get very complicated very quickly as there are many different combinations that can grow exponentially. Dijkstra came up with a simplified version that is explained in the gif below. 


The gif shows that a computing device first looks at all optional routes from the starting point “1” and takes the shortest route from there. It continues to reassess the shortest distance from the next point as it progresses. Although Dijkstra’s algorithm isn't the only one used in modern maps, it was certainly a great starting point and an amazing way of helping evolve maps into the kind we use today. 

Another method used to find the shortest distance that combines Dijkstra’s algorithm is ‘A*’. ‘A*’ uses the idea of recording areas that are already evaluated, which are areas that have already been explored by the algorithm, and recording areas immediately adjacent to those evaluated. It then calculates the distance from the starting point and an estimated distance to the goal point. 

The 'A*' algorithm in conjunction with Dijkstra’s algorithm are two of the most popular algorithms used by modern digital maps and are undeniably two of some of the most useful algorithms to have been created.

References: