Sunday, November 24, 2013

How Artificial Intelligence Benefits Our Lives

Artificial Intelligence (AI) is one of the most interesting fields of computer science. For example, human can use AI to make machines such as robots and security systems to perform human jobs. These machines even have feelings, thoughts, and can be able to understand the human command.

Asimo by Honda
Currently, people can make robots, which are able to replicate the actions of humans. Therefore, it will not take too long to develop the techniques on teaching robots to self-thinking and react to the changing of environments. For example, Asimo robot by Honda is such an incredible AI robot recently with flexible movements, and reactions against environment conditions. By applying the revolution of artificial intelligence field, scientists now can promise to make machines the ability to think and react like human.



This is a full potential of artificial intelligence to have the effects on human life, at least, in the years to come. In some surprising ways in which AI impacts our life today and changes the future. I will discuss more the benefits that Artificial Intelligence can bring to our lives.

How an AI helps solving a problem in real lfe.
  • Solution Provider – this is the most important benefit from AI as all problems can be easily solved without spending much time.
  • Efficiency and Productivity – increasing efficiency and productivity is what artificial intelligence can make a huge difference in manufacturing because it reduces manual tasks without hitches in the process line.
  • Time Saving – when applying AI to solve a problem, people can reduce the time consumption to do the task.
  • Errors Minimizing – The more AI uses in manufacturing, the less defects and errors occur.

References:
1. ASIMO by Honda
http://asimo.honda.com/‎

2. Artificial Intelligence: A Modern Approach
http://aima.cs.berkeley.edu/

Sunday, November 17, 2013

History of Computer Science and Enabling Technologies

Computer science is one of the most important fields that applies to the success of modern technology nowadays. It is a base for the integration of enabling technology. Computer scientist and interface designer had been concealed numerous issues between human and computer. As a result, people are able to make better products that use in more aspects of our lives.

For example, by applying the algorithms and fundamentals of hardware, the evolution of data storage was a dramatic development from the punch card in 1930s to magnetic tape, hard drive, CD, flash memory, and cloud service recently.

Punch card is one of the first data storage in computer history


This is how human and computer interact nowadays


Another example, at the beginning time of computer science, the interaction between human and a computer machine was via punch cards. Through time, people found more ways that make easier on working with computer, such as typewriter-style terminal, command line (DOS), graphic user interface (GUI), and multi-touch screen.












In many ways, computer scientists also focus on making and developing free software and hardware that apply for people with special needs. For instance, people use computers to make tools and devices that are accessible to as many people as possible like radio, smart TV, musical devices, smart phones, etc.

The most significant role of computer science is to increase the usability and easiness of computers for people in daily activities. With an extreme effort, computer scientist makes more steps closer to the goals of changing people lives and working styles, such as distance working and learning, data input via voice and gesture, paperless schooling, and control the living environment.


References:
1. Enabling Technology for Users with Special Needs
http://www.sigchi.org/chi95/proceedings/tutors/edm1bdy.htm

2. The Evolution of Computer Science and Enabling Technologies
http://blog.inovasolutions.com/2010/the-evolution-of-computer-science-and-enabling-technologies

Sunday, November 10, 2013

File sharing and Security

Sharing file nowadays is very easy and popular. It doesn’t require people to have the knowledge of computer to do sharing tasks. Currently, iCloud, Google Drive and Dropbox can provide a very simple way to make sharing simply just “click-n-drag” into a shared folder. Your files will be synced onto the cloud right away. However, one of the most issues from sharing files is security. If you are trying to share a confidential document by sending emails in a closed group, you will not want them floating on the Internet back and forth without any kind of protection.

In this post, I will discuss 3 solutions for sharing files securely.

1. Email encryption on both ends is important.

This is not a new technology. However, it is not being used in free email services because the email provider wants to charge money for extra security. As a result, hacker is able to catch your emails and read them easily. With encrypted email, it becomes a very difficult task for hacking an email without the encryption key. With the email encryption on both ends, your files will be on a maximum protection because only the other end can be able to read the files.

Hushmail.com is a popular email provider with encrypted email service. It is very easy to use without installing an email client. Users can either use the hushmail’s web client or download an outlook plug-in.





