Translate

Saturday, December 14, 2013

Computer graphics: Image processing

One image is worth more than ten thousands words.

Image processing mainly focus on digital image processing.

With the improvement of people's life, digital image processing is walking into common people's world. Photoshop is a famous tool to process pictures. In this article, I will talk about what digital image processing is, history of digital image processing, and key stages in digital image processing.

1. What is image processing? Image processing technology mainly includes image digitization, image encoding, image enhancement, image restoration, image segmentation, and image analysis. It focus on two tasks: (1)improvement of pictorial information for human interpretation. (2) processing of image data for storage, transmission and representation for autonomous machine perception.



2.  History of digital image processing. One of the first application of digital imaging was in the news paper industry at early 1920s. Many of the techniques of digital image processing as it often was called, were developed in the 1960s. The cost of processing at that time was fairly high. With the development of computing equipment, that situation was changed in the 1970s.  Digital image processing has become the most common form of image processing in the 2000s.

3. The process of digital image processing includes image acquisition, image enhancement, image restoration, morphological processing, segmentation, object recognition, representation and description.

In the three paragraphs above,  I simply show you  definition, history, and key stages of digital imaging. If you want to know more about it, you can search: image processing by Google. You will find tons of materials. Today, imaging processing is a really hot topic.

reference:wiki




Scientific Computing: Numerical analysis


Pythagoras was a great Greek philosopher.  His motto was “All is number,” which means that all things in the universe obey the rules of numbers. This shows how important numbers are in our life.
So analyzing the numbers are becoming necessary. Numerical analysis mainly focus on this.

Numerical analysis is the subject which uses computers to solve mathematical problems. It is one branch of Mathematics.

In fact, Numerical Analysis is a required course in some departments like Mathematics, Physics, and Chemistry.  By smart Google, you can get tons of materials about Numerical analysis. In this post, I will mainly show you what I learned about it in university.

Firstly,   the mainly research contents of Numerical analysis are Curvefitting, Interpolation, Approximation of Function,  Solving equations and systems of equations, Solving Differential equations,  and Solving singular value problems. I still remember my first class. When the instructor showed us its' strong ability by PPT(PowerPoint), I was shocked. I thought I finally got the magic wand to solve annoying differential equations.



Second, from the paragraph above, we can find Numerical analysis is like a generalist who can solve many complicated problems. However, maybe you will be disappointed when you know that it only gives people the approximate solution. In fact, I had the same feeling like you when I got it from my instructor. But with more and more knowledge, I find approximation is reality and exactness is dream in actual application. Approximated solution is enough for our actual problems.



Finally,  in general, computers solve actual problems by 5 steps: presenting actual problems, creating mathematical model, numerical analysis, designing program, and implementing program. Every step is not easy. Especially, the step of analyzing the numerical is harder. Scientists need try their best to use all kinds of tools to give better approach of the "exact" solution.

reference:wiki






Scientific Computing: Computational science

Are you familiar with Computational science? I didn't really know about it one week ago. So far, I have to admit that I am still a layman. In this post, I will show you what I learned about it recently from definition, application, and process.

Firstly, what is Computational science? Computational science(also scientific computing, scientific computation) is a rapidly growing multi- and interdisciplinary field that uses advanced computing and data analysis to understand and solve complex problems. It uses mathematics and computers to explore "real world" problems in science.




Second, where do we apply Computational science? Problem domains for computational science/scientific computing include: Numerical simulations, Model fitting and data analysis, and Computational  optimization. 
Computational Science complements, but does not completely replace, field experimentation in scientific  research.
It is ideally suited to exploration of problems which are too expensive, too dangerous, too difficult to control...for experimentation in the field. For example, we can use it to reconstruct  and understand known events such as earthquake, tsunamis, and other natural disasters.

Finally, Computational Science Process.  When we use Computational science to solve problems, we firstly construct working model. And then we need to build mathematical behavioral model with the help of working model. The next step is to create computational model. Finally, we can get results/conclusion according to the analysis from computational model. The image below shows the whole process.



In sum, Computational science is an important tool in modern scientific research. Especially, we can use it to imitate special scenarios like earthquake and sub-atomic particle behavior. The cost will be huge to reconstruct these scenes without it.

Computational science is an useful and interesting field. Let's learn and discuss it together.

