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.

Sunday, October 27, 2013

Hacking vs. Cracking

Before I started learning Computer Science, I had always thought that hacking is a bad and illegal thing. However, as I began to learn about Computer Security, I realized that many people are actually confused between hacking and cracking. These are two completely different forms of Internet privacy and copyright. Let me explain why they are different.

Hacking is done by hackers who try to understand computer architecture, system and network to gain knowledge in order to improve better system and encryption. Hackers sometimes break into systems and networks illegally, but they, most of the time, do not cause any harm. 

Cracking is done by crackers who try to break copyright protection on software products, and to break into systems to change or steal important data. Usually, crackers are very good at coding and writing programs that crack software protections. Cracking can cause a huge loss for companies that produce software products. 


Software Protection


For example, Adobe Creative Cloud (ACC) is the cloud-based software that helps users store everything on cloud. It would probably make a lot of money for Adobe System Inc. However, according to TechSpot, it was revealed early in June, 2013 that ACC has been cracked already. Do you think how much it will cost Adobe to fix this problem of cracking? I think it will cost millions of dollars.



Software Cracked

In my point of view, hacking is not really bad as long as we learn it to improve our understanding of systems and networks and to enhance our knowledge of Computer Security. In contrast, cracking is bad because it always harms software companies that probably spend a lot of time to make useful software products for users around the world. Therefore, we need good programmers to prevent software from being cracked.  

Sunday, October 13, 2013

Linux: The Future of Gaming

       I've been always impressed by the importance and power of open source and how it's been changing the world for the past few decades. Open source always offers free license and access to its source codes; therefore, it has a huge number of users and developers around the world. It's been getting bigger and better since everyone contributes a little bit to its growth. A lot of people have started building up their own companies based on Linux as the foundation, especially companies developing games.

       As a gamer, I found it really surprising that one of my favorite game companies, Valve, has been a Linux consumer for quite long. Valve launched their first Linux game server back in 1999. Linux, nowadays, plays as the majority of game servers; and more than 1 million of Linux game servers are out there around the world. It's also used internally for the source codes, animations, models, assets, and etc. Free open source code is one of the key features that makes Linux become dominant in the software industry.

       Gabe Newell, Valve co-founder, believes that Linux is really the future of gaming. It is typically used in the gaming industry even though Linux gamers have not got a lot of attention. Several years ago, no one was sure about the direction that PC industry would be going; however, Valve founders saw a new platform, Linux, standing out  among other platforms such as XBox and PlayStation. Linux emerged as a perfect layer with full control over pricing and other features. It led to a new trend of open systems. 

       Going back to the era of all the consoles that came from that time, gaming was like almost closed. If you got a high quality graphical game, your computers wouldn't be able to handle it because of the memory and graphics card technology back then. However, PC graphics eventually reduced that shortage of technology, and the Internet took over the place of private gaming networks.

       Now it is the era of digital distribution, online gaming, and social gaming. These changes in the industry of gaming really started from the innovative open systems which will have greater advantages over regular systems. When given source codes, the heart of any software, even the users of open systems can have big contributions to things that a company produces. For instance, the Android community creates contents ten times bigger than those that any Android company's developers do.
       Therefore, in my point of view, if open source is the direction that gaming industry is heading to, Linux would be the best choice for both developers and gamers. However, it did, do and will continue requiring a lot of efforts from the users and all the companies that are interested in this field.


Sunday, October 6, 2013

Agile: A Great Tool For Project Development and Management

       In the past, I sometimes came across projects and development teams on software that follow agile development methodologies, usually Scrum. Agile is a set of software development methods which is built up on incremental and iterative development. Agile provides its users the capability to freely adapt and make changes to any project based on Agile. I didn't realize these significant characteristics of Agile until I got to explore it during one of my projects this semester; especially, it's extremely used in CS 100W.

     In order to apply Agile correctly and wisely, people should always stay away from the following mistakes:
     1) Lack of understanding of agile development methodologies. 
     2) Lack of logical system thinking.
     3) Make the implementation complicated.    

     Agile really adds new features to the traditional approach to software development process, which always assumes that final products' requirements and customers' demands won't ever change. However, in reality, customers' demands and requirements change quite often, and Agile provides a better way to adapt and make changes to the process of project development flexibly. 

     Also, Agile allows development teams to be able to give deliverable products to their clients at the end of each sprint. Everyone in the teams can respond to changes even when projects progress and customers' demands increase. This is one of the factors that makes Agile powerful. Finally, Agile is one of the best tools for project development and management that any business would need to use.