Translate

Sunday, December 15, 2013

Scientific Computing: Studying Earthquakes Using Numerical Situations

Scientific computing or computational science is the process of solving scientific problems using computers. There is a little more to the definition such as creating algorithms and graphs that solve different problems in many different ways but for simplicity the definition is solving advanced science problems using computers. One such problem is the better understanding of earthquakes. Currently we have no way of knowing when an earthquake will strike. We know where one might hit and how powerful the quake will be but not when. This means that we can never be fully prepared for an earthquake that could just shake things up or destroy buildings. However using scientific computing we can recreate simulated earthquakes to show how large quakes damage buildings and prepare for future quakes as best as we can.


A research team at Princeton University has developed a virtual simulation that uses real world data of past earthquakes and recreates them for study. The simulator takes in key data of the quake such as location, magnitude, area around the quake, and simulates what happens when the quake begins. Using this data, scientists can better understand the waves of earthquakes, what happens underground during an earthquake and other geological aspects. The simulator can also take in data such as acceleration and velocity to create imaginary earthquakes suited for specific situations that have not happened in the real world yet. 

Computational science helps us visualize the seismic waves from an earthquake.
Photo from http://earthquake.usgs.gov/


As you can see computational science uses computers to study otherwise improbably scientific problems that would not be able to be solved without analytical power of computers. The simulation also takes several hours to complete once it has received data, which is also an important piece of information about computational science, if it does not take several hours or even days of analytical computer processing then it is probably not computational science.

Sunday, December 8, 2013

Computer Graphics: Steganography

In the past people would mostly create art on portraits and paper. As technology increased we developed the ability to draw using computers and tablets. Using technology you can create art with less strain and more freely. Computers depict pictures using image formats such as "jpeg", "png", and "gif" files that are created using data compression algorithms that can be done on mostly every coding language. The important part here is that images are created using algorithms and are essentially hunks of data. This means that an image can be something other than an image.


Steganography is the process of encoding secret messages that are more or less hidden unless you seek the hidden message. Steganography applies to things such as invisible ink or a hidden picture in another picture, but it can also apply to digital images. It is very possible that an image can contain a virus or malware. All a person needs is an image, a virus as an executable file, and merging program that will easily merge the two files together. This is only one way of merging a virus into a file and there are many more. The good thing is that the image cannot spread the malicious executable from just existing. The image must be executed so the virus can also execute, so it is important to always scan everything after downloading which most browsers and anti-viruses do automatically. Just remember that computer images can also be malicious and to have updated anti-viruses.

Tooltip text that is shown when you hover over an image is also considered steganography.
Try hovering over this image to see the hidden text.

Sunday, December 1, 2013

Communications and Security: Two-Way Authentication

Security is one of, if not the most, important thing in the technological world. We live in a technological age where everything has digital security now such as phones, houses, and cars. Digital security for non-software related objects are generally used for convenience such as not having to carry around keys. The problem with digital security is passwords. Studies have shown that people generally use the same password for everything and will tend to not make them complicated for fear of not remembering the password. A saving grace is the technology called “two-way authentication” or two-factor authentication.

To put it simply two-way authentication is a second layer of security that uses a separate device than the device you are trying to access. For example many banks use two-way authentication requiring you to not only log on normally with a password but also a randomized pin key that they send to a phone. This makes it much harder to hack into an account because it requires someone to have a physical registered device as well as the account information.

There are a few ways that two-way authentication works. One of the ways is quite simple yet effective. You use a physical device such as a digital key-chain or a smartphone with a specific application. The physical device or dongle will be set up to your account and you will enter a given id key. Using an algorithm based on the account and id key, the dongle will produce a pin number that you apply to the account whenever you access it. The pin number is also time limited. What this means is that for someone to hack into your two-way authenticated account, they would need your account information and either the dongle or your id key and the secret algorithm that makes this work, which I’m sure is different for every company.

A dongle showing a pin number.



If you want a secure digital life, either come up with a randomized extra secure password for every account you will ever have, or use two-way authentication which is available in the many popular sites such as: Amazon, eBay, Gmail, Yahoo Mail, LinkedIn, most banks, and many more.

Sunday, November 24, 2013

Artificial Intelligence: Doctors of the Future

Consider the game of Chess. A simple game in looks but has depths of complications that separate the masters from the experts. One of the key components of Chess is the ability to think ahead of your opponent. It sounds easy enough to think two or three turns ahead, but how about ten? Twenty? A computer makes a good Chess player because of the ability to hold and remember large amounts of data, enabling a computer to think ahead numerous amounts of steps.