reference: Journal of Computational Science, Wiki

Sunday, December 1, 2013

Communication and Security: Hardware Security

When we talk about communication, the security has been a topic for a long while and it will keep being a top for ever.  The security issue can be classified to software security and hardware security. For example, the computer virus is normally a bad software which can harm the computer and the communication. Here let's talk about the hardware issue.


Computer hardware include CPU (central processing unit), main memory chip, main board, hard drive disk (HDD), monitor, keyboard and others. CPU is one of the most active components which conducts many kinds of operations, and it itself may pose many threats on security. Since CPU is usually manufactured by a few companies, and operates their only instruction set in a way that is not so public. They have enough reasons to keep it operating in this kind of secret way, for example, that is simply the business secrete.

  However, from another viewpoint, since it's operating secretly, there are few people that really know how it operates, and maybe even fewer people know what its normal working status is, and whether it's operating in a normal way or operating in a harmful way. Maybe the CPU is almost always, say, 99% of time, normally, but its operating in another 1% of time may do any kind of harm, including releasing sensitive information that is usually not permitted, implanting virus codes / instructions, cleaning important data, and so on so forth.

Theoretically until we know all the secrete behind the CPU, we can imagine that whatever kinds of security threats can be introduced by the CPU itself, not to mention that there are so many other chip sets inside our computers.

Sunday, November 24, 2013

Artificial Intelligence: Natural Language Processing(NLP)

Artificial Intelligence: Natural Language Processing(NLP)

Do you know NLP(Natural Language Processing)? Do you hear AI(Artificial Intelligence)? Today, AI is a really hot topic on scientific and technical stage. NLP is one of the classical AI problems.

Let us look at the picture below: the toaster is telling Srini that Srini's toasts are ready. One people is asking his computer to send new year postcards to all his friends in the address and translate to German for his German friends. Yes, human is communicating with machine and the machine can understand human's language. The contents of the picture is the result of NLP(Natural Language Processing).

      Don't you mind I tell you some of my dreams? They are following:
·       I dream I can talk to my TV set: show me The Lion King?
·       I dream I can communicate with my Ipad.  When I tell it that I am sad, it can analyze the questions and enlighten me like my soul friends.  When I am happy, it can enjoy the feeling with me.
·       I dream my computer can read the newspaper and tell me the important news only.
·       Ahhh, I hope my PC can do English homework for me, isn't it your dream?
......
Don't you have the same dreams as me? These dreams are so amazing. These smart computers can change people's life. They can lead human to a new technical world.
All them need NLP.

What is NLP?  we firstly need  to know what Natural Language is. Natural Language refers to the language spoken by people such as English, Chinese, Japanese, as opposed to artificial languages, like C++, Java, etc. NLP(Natural Language Processing) is the subject that processes information contained in natural text. It is also known as Computational Linguistics(CL), Human Language Technology(HLT),  or Natural Language Engineering(NLE).

How do we measure intelligence of a machine? The most famous way is Turing test-Alan Turling(1950) which says that a machine can be accepted to be intelligent if it can fool a  judge that its human over a tele-typing exercise.

Two well-known intelligent systems are ELIZA and SHRDLU.   ELIZA (1966 by Weizenbaum)  pretends to be a psychiatrist and converses with a patient on his problem. It uses keyword pattern matching technology to "understand" and "solve" the patient's problem. Many patients though the system really understood their problems. The image below is showing the chatting process。


SHRDLU(1968-70 by Terry Winograd MIT AI Lab) works on a "Blocks World" as a simulated environment in which blocks like colored cubes, cylinders, pyramids can be moved around, placed over each other. It can understand a bit of  anaphora.  These intelligent system like ELIZA and SHRDLU need strong and excellent databases.

NLP is a popular technology. More and more universities are working on it. But,  it is still like a baby who just begins his life.  With the development of kinds of technology, I believe NLP will grow up quickly.

In sum, NLP is one technology which makes machine understand people's language and communicate with people like a human. In other words, NLP will help a machine be a "human". 

The road is far. The hope is there. Let us work hard!


Reference: Wiki

Saturday, November 16, 2013

History of Computer Science: the history of programming language


