WELCOME EVERYONE

This blog will focus on computer science and statistics.

Sunday, December 15, 2013

Computational science: R


Have you heard R before? I am sure you know it well as a character in English, but for a very important statistical programming language, you may don’t know it very much. R is a free software programming language and software environment for statistical computing and graphics. [1]

Do you still remember my open source blog? If you have read it, you must know R is becoming the most popular R is becoming the most popular worldwide applied statistical language. It is widely used among statisticians and data miners for developing statistical software and data analysis. R could not only help academics to solve  most challenging problems in fields ranging from computational biology to quantitative finance, but also to train their students in these fields. The most amazing part of R is it enable advanced user to manipulate R objects directly with C, C++, or Java code.

We have a word in statistics: R could do almost everything for you. R provides a wide variety of statistical and graphical techniques, including linear and nonlinear modeling, classical statistical tests, time-series analysis, classification, clustering, and others. [2] R has similar syntax as language C, and it is also a functional programming language. It has strong compatibility with APL and Lisp. In particular, it allows computing on the language. This makes it possible to input expression.

Reference:



Computational science: overview


You may first hear about Computational science; it is concerned with constructing mathematical models and quantitative analysis techniques and using computers to analyze and solve scientific problems. [1] This long wired and boring definition maybe confuses you more, but don’t stop reading. Simply, it could be concluded to use computer to solve problems about computation.

In practical field, computational science is more concerned about computer simulation and other forms of computation: numerical analysis, theoretical computer science, and problems in various scientific disciplines.

The main applications of computer science:

1. Numerical simulations: Firstly, researchers could reconstruct and understand known events, such as earthquake, tsunamis and other natural disasters. From the simulation, we could study how the disasters formed and how long they need to active. Secondly, the scientist could predict future or unobserved situations, like weather prediction. I can’t imagine what will happen if no prediction for tornado.

2. Model fitting and data analysis: use data to produce appropriate model to reflect observations, and construct easily understanding graphic connection for data analysis. This applies lots on biological system and website.

3. Computational optimization: it is mainly about mathematical optimization. I will introduce the details in next blog.

Reference:


Computer Graphics: The Amazing Avatar


Do you remember the feelings when you saw “Avatar”? I still remember, I was shocked at the first time. All the amazing sceneries and beautiful characters are created like a real world; when I saw the movie, it is so real that I feel I was in that world. Could you believe that all the incredible movie scenes are produced by computer graphic technique? James Cameron spent 10 years and $ 140 million, and finally success.

Actually, movies and video games are considered the two main fields of new computer graphic technology. Cameron broke the barriers between them; his movie has strong visual impact like other movies, and the super real story sense like the video games. His team had to invent the tools which could help to achieve a transforming vision. The actors wore Facial Capture Head Rig, and the new designed techniques-The Volume could bring the nuances of human performances to the screen, allow the Cameron unprecedented control within the world he envisioned, and integrate 3-D effects naturally. We could say without the development of computer graphic technique, the Avatar couldn’t achieve such a big success.

Reference:


http://www.triangulationblog.com/2013/09/computer-graphics-art.html

Communications and Security: Cryptography


Cryptography is the practice and study of techniques for secure communication in the presence of third parties. We could see a lot of coding and decoding in the movies; people-spies, military leaders, and criminals always use it to send messages. However, in recent decades, the field has expanded and more about techniques for message integrity checking, sender/receiver identity authentications, digital signatures, interactive proofs and secure computation.

The three types of Cryptography Algorithms:

Secret Key Cryptography (SKC): Uses a single key for both encryption and decryption. With SKC, the key must be known by both the sender and the receiver; that, in practical, is the secret. The biggest difficulty with this approach, of course, is the distribution of the key.

Public Key Cryptography (PKC): Uses one key for encryption and another for decryption. PKC depends upon the existence of so-called one-way functions, or mathematical functions that are easy to compute whereas their inverse function is relatively difficult to compute. [1] A simple example: if I tell you four times nine, you will easily get 36; but if I tell you 36, you may think about which two numbers could be for a while.

Hash Functions: it is also called message digests and one-way encryption, in some sense, use no key. Instead, a fixed-length hash value is computed based on the plaintext that makes it impossible for either the contents or length of the plaintext to be recovered. [2]

Reference:





Artificial Intelligence


The google self-driving car could be seen here and there on the road, Siri could help you search everything online and even it can talk with you by several languages, I.B.M. just set the “Jeopardy”-conquering Watson to work on medicine, initially it will help to train medical students, perhaps it also can help to diagnosis in not far future. These “magical” things come true in the past decades and all could be classified to the development of Artificial Intelligence (AI).