What "Robot" Chess might look like.


That way of thinking has been expanded to artificial intelligence's in the medical field. Indiana University has created a computer doctor that analyses patient and medical data and attempts to diagnose the patient. According to their study, the computer had a 30 – 35% higher success rate than human doctors in finding the correct diagnoses. There is also the benefit of having a 50% reduction in medical costs. A cheaper and more successful diagnosis seems very appealing, but why does it work so well?


The computer can create very educated guesses because of it can retain tons of medical data, much more than a human doctor can ever hope to remember. The computer also has no bias at all. What I mean is a doctor will look for signs that point to their specialty, a robot doctor will have no such bias and therefor look at all kinds of ailments not specific ones. I don’t know about everyone else, but I would like to be diagnosed by a robot in the future.

Sunday, November 17, 2013

History of Computer Science: The First Computer Programmer

Once in a while it is good to learn the roots of our professions, future professions, and hobbies. According to the Computer Sciences Accreditation Board there are four major areas of computer science: computation, algorithms and data structures, programming methodology, and computer architecture. Now each area is important in its own way, but this post is about algorithms. Now an algorithm is defined as “an effective method expressed as a finite list,” in other words an algorithm has to have an end. Mathematical algorithms are used to teach programming, such as the Fibonacci sequence.

In 1842, a mathematician and writer named Ada Lovelace created what is believed to be the first computer program and is well known to be the first computer programmer ever. Lovelace wrote many notes and algorithms to be computed on the “Analytical Machine” created by Charles Babbage. Her algorithms were the first algorithms intended to be used on the "Analytical Machine" and because of that, her notes are considered the first algorithm intended to be used on a computer making her the first computer programmer. Unfortunately the "Analytical Machine" was never fully completed so Lovelace never had her algorithms tested.

Augusta Ada Byron a.k.a. Ada Lovelace



Ada Lovelace’s legacy has been imprinted in modern times. The U.S. Department of Defense created a programming language named after Lovelace and Google Doodle was dedicated in her honor. It is always nice to remember that programming is not as recent as we think it is and it older than one hundred years.

Sunday, November 10, 2013

File Sharing: The Three Hour Torrent Rule

Torrents, a peer-to-peer file sharing system that almost everyone is familiar with and uses. There is no denying that you have not used it yourself. Maybe you shared a legitimate file within a group of people, but chances are you used a torrent to pirate something off the internet. Maybe you pirated an overpriced school textbook or maybe some song. Either way we have all used torrents for whatever reason, I’m not here to judge.

Logo for uTorrent. One of the most popular torrent clients.



In 2012, the University of Birmingham of the United Kingdom studied the monitoring of BitTorrent clients and found out something interesting. Through hours and hours of data gathering and tracking of torrent monitors, the university had found that it took about three hours to capture your I.P. address. The torrent monitors were most likely owned by the U.S. government and were looking to find people illegally downloading files. However, this three hour time only applied to the top one hundred most popular torrents in the present time and could be significantly faster in less populated torrents if such torrents were being monitored. A popular torrent might be something like media files such as TV shows, music albums and such. The reason for the three hours is because each monitor had to either connect to a peer or request to be connected which takes time. A popular torrent could have thousands of peers each disconnecting and reconnecting frequently. Overall what this means is that the popular torrents are monitored and you if you happen to use one, you should probably limit your download to three hours.

Sunday, November 3, 2013

Data Structures: A tip for my fellow SJSU classmates

If there is one aspect that is important to computer science, it is data structures. I am not talking about some concept that dwells inside everyone such as integrity and willpower, but an actual concept that exists within computer science that everyone programmer should know. I have seen presentations by several tech companies, usually presented by former San Jose State University students, and they all say the same thing, the most important class is advanced data structures aka CS146.

The book that contains every useful algorithm and how to execute them on data structures.


The reason why it is so important is because data structures encompass all of computer science. The basics include things like arrays and trees which are used in everyday code. In more advanced code you need to know how to properly optimize your code using sorting algorithms that is taught in CS146. An example of the importance of a finely tuned data structure and sorting algorithm are search engines. Search engines have to sift through so much data that is it hard to conceive just how much there is. Search engines must sort through an ocean of data and send you the results at minimal time. Using something like bubble sort will not only get you crippling speeds but you will also lose customers if that was your search engine.


To put it simply, CS146 is a very difficult class but it is also very important. If you are a SJSU student do remember to take the class seriously and if you are from another school, be sure to do the same for similar classes.