Programming languages are part of the fundamental body of Computer Science.  Programming Paradigm is one of the my favorite courses. In this post, I use my language to show you the history of programming languages which I learned in this course.

 
The right picture comes from my teacher's class. From the picture, we can easily figure out the time when one language appeared. And, the picture also tells us the relationship among the languages. For example, Java was invented around 1995. It has two ancients: one is Simula, and the other one is C.
Programming languages have different culture. The most common three are OOP(Objected-Oriented programming), Functional programming and Logical programming. For instance, Java is OOP, Scheme is Functional Programming language, and Prolog belongs to Logical Programming. Each language is based on a model of computation. Functional programming is suitable mathematical proof systems. Prolog programming is good at solving problems that involve objects and the relationships between objects. Yet OOP can substitute the two languages above.  Because OOP is just like objects in real world, it is the most popular language.

With the development of multi-core computers, the existing programming languages are facing new challenges. More and more researchers and scientists are working on inventing new languages which can work better on multi-core computers.

 In a word, the history of programming languages is not long. Various language cultures come from different problem models. The new development of new technology usually foretell the appearance of new language.

By the way, do you know who invented the first programming language? It is Ada Lovelace(woman)!

Reference: CS152 SJSU.







History of Computer Science: history of computing hardware


In the beginning, computing hardware was only machines that need people manually perform the arithmetic operations.  The history of human computing can be traced back to thousands of years old. Our ancients used fingers to begin their calculations. The counting device changed many appearances from tally sticks, Fertile Cresent,  livestock or grains,  abacus, to analog computers like famous Thomas Arithmometer. It spent thousands years from the fingers to punched card machines. 

Computer Science, the special and popular discipline, emerged in 20th century. As one of its' most important object of study, computing hardware has already undergone great changes. In this post, I will simply show you how it changed.


Punched card machines stepped on the calculating stage in 1801. At this year, a loom that Joseph-Marie Jacquard invented used punched cards to control the pattern being woven. From Charles Babbage's Analytical Engine to  Percy Ludgate's programmable mechanical computer, every new change means great development in calculating history.  In 1901, Percy Ludgate's invention ended the history of punched card machines. 
Today, stored-programming computers are known by almost every modern people in the world. A stored-programming computer is one which stores program instructions in electronic memory.(wiki). Simply, all the computers that you see are stored-programming computers. This kind of machines have extremely good features compared with punched card machines. For example, every instructions are stored in machine. People don't need tons of cards to control  operations. 

In sum, the history of computer hardware is long. However, with the development of modern technology, the speed of hardware's update is becoming faster and faster. The content of Computer Science is also richer and richer.

Reference: http://en.wikipedia.org/wiki/History_of_computing_hardware

Friday, November 8, 2013

File Sharing:Streamfile



If you are an internet fan, it is very possible that you know about online file sharing service.  

Processing large original files like .PSD (Photoshop) and .AI (Illustrator) is becoming a very simple task for today's technology and machines(whether it is PC or Mac). But sharing part aren't. We generally use two ways to share the files with peers or clients: e-mailing and hosting-account. But e-mailing cannot upload anything more than 100Mb, and hosting-account can be easily exposed.  Today's online file sharing services solved the above two shortcomings. With the development of modern information society, more and more online file sharing alternatives appear. In this post, I will introduce you one of them: Streamfile.

Based in Stockholm, the features of Streamfile are better looking, easier to use and the fastest way to deliver data wherever you are in the world.

From their website, we can get the following data:
Max filesize: 300Mb   Registration: No Premium account: Yes   Password Protection: No

streamfile


Secure Socket Layer (SSL) is used by Streamfile which means you don't have to worry about the security of sharing file. In fact, online banks are using SSL as transmitting credit card details. Streamfile also offers the ability to store your files encrypted before they are uploaded, adding an additional layer of security. Streamfile provides you with an extensive audit trail. With their File Center you can check who has downloaded your files and when. You can also set a file expiration date or archive any files to never expire with AWS Glacier.

Streamfile provides three plans: Basic, Pro and Business. The last two are not free. But if you are not satisfied with your purchase, they can give you 100% refund within 30 days payment. Don't you think that it is an amazing policy?

For students, I think the basic plan is enough. It is free an has the below features:
  • 300Mb file-size limit
  • 1 day expiry on all uploads
  • Basic file tracking
  • 128 bit File encryption
  • 1GB Monthly Bandwidth