You may first hear this word and wonder what AI is? Simply, AI could be defined as machines are endued intelligence. The first step is to produce machines that could communicate with human and work for human; and the second step is to make machines to human level-endure it with motions and productive-that it could produce and program itself; the final step is put “soul” into machine, but that need long road to go.

The benefits of AI are significant: it is not a carbon-based unit, so it will save lots of environmental source, and it could work day and night without any break.  The advanced AI robots could share burden for young generation in aging population society. The tracking machine could take charge of highly dangerous tasks instead of people. The limits of space exploring will be broken by the AI technique. Moreover, maybe one day we could be “immortal” by putting brain in to machine.

Reference:


http://www.wired.com/magazine/2010/12/ff_ai_essay_airevolution/

Sunday, November 17, 2013

History of Computer Science: Programming Language

Almost every day, I can hear one or two of my classmates complain how hard the java is, and admire how amazing it is. I was wondering how many programing languages like java are there in the world, and none could tell a specific number as the answer since every minute there may be a new one will be created. However, we can clearly tell when the languages were built.

The first three still widespread used programming languages-FORTRAN, LISP, and COBOL are designed in the 1950s. Moreover, the two key of language innovations was featured as nested block structure and lexical scoping.
The period from the late 1960s to the late 1970s brought a major flowing of programming languages. [1] C and SQL were developed during this period. However, at that time, designers were keeping trying on establishing fundamental paradigms.

Time went to 1980s, rather than inventing new paradigms, relative consolidation in imperative language took the main stage, and people start to focus on the large scale systems. C++, Common Lisp, and Matlab were developed during this period.
The rapid growth of internet in 1990s provided a huge opportunity for new language to be adopted. Visual Basic, Ruby, Java, JavaScript, and PHP showed their appearance in the world. In particular, the Java rose to popularity. The current trends of programming language are integration with data bases, increased emphasis on mobility, and increasing support for functional programming in mainstream languages used commercially. [2]

 
Reference:  [1] [2] http://en.wikipedia.org/wiki/History_of_programming_languages

History of Computer Science: Overview

How many hours are you work with computer every week? How many hours are you using computer for entertainment every day? In nineteen-century, computer was built for simply mathematical computing. No one at that time could imagine that computer would develop to the greatest manufacture in the science history; and almost every single person will have at least one. It takes almost 40 year from the first programmable computer appeared to the first personal computer started to sell. From then on, computer has been experiencing a burst illuminated explosion development, and occupied people’s life more and more.
 
As the more and more widely applied of computer, computer science gradually separated and became a distinct academic discipline. The first computer science department was founded at the University of Cambridge Computer Laboratory in 1953. Then more and more universities from all over the world started to set computer science department. As a discipline, computer science spans a range of topics from theoretical studies of algorithms and the limits of computation to the practical issues of implementing computing systems in hardware and software. [1] The IEEE Computer Society (IEEE-CS) identifies four areas that it considers crucial to the discipline of computer science: theory of computation, algorithms and data structures, programming methodology and languages, and computer elements and architecture. [2]
Reference:[1] [2]Computer Science, Wikipedia, http://en.wikipedia.org/wiki/Computer_science.
 

Saturday, November 9, 2013

File Sharing: Google Drive and Dropbox

How do you share files with your friends and colleagues? Still burn a disc or copy to a USB drive? You are too much out of date. Send email and upload file as attachment? You are wasting time. Nowadays, there is a bevy of free services that offer tons of storage, and you can easily share files with one click. Moreover, beyond sharing, the server application also offers editing, retrieving, tracing and compliant functions; for example, Documents can directly show files in Google Drive and Dropbox.

Here briefly comparing 2 popular file sharing options:

Google Drive: The free account storage for student is 30GB. You can create folder and place files into. The files are automatically synced to the cloud and to other devices running under the account. Document, spreadsheet, presentation can also be created under Drive folder, not only be uploaded. However, file sharing can only be set up through Drive's Web interface, which means you can do nothing out of line.

Dropbox: It is among the first services to offer seamless upload and storage via its client software. All you need to do to sync files is put them in Dropbox's designated folder on a system with the client app, and the sync happens silently in the background. Sharing links and other admin functions can be done directly from the right-click menu, and you can share files through email or Facebook. However, the free storage is really limited; it is starting at 2GB and up to 16 GB by 500MB per reference.

