Saturday, December 14, 2013

Symbolic Computation

      

      I have always been amazed by the development of calculators over time. Couple decades ago, a calculator could only solve simple numerical computation such as addition, subtraction, multiplication and division. Thanks to the fast growth of Computer Science, calculators have been improved a lot so that they can solve complex mathematical expressions. However, the explosion of mobile devices nowadays makes many people want to design a math library or system on mobile devices in order to replace regular calculators. Such a system has to be able to do symbolic computation. 


      What is symbolic computation? Symbolic computation allows us to express mathematical problems in symbols and solve them using variables, formulas and functions. Values do not need to be assigned to variables until we want to. Symbolic computations give us more accurate results since they reduce the inaccuracy of doing mathematical problems by hands.  
       
      
      A symbolic computational system can do a lot of things including numerical computing, derivatives, integrals, and many other complex expressions. There are two most popular systems which are Maple and Wolfram. They both have very complicated graphical and computational features, which are implemented very well to handle complex expressions that cannot be solved by humans.

      In order to build such systems on mobile devices, there are several considerations to be considered.

  1.  Space: consider a simple expression like (a + 5) ^ 10. It expands to 3 terms, however (a + 5) ^ 200000 can expand up to 2000 terms. This might take some space (probably more than 1 Mb). Therefore, simple things get bigger very fast when you begin to compute with them. 
  2.  Time: The above polynomial looks simple, but if we want to take the derivative or integrate it over some interval might take quite long, so how long a mobile user would want to wait for an answer?
  3. Format: Mobile users always want simple inputs but beautiful outputs.
  4. Built-in library: To make this system portable, we need to have a library.
  5. Extensibility: To make the system bigger and more useful, users can add more functionality to it. 

      In conclusion, symbolic computing/programming plays an important role in solving a lot of mathematical problems that were created many centuries ago. It also builds a much stronger platform for a new kind of computing.  

Friday, November 29, 2013

Computer Graphics

      

       If you are reading this post, it is just one of the examples of computer graphics. What is computer graphics (CG)? It is a subfield of Computer Science that studies how to use computers for representing, manipulate and synthesizing image data with so much help of graphic software and hardware. The interaction between humans and computers has become so much easier thanks to computer graphics. It plays the most important role in the development of animation, video games and movies.


       The most significant thing in any system that has been created by humans is interface or user interface (UI). When a computer runs, basically data is moved around but we can’t simply see it, but graphical user interface (GUI) like windows 7 operating system shows us how things look like in graphics/images. The first CG application programming interface (API) was developed in 1965 for the IBM 2250. This API opened up a new area of computer graphics, and Open Graphics Library (OpenGL) came out in 1992 – one of the most useful computer graphics libraries available to gaming programmers.


       Good graphics come along with a lot of power consumption and cost of graphics hardware. Therefore, programmers have spent so much time to improve OpenGL in order to get the trade-off between good software and costly hardware. With OpenGL, programmers can make anything they want such as animals, rocks, grass, smoke, and textures. It is also used to program fragment shader and vertex, and provides high quality texture compression for multiple render targets. This feature of OpenGL helps reduce the Graphics Processing Unit (GPU) clock cycles which saves much more power.  



       In conclusion, we all use applications with interactive interfaces (graphics) every single day in any aspect of life. It is possible that computer graphics will be used widely and extensively in the future. Nowadays, we can easily find CG involved in many areas such as engineering, science, business, entertainment and so forth. Coming along with the rapid growth of Computer Graphics is the expansion of art and entertainment. Therefore, we have many good video games and movies to enjoy.

Friday, November 22, 2013

Communications and Security

       

       Communication is one of the most important aspects in life. I can’t imagine how life would be if people can’t communicate with each other. Back in the old days, letters and telegram messages were only ways people communicated with others in different parts of the world. It wasn’t only about the cost of communication, but also about the amount of time it took to reach someone we wanted to talk to. Thanks to the rapid growth of networking, it has become so much easier and faster for us to reach anyone in the world within several seconds. There are two main ways to communicate nowadays, which are by phones and internet. The progress of the Internet really opens up a whole new era of technologies and communications. It allows people to communicate anywhere at anytime with a low cost.  However, there’s always some issue coming along with this kind of communication – security.


       One disadvantage of this kind of communication is that everything is stored online and done through the net. Therefore, it attracts many people with bad intents to try stealing the information over the Internet. They can either use it for their own purposes or sell it to companies who need customers’ information. No one would want his/her information to be revealed to a third party without his/her permission. Computer security has become a crucial part of computing, and everyone who uses computers should at least know how to prevent security risks from the Internet like setting up firewall, not going to anonymous websites and staying away from popups. These are just basic things we should know; however, there’s no way we can stop hackers from exploiting our systems. Even big companies like Dropbox and Adobe got hacked several times.


       The best thing we can do about it is not talking too much about important or private information on the Internet or through phones. Not only are we attacked by hackers, but also are controlled by some government organizations without knowing about it. It was revealed that Central Intelligence Agency (CIA) paid AT&T over $10 million annually for information from the company’s users’ telephone records including international calls. I don’t know if that’s something we can prevent. It feels like no matter what we do, we are always being watched by someone (anonymous one).



       Finally, the Internet grows faster and faster each day, but it cannot replace face-to-face communication that has been existing since humans appeared on the earth. Therefore, we should be aware of what can and cannot be talked or discussed over the Internet. Faster communication means better but not safer.

Sunday, November 17, 2013