I am using it to share photos with my friends and family. It is a good tool to finish the task. If you have files to share with other people, it deserves a try.

References:
https://www.streamfile.com/
http://www.hongkiat.com/blog/15-great-free-online-file-sharing-alternatives/

Friday, November 1, 2013

Data Structure: Trees


Tree1

 As a student in computer science, I am using BT(Binary Tree) to work on our project which requires us to create a parser for Scheme. To do it, I looked up many materials about Tree. In this post, I simply show you some what I got recently.

The tree is one of the most powerful of the advanced data structures and it often pops up in even more advanced subjects such as AI and compiler design.

In computer science, a tree is a widely-used data structure that emulates a hierarchical tree structure with a set of linked nodes.

Mathematically, it is a tree, more specifically an arborescence: an acyclic connected graph where each node has zero or more children nodes and at most one parent node. Furthermore, the children of each node have a specific order.


 In the big family, there are two important members: BT(Binary Tree) and BST(Binary Search Tree) 

A binary tree is a tree-like structure that is rooted and in which each vertex has at most two children and each child of a vertex is designated as its left or right child (West 2000, p. 101). In other words, unlike a proper tree, the relative positions of the children is significant. 

In computer science, a binary search tree (BST), sometimes also called an ordered or sorted binary tree, is a node-based binary tree data structure which has the following properties:[1]
  • The left subtree of a node contains only nodes with keys less than the node's key.
  • The right subtree of a node contains only nodes with keys greater than the node's key.
  • The left and right subtree each must also be a binary search tree.
  • There must be no duplicate nodes.
All Trees have the following common operations: Searching, Insertion, Deletion, Traversal and Sort.

It is very common to use Tree data structure in computer science. Why Tree?  Unlike Array and Linked List, which are linear data structures, tree is hierarchical (or non-linear) data structure.
As per Wikipedia, following are the common uses of tree.
1. Manipulate hierarchical data.
2. Make information easy to search (see tree traversal).
3. Manipulate sorted lists of data.
4. As a workflow for compositing digital images for visual effects.
5. Router algorithms.

References:
http://www.cs.bu.edu/teaching/c/tree/binary/
http://en.wikipedia.org/wiki/Tree_%28data_structure%29#Common_uses
http://www.geeksforgeeks.org/applications-of-tree-data-structure/
http://www.i-programmer.info/babbages-bag/477-trees.html







Friday, October 25, 2013

Hacking: how to become a Hacker


 young hacker Stock Photo - 10364856
Hacker is a slang term for a computer enthusiast, i.e., a person who enjoys learning programming languages and computer systems and can often be considered an expert on the subject(s).
I often ask myself one question: How do I become a Hacker? After looking up lots of relative materials, I have to say it is a hard question to answer.


Eric Raymond, compiler of The New Hacker's Dictionary, lists five possible characteristics that qualify one as a hacker: enjoying learning programming language or system, enjoying doing the programming, appreciating someone else's hacking, picking up programming quickly, or expert in a particular programming language like "UNIX hacker".
According my experience, Hacker has to have the following 4 basic characteristics.

Super programming ability is the first one. To master programming, firstly, you must have learning objectives. The second step is to make a study plan. Having a right attitude is third step. Finally, Hacker has a strong self-learning ability.

Enjoying solving programming problems is the second one. This feature is the motivation and main reason to be a hacker.

The third one is enjoying high prestige among programmers. Hacker is kind of title from other programmers. There are many ways to build your prestige. You can write open source codes, debug open source codes and maintain some websites where other Hackers often browse.

The last one is to obey and maintain hacker culture. The hacker culture doesn't have leaders, exactly, but it does have culture heroes and tribal elders and historians and spokespeople. Freedom is one prominent feature of hacker culture. Finally, Hacker has a strong self-learning ability.
Before I end my article, I have to remind you: Be a Hacker not Cracker. Cracker is someone who attempts to crack someone else's system or otherwise uses programming or expert knowledge to act maliciously. If you want to know more about Cracker, you can browse website: http://www.techrepublic.com/blog/security/hacker-vs-cracker/1400













Sunday, October 13, 2013

Open source: free and unstable

Have you heard open-source software? Open-source software (OSS) is computer software with its source code made available and licensed with a license in which the copyright holder provides the rights to study, change and distribute the software to anyone and for any purpose(Wikipedia). The first open source software I used is Firefox. Later, some other open-source software as Latex, Linux and Eclipse are becoming my daily tools. In this post, I'd like to talk with you about their cost and stability.