Reference:
10 file-sharing options: Serdar Yegulalp, "Dropbox, Google Drive and more"

 


 

 

Monday, November 4, 2013

Data Structure

Data structure is a fundamental course for computer science student. It is not only related to hardware, like coding theory, storage and access method, but also highly related to software; operating system has to be considered about the data allocation problem.  So data structure is a core course that centralizes mathematics, computer software and hardware.

                                                                http://ahmadnaser.com/?p=97
A data structure is a particular way of storing and organizing data in a computer so that it can be used efficiently. Data structures are often related to efficient retrieval algorithms and indexing techniques. Usually, well-chosen data structure results in greater operating or storage efficiency. Different task need to find different data structure, and some are only fit to specific structure. For example, B-trees are particularly well-suited for implementation of databases, while compiler implementations usually use hash tables to look up identifiers.

                                                                                            http://www.informatik.uni-trier.de/~naeher/Professur/

There are some common data structures: Array stores elements in a specific order. Record is a value that contains other values. Hash table allows name value pairs freely added or deleted. Tree is generally used for sorting and searching. Graph can be used to represent networks.


The fundamental step to start a program is to find a suitable data structure, so be sure you can both understand and choose the right structure for your program.


http://blog.sina.com.cn/s/blog_4d306b80010008nb.html

 


 

Monday, October 28, 2013

Hacker: Beyond our Imagination.


In the computer security context, a hacker is someone who seeks and exploits weaknesses in a computer system or computer network. (Wikipedia) Most of hackers are experts in network security, so after they find the weakness of the system, no one could predict their next action. The only thing we know is that hacker can do things, negatively or positively to world, beyond our imagination.





The cracker could hack into phone, computer, and even government system. I recently read an interesting article named “10 Horrible Things Hackers Can Do To You”, and I want to share with everyone.

 
The ethical hacker, like “white hat”, have their “spirit”, they are supposed to find the weakness of a system and try to fix it, so to protect the system from the attack of criminals. Their existence promotes the development and progress of network security.

It is hard to say hacker is good or bad. Hacking is like gun: it could be a protection to people or a murder tool to criminal. What I believe is that: as more and more programmers work in the security problems, the white hat team will grow up and they will have the victory in the end.

Sunday, October 13, 2013

Open Source in Statistics: R


Generally, open source refers to a computer program in which the source code is available to the general public for use and/or modification from its original design (Wikipedia). The best property of Open Source is it is free for public and enable consumer to edit or create their own packages, at the same time it will push forward the innovation of origin software. From the financial perspective, Open Source makes the cost of customer fit the marginal cost of producer, which could highly improve the market efficiency.
In statistics field, R plays the role as significant as Java in computer area. R is a software programming language and a software environment for statistical computing and graphics (Wikipedia). With the power of Open Source, R is becoming the most popular worldwide applied statistical language. It is widely used among statisticians and data miners for developing statistical software and data analysis. R could not only help academics to solve  most challenging problems in fields ranging from computational biology to quantitative finance, but also to train their students in these fields. The most amazing part of R is it enable advanced user to manipulate R objects directly with C, C++, or Java code.

Sunday, October 6, 2013

Agile and Scrum: New Way to Develop


Agile development is a human-centered, iterative, incremental development methodology.
In agile development, the project's construction was cut into several subprojects; each subproject results are tested and can be run with integrated features. (From http://wenku.baidu.com/view/a91a548071fe910ef12df870.html)