Artificial Intelligence: Our Future Technology

   

       Artificial Intelligence (AI) is one of the branches of Computer Science which is the design and study of intelligent machines for some certain purposes. For the past few years, we have seen a lot of new advances such as the IBM Watson supercomputer, Google self-driving cars, and complex big data sets from the Internet. We’re living in an automation age, and all know that our future will be affected dramatically by new technologies – such as AI.


       Artificial Intelligence is successful in fields that have more data than human beings, and require simple decisions. For example, big data is one of the most important things people have spent a lot of time to research on. Image recognition is one of the useful applications of AI that classifies images into different categories such as Google Goggles. It can be applied in biological research like brain mapping in order to help build computers that can simulate human brain. The leader in this brain mapping area is Sebastian Seung at MIT who develops a new kind of computer vision in building “connectcomes” – the detail of neuron communications. 


       Another area that relates and depends so much AI in order to make progress is cognitive prostheses – brain implants, which can replace the role of a damaged part of the brain. A prosthesis can help Alzheimer’s patients restore their crucial memories. The implant will record the signals of neurons in the brain and make a device (usually a micro chip) mimic the way these neurons work. Without AI and the power of computer, an electronic device would never have the power of replacing human neurons.


       Finally, if every intelligent machine is carefully programmed, it will reduce the risk of humans’ carelessness, for example, in surgery. Definitely, there are a lot more of AI that scientists will discover in the future in order to make our lives better. However, computer vision, robotics and cognitive prostheses are most relevent and interesting to accomplishing our future goals.

The Evolution of Hardware and Computers

       There is a hidden science behind every part of our lives, and everyone on the earth is affected by its accomplishments. It is Computer Science which has transformed our societies with the rapid growth of the Internet, mobile networks and digital information. When we think about the achievements of Computer Science, we are talking about the development of computers – the most powerful machines in the world.

ENIAC

       The history of computers always amazes me. ENIAC was the first computer invented at the University of Pennsylvania  by John W. Machly and J. Persper Eckert. It uses 18000 vacuum tubes to operate, and it takes up about 2000 square feet of floor space. ENIAC has a separate unit to control executable instructions for composing a program. It utilizes function tables and switches to solve a problem. It also requires a lot of work and many programmers to finish one program.   

       If you feel interested in the history of computers, here is a brief article about it.


Transistors
A chip
       When looking at computers that we have today, I would never have been able to imagine that is how the first computer looks like. It looks so big and complicated. If we look at the history of computers, it is like a revolution of hardware. Without the progression of hardware, Computer Science would not have been like how it is today. There were two greatest inventions in the 20th century that have changed the whole modern world. They were transistors and integrated circuits (chips). A chip consists of a lot of transistors connected together. Not only does it save space, but also increases the speed of a computer.

       If you ask who invented computers, there would be no exact answer to that question because many computer scientists and inventors contribute to the evolution of computers. Finally, thanks to Computer Science’s achievements, we could not ask for a better world to live.   

Saturday, November 9, 2013

File Sharing Services



       A decade ago, if you wanted to distribute some files to your acquaintances and friends, how would you do it? What I did was to copy the files to a disc or a flash drive (USB) and bring it to my friends. However, thanks to the rapid growth of the internet for the past several years, we do not have to do it anymore. Instead, we can stay home and share files online through web storage such as Google Drive and Dropbox. For example, if you want to share a big file like a 3GB movie with your friends, you cannot send it as an attachment in your email, but you can put it up on Dropbox and give your friends permission to download from your account. Therefore, sharing files on cloud has become a new trend of sharing things on the Internet.




       Although file sharing brings a lot of benefits to Internet users such as cost and time flexibility, there's a big concern to file sharing services  coming along with it - Security. According to CNET, even a big service like Dropbox confirmed that it got hacked. Cloud security is in its early phase of development and still requires lots of work. Thus, on-cloud data information has been the main target for hackers. Federal Trade Commission (FTC) revealed that widespread data breaches from almost 100 organizations are available on peer-to-peer networks. In the modern world where network systems might not be secured all the time from all risks, we as Internet users should always be aware of what kind of things we are putting up on the net.




       In conclusion, file-sharing services and companies might or might not care if user information is leaked to the third party because they still make profits. For example, Google has leaked a lot of user information, but they still make a lot of money from the services they provide. We, Internet users, are always the victims of information leak because of fraud or identity theft. Hence, you should be very careful of what you can and what you cannot share on the Internet.

Saturday, November 2, 2013

Data Structures

A data structure in Computer Science is a way of organizing and storing data in a computer so it can be utilized quickly and efficiently. Any software or any websites that we have come across have their own ways of using data structures to store and retrieve data. Data structures always go hand in hand with algorithms. With these two things, programmers can make up any software or program they want. Therefore, data structures and algorithms play such a significant role in the modern Computer Science world.

A Root Directory Data Structure

Actually, data structures and algorithms complement each other. An efficient data structure would be a big help in designing a fast algorithm and vice versa. In practice, whether a website can become popular or not, it all depends on the data structures and algorithms that are used in it. Two websites that are most popular for their data structure and algorithm efficiency are Google and Facebook. Google is famous for its super fast searching algorithm, and Facebook is famous for its flexible social graph data structure. These two companies spend so much time and money each year not only to enhance their data structures and algorithms, but also to maintain their data centers where they store all the data information.


In conclusion, a profound understanding of data structures and algorithms is the most fundamental thing for any Computer Science students to be successful in the future. There are several reasons why we need to study it:

  • The most concerning problem that every computing system faces is a way of storing and retrieving data information. 
  • For any software or websites to be economical/low-cost, data must always be organized so that it can support efficiently quick retrieval and manipulation.