So far, all OSS that I know are free. Lets have a look at the advantage via an example. It is well known that Windows Operating System is expensive. Compare with it, Linux is completely free. Maybe the price of operating system is not a big deal for working people. However, it is a question that students are thinking about. In some developing Countries like China, students like buying the computers with Linux rather than Windows. One of the most important reasons is that the computers with Linux are much cheaper than those with Windows.

The key feature of the open-source software is open source codes. Some people believe that open-source software have better security than closed source software since millions of eyes looking at and maintaining the software. I don't think so. All software engineers can access the source codes and change them including attackers. It is said that lots of funds are used to attack the open-source software. And, simply making source code available does not guarantee review. Marcus Ranum--an expert on security system design and implementation--released his first firewar toolkit, at one point in time, there were over 2000 sites using his toolkit, but only 10 people give him any feedback or patches.(The example comes from Wikipedia)

In sum, you don't need spend lots of money to buy closed source software because of free open source software. However, you have to keep eyes on its' stability. There is no rose without a thorn.



Saturday, October 5, 2013

Agile: the application of Scrum in CS department E-Zine project

Scrum is an iterative and incremental agile software development framework for managing software projects and product or application development.(Wikipedia)
I am one of the teams who are working on CS department E-Zine project. To be honest, I don't know anything about famous Agile Software Development until joining in the project. In the post, I will simply show you the application of Scrum in this project.




First step, We  formed a self-organized team.

Second step, in the first meeting, we and client(professor) together discussed the product (it is not final product.), made 5 SPRINTS for the whole project, and figured out the MUST tasks in each SPRINT.

Third step, after one week, we used some software  tools to make a memo to our client. That means out first SPRINT was done.

Now, we are working on our second SPRINT. To finish it successfully, our team split into  5 self-organized groups. Each group was given specific task like interviewing students, faculty perspective, etc.  These small groups use all kinds of ways to devote their attention to the given task, simultaneously at the same time, all members also care and help other groups.

Any way, SCRUM  is one of the leading agile software development processes. We are using it to design, code, test and document our project. From this project, I learned about product and sprint backlogs, sprint planning and sprint review meetings, and how to conduct a sprint retrospective. 




Friday, September 20, 2013

LinkedIn and branding: brand yourself


As the world's largest professional network with more than 80 million members worldwide, LinkedIn can help you brand yourself. Our knowledge is goods now.  Companies, schools or other organizations who can give us jobs are our customers. As sellers, what can we do to enhance our products' value? LinkedIn provides a platform for both us and our customers. We may use the platform to display ourselves to others. In the following parts, I will discuss how to use PROFILE to brand yourself.
First of all is LinkedIn photo.  The photo may tell people about you. You are the brand. Opinions are formed in a nanosecond. And that means the photo at the top may be the most important part of your LinkedIn profile. So the photo should be natural. It is best taken recently. I can understand some people like to post their photo which was edited by Photoshop. But I don't think that it is suitable. LinkedIn is a profession platform. The hirers are looking for the people who can qualify their job and get along with colleagues instead of beautiful ones. Looking natural yet polished is far better. It is a headshot with nice shirt or blouse in a solid color.

Second is about SKILLS and EXPERIENCE. The hirers usually use keywords to search targets. Almost all the keywords are relative to skills and experience. So when you brand the two items, accurate keywords are necessary. To increase the interviews chance, you also need provide as many keywords as possible about your skills and experience. However, independent work experience should not be added. For example, if you want to find a software engineer position, the experience you worked as a waiter/waitress need not be put here.

Finally, your courses are also important. As new graduates, most people don't have work experience. In order to let the employers believe you are the person who they are looking for, you can show them what you learned.

In sum, branding yourself is the most important and difficult step before you go to job market. Besides the three sides above, we also have other things to do. Hopefully you can best use Linkedin to show you to hires.

Tuesday, September 10, 2013

QR codes: why you should use them

my blog QR code
What are QR codes? Look at the funny-looking square picture on the left which is my blog's QR code. QR codes are more and more popular because of many reasons. In the following paragraphs, I will show you 3 reasons: easy to use, free, modern.