2. Using a paid email service for better protection.

For business, people likely never believe that any free services are able to protect them. Email appliances like Sophos Email Appliance, Mimecast, Cisoc’s Ironport, PGP might be one of the best choices. They are usually more expensive; however, they are rich features with focusing on data loss prevention.

For example, PGP is widely used in most top corporations. It offers a lot of different tools to protect your data in all operation systems like Windows, Mac, Linux.

3. Sharing file by expert client products is recommended.


As mentioned at the beginning of this post, Dropbox and Google Drive are popular in this area. Instead of using email to share your files, they provide an easy way of accessing your shared folder right on your computer. The data in the shared folder will be put on the cloud, from here only a list of authorized people can access the files anywhere and anytime. At entry level, they are free for everyone with limited storage. However, if you want to share a large amount of data and big files, you will have to pay for those extra features.









Reference:
http://readwrite.com/2011/05/23/how-to-share-files-securely#awesm=~onuAgBOZgMx8QM

Sunday, November 3, 2013

Count-Min Sketch Data Structure

Data structure is the core of any software program. Without an appropriate data structure, any algorithm might suffer in accessing stored data and optimizing the running time. For example, the following tasks that need to build for a best timing in a data set:
  • To estimates frequencies of particular elements
  • To finds top-K most frequent elements
  • To performs a range of queries
  • To make a percentiles estimation. 
As we can see, they are all related to a frequency or a range of queries in a data set. So, one of the structures sets up to get the best optimization for the tasks above is Count-Min Sketch, a method estimates frequency-related properties of a data set.

What is Count-Min Sketch Data Structure?
Count-Min Sketch is one of members in the family of memory efficient data structures to optimize the counting of the rate of an element in its lifetime.

Problem statement:
We have a set of duplicated values, and the issues is to estimate the frequency for each value. The estimation for relatively rare values can be imprecise, however, frequent values and their absolute frequencies should be determined accurately.

The basic idea of Count-Min Sketch:
As similar to Linear Counting, Count-Min sketch is designed as:
  • A 2-D array (d x w) of integer counters.
  • When a value is set, it is mapped to one position at each of d rows using d difference and an independent hash code.
  • Counters on each position will increase for the next arriving values.
  • Algorithm estimates the frequency of given value as a minimum of the corresponding counters in each row.



Below is an animation for Count-Min sketch data structure:


Below is a practical implementation of Count-Min sketch:
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class CountMinSketch {
    long estimators[][] = new long[d][w]   // d and w are design parameters
    long a[] = new long[d]
    long b[] = new long[d]
    long p      // hashing parameter, a prime number. For example 2^31-1

    void initialize() {
        for(i = 0; i < d; i++) {
            a[i] = random(p)    // random in range 1..p
            b[i] = random(p)
        }
    }

    void add(value) {
        for(i = 0; i < d; i++)
            estimators[i][ hash(value, i) ]++
    }

    long estimate(value) {
        long minimum = MAX_VALUE
        for(i = 0; i < d; i++)
            minimum = min(
                minimum,
                estimators[i][ hash(value, i) ]
            )
        return minimum
    }

    hash(value, i) {
        return ((a[i] * value + b[i]) mod p) mod w
    }
}

Accuracy

Accuracy of the Count-Min sketch depends on the ratio between the sketch size and the total number inserting values (not duplicated values). This means that Count-Min technique provides significant memory gains only for skew values, for example, the values have very different probabilities.


It is clear that Count-Min sketch can't track frequencies of 5900 elements using only 152 counters, in the case of low skewed values with high frequencies, so the histogram will be very inaccurate.

In general, the applicability of Count-Min sketches is not a straightforward question that can be recommended in the real life of experimental evaluation, but it can be use for some particular cases. However, the theory of Count-Min sketch is a base for accuracy on skewed data and measurements on a real data set.


References:
1. Count-Min Sketch
http://en.wikipedia.org/wiki/Count–min_sketch

2. Streaming Algorithms and Sketches
http://blog.aggregateknowledge.com/tag/count-min-sketch/

3. Count-min sketch & its applications
https://sites.google.com/site/countminsketch/