Agile methods break tasks into small increments with minimal planning and do not directly involve long-term planning. (From http://en.wikipedia.org/wiki/Agile_software_development) It contains several well-known software development methods, such as Extreme Programming (XP), Test-driven development (TDD), and Scrum, which we use for E-zine building.



Scrum is an iterative and incremental agile software development framework for managing software projects and product or application development. (From http://en.wikipedia.org/wiki/Scrum_(development)#Sprint) Scrum is originally from the rugby football game, which means to chase clear highest goal, with a high degree of autonomy. It emphasizes communication and cooperation to solve the challenges of a highly elastic. It separates into different stage, named sprint, and each sprint has a clear advance towards the goal. So SCRUM is ideal for product development projects.

 

The benefits of Scrum are high flexibility and efficiency. However, Scrum has its limitations. Due to the high demand of time coordination, the number of team members must keep small. It may only be applicable to small development team. For example, in the e-zine's development process, the member from different professions and status, it is difficult to form a meeting. So we had to divide members into even smaller groups, even one or two people are in charge of one sub goal.

 

Thursday, September 19, 2013

Time to Extend Your Circle!

What is the most important thing to sell youself and find a job? Not only the knowledge, but also the people you know. Maybe your friend, your professor or someone you talk in a party will have a good impression and offer a good opportunity. So it is time for every student who is seeking a job to extend your circle!


Many members of the professional circles stable relationship usually means human resources. Join in some elite circles sometimes meaning opportunities to succeed.

Therefore, one who wants to expand their circle of radius and exchanges, there can be three ways: First, if you have a good circle platform, you can proactively share with your profession or industry knowledge and unique experience, feather flock together, people in groups, so you can quickly expand your contacts and have the desired radius of the circle.

Second, through a variety of relationships, the initiative to participate in a number of influential organizations and circles, circles actively participate in the activities, serving as the backbone or backbone role.

Third, initiate or organization in the circle of various social activities, and even spend a lot of time and effort, you can make more friends, you can also win everyone's approval.

Any of a circle of existence and development, must be someone dedicate a lot of time and even money. To expand its influence in the circle, the circle must be actively involved in the construction, enthusiastic organize various activities.

The circle will not only offer benefit on job seeking, but also help you success in your life. Don’t wait, start to extend your circle now.

Friday, September 13, 2013

QR Code: Why and How?


When you try to fill some forms online, are you tired of remembering the long URL address? When you walk around on campus and suddenly see a post, do you want to see the promotions in details as soon as possible? QR code is the fastest and coolest way to save your time and ignore the annoying typing problems.

Here is a very simple and nice picture to show how QR code works.



How to quick build a QR code? It is really easy. A lot of free Apps are provided online. The easiest way is downloading one and them and input the address that you want to show. Here I will give some recommendations by my own experience.

After building a QR code, how to make it unique become the next question. nEO iMAGING is a nice software to insert a beautiful picture to the center of your QR code and make it unique. Unlike the Photoshop, this is much smaller and totally free. You can find most of general functions and it is easier to use. It may not offer you advanced function like multiple effects, but it is enough to deal with normal photos.

If you want to make it show at the right top so that everyone can use their smartphone to catch your blog. You can add garget to your blog, just under the layout options.

 

Friday, September 6, 2013

What is the potetial effect if lack of social network security when promoting your brand?


Social networking is been used by people from the entire world these days – Facebook, MySpace, LinkedIn, Twitter, and even sites we may not familiar. These social networks are so popular that people spend countless hours on them.

Social network offer efficient and powerful ways for people to communicate, at the same time, it also increases the risk of personal information security. We can take the most popular one – Facebook as our example. People can easily update their photos and position with only one click. The mutual friend function will help to expose all these things to a complete stranger. If combine all the information on timeline, it is easily for criminal to kidnap or blackmail.

from
The lack of social network security could be even worse when people try to promote their brand, because the promotion means more communication and more exposure. One weak point would cause unimaginable effect, like the butterfly effect. If your click on untrusted links or use easily-guessable passwords to protect your personal data, hackers could use your weakness and easily get access to your account, impersonate you and send your clients messages that appear to originate from you. And all the bad influence will count to you, because your client don’t know there is a hacker behind your account.

Friday, August 30, 2013

WELCOME


Hello Everyone!
Welcome to WenjingTangCS200W.

This blog will focus on computer science and statistics, which are the two most interesting study areas to me.

My major is statistics, it is highly relative with math, which is obviously theoretical to most people. And computer or software makes it practical. This is the reason that all the statistics need to learn coding. The popular statistics software, include SAS (Statistical Analysis System), SPSS (Statistical Package for the Social Science), S-PLUS, EVIEWS, shows their powers on economics, bio-pharmaceutical and other fields. These cannot be achieved without the combination of computer science and statistics.

The more charming parts of computer science is that it could not only virtualize things but also materialize the incredible design. The 3D modeling and printing open a new door for all designers. Today, 3D models are used in a wide variety of fields. The medical industry uses detailed models of organs. The movie industry uses them as characters and objects for animated and real-life motion pictures. The video game industry uses them as assets for computer and video games. The science sector uses them as highly detailed models of chemical compounds. The architecture industry uses them to demonstrate proposed buildings and landscapes through Software Architectural Models. The engineering community uses them as designs of new devices, vehicles and structures as well as a host of other uses. In recent decades the earth science community has started to construct 3D geological models as a standard practice. (from http://en.wikipedia.org/wiki/3D_modeling#3D_printing)

In the future, I will find magical examples and share with everyone. Hope you would like my blog!