First, QR codes are easy to use. Nowadays,  more and more people are using smartphones.  It is said that today more than half Americans are smartphone users. Smartphones can be used as a QR-code scanner, displaying the code and converting it to some useful form such as a standard URL, thereby obviating the need for a user to type it manually into a web browser.

Second, QR codes are free. You can use some websites(such as goQR.me and the-qrcode-generator.com) to create your QR codes easily, and the activity is completely free.What you need do is just to go to the websites and input your information like Text, URLS, CALL ,etc. And then to download it. Now your QR codes are finished. 

Finally, QR codes make you modern. It is information society. Everyday, our life is filled with all kinds of information. If we could catch these information, we can talk them with our friends and use them to help our life easy and amazing. QR codes are one of them. You can scan other people's or companies' QR codes to get the information that you want and give your QR codes to them to let them know about you well. When the people around you are talking and using the QR codes, if you don't have one, you are backward.

In sum, QR codes don't spend your money and they make you walk along with modern world, the most an amazing aspect is that they are easy to use. So, to know about QR codes and use them as soon as possible.

Monday, September 2, 2013

Social network security or lack of when promoting your brand is an issue of utmost importance


Social network is gradually becoming absolutely necessary when companies promote their brands. In fact, it is a two-edge knife. On one hand, companies can use social media platforms to obtain immediate feedback from current/potential customers and communicate with their audience(http://sjsucs100wcs200w.blogspot.com/).  On the other hand,  many important information of companies can leak through social networks.  In the following paragraphs, I will show you that social networks' importance to promote the companies' brands and if the social network lacks the security, it will produce very bad influence to the development of businesses.


First, Social network has became the necessary way to promote the growth in the corporate sector of the economy. Companies can track information about them by some sites like www.google.com/alerts and www.hootsuite.com. Compare to traditional survey, social network has many obvious advantages. For example, it is easy and quick to get feedback. Using this feedback, companies can modify and make their blueprint of development.  Since more and more people like to use social network to transmit information, and commonly people even more like to buy the brands which their friends recommend, the brands can be known widely and quickly which effect is much better than they get from expensive ads.If things continue in this way, the company will gain huge development.

However, hackers  and rivals alike can take advantage of social media platform to get similar information . Hackers may use the information to attack the company. As rivals, they can make advantageous measures for themselves according to the information they gained about the company from social network which possibly is very bad to the development of the company.   In some cases, the leaders of one company can discuss their products with their loyal customers,these kind of conversation possibly influence this company's maker' decisions. Yet if the conversation is gotten and used by the rivals, it is possible that the future of the company will be very hard, even the life and death of the company can be affected.


In sum, social network can both promote the brand of one company also ruin the development of one company.  In order to better use it, one of the key works is to improve its' security. Many social network companies like Facebook and Google are working on it. The following video is talking about this issue.



Thursday, August 29, 2013

Welcome

 Hi,

Welcome to LiMiaoCS200W. My major is Computer Science. I am a Grad student. Actually, I am holding master degree in Mathematics.  Changing major has many reasons.The most important one is that I like coding and want to use programming to implement my idea. And, everyone knows the relation between Mathematics and Computer Science is close. In the future, I will apply my mathematics knowledge to help make algorithms,  and use computer to show them to people.

Computer Science as one of the most popular academic subjects has lots of amazing characteristics. Abstraction is one of them. The following English definition helps to understand how this term applies to Computer Science. Abstraction - a concept or idea not associated with any specific instance(www.Thefreedictionary.com). From the beginning of the computer science, all scientists and programmers work around converting. To convert concrete situations to abstract computer science concepts or knowledge, then to convert abstraction to concreteness are the process of dealing with all kinds of questions. If you want to know about computer science, or be a programmer, you need begin with enjoying its' abstraction.

 As a computer science Grad student, I will gradually share my views about the beauty in computer science with you in this blog. Hopefully you come here often and get what you want.
一people are waiting

We are waiting!


https://www.google.com/search?q=queue+pictures&tbm=isch&tbo=u&source=univ&sa=X&ei=htMfUpL7F83rigLF5ID4CQ&sqi=2&ved=0CCwQsAQ&biw=1920&bih=943

Read more: http://geeksgrave.blogspot.com/2013/05/auto-alt-tags-for-blogger.html#ixzz2eAd5m09j