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.

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. 



Friday, September 20, 2013

LinkedIn and Branding: The Best Way to Professional Careers

       I have heard a lot about LinkedIn since I was a freshman in college. My college friends talked about it as a professional "Facebook" where people share profiles, news, education, working experience and what they have achieved in their lives and careers. However, I didn't realize the importance of having a LinkedIn account until I got an internship offer from a recruiter of some company on LinkedIn. Several weeks ago, I went on to check my LinkedIn and it notified me that some people have viewed my profile. I looked at the list of them and there was this account that didn't look familiar to me at all. Then I started checking out that account's profile and saw that the one who owns it is actually a recruiter. Therefore, it dawned on me that recruiters do look at people's profiles and look for hiring people on LinkedIn.

       What is LinkedIn? According to Wikipedia, LinkedIn is a social professional networking website for people in professional occupations. Over the past three to four years, LinkedIn has become the best social networking website with over 200 million users. It provides an online place to showcase your brand (knowledge, skills, working experience, and achievements). It also lets you find, connect with and follow your favorite people and organizations. But not every LinkedIn user knows how to take advantage of it because people don't know how to show their brands on the largest professional networking site in the world. They're just losing their opportunities because recruiters go through over 200 million profiles to find good candidates. Therefore, in my opinion, LinkedIn users should always make their accounts look active by posting profile pictures, filling out the summary section and updating new skills frequently. Finally, LinkedIn is one of the best places for people to sell themselves to the world of professionals.



 

Friday, September 13, 2013

QR Codes: A Wonderful Way of Connecting Paper-based Consumer to The Virtual World

       I'm always impressed by the idea of connecting paper-based-content consumers to the powerful Internet in a digital way. Back in 1994, the Quick Response (QR) code system was developed by Toyota's subsidiary, Denso Wave. It was originally designed for high-speed component scan in order to track vehicles. Since invented, QR codes have been widely used in Asia and Europe. They just started being used widely in the U.S for the past decade.

       QR codes can provide so much more information than the traditional barcodes that have been used for years. The issue occurring with barcodes was that they could not contain too much information as the demand of the increasing amount of data and information stored in barcodes. Fortunately, QR codes came out and solved this issue. So you might wonder what a QR code really is right? It basically consists of square dots which are arranged in a white background square grid. It can be read by any QR scan device such as smart phones with QR reader applications. When we scan a QR code on any poster that we see, we'll be taken to the website of the company providing that poster. In other words, QR code scanners will decode the URLs encoded in QR codes. Nowadays, manufacturers and companies can easily store more information in QR codes.

QR code samples

       Above are three QR codes that I just generated. Each one of them provides different information. If you have a smart phone with QR code scanner application, check them out. I hope you will see how powerful QR codes are, and how much information they can provide. We all live in a digital world where technology has been growing rapidly with the goal of better-suiting human needs. A lot of companies are using QR codes to build relationships with customers (customers can complete survey about companies' products quickly at anywhere and at anytime), to offer customers with promotions (place QR codes at good locations so people can check them out), and to advertise their products and services. According to a statistics in 2011, there were 14 million smartphone users in the U.S scanned a QR code (Pozin, 2012). Just looking at the big number of people scanning QR codes, in my point of view, there might be a lot more that companies can benefit from QR codes. Therefore, it is a great opportunity for people and companies to take advantage of such a great invention by Toyota.

                                                         Work Cited
PozinIlya. "Are QR Codes Dead?" Forbes.com LLC, March 08, 2012. Web. 09/13/2013. http://www.forbes.com/sites/ilyapozin/2012/03/08/are-qr-codes-dead/

Friday, September 6, 2013

Social Networking Security or Lack of When Promoting Your Brand

  It was quite interesting that I got a message couple of days ago on Facebook, from a girl who is not on my friend list, about hiring me as a network marketer. I do not know who she really is and how she got all of my information on Facebook. I've never heard of or seen any recruitment on a social media platform like this before. So I thought it was funny because it's quite competitive and hard to find a job nowadays, and I even got a job offer on Facebook.
                                         

Social networking websites and social media platforms such as Facebook, Twitter and Linkedin have been exponentially growing for the past decade. Social networking provides incredible opportunities for businesses to show the world their products and services. It also provides a great chance to interact with people at anywhere and at anytime.  There are many benefits that businesses or companies can benefit from social media such as online customer services with quick responses and feedback, online conversations between clients and companies, and even online consulting. Moreover, many companies even use social media to build business relationships with customers, potential clients, employees, and investors.

However, it is quite important that companies should know how to protect their copyrights and trademarks when promoting their brands through social networking sites and social media platforms because a business brand is as valuable and important as its products and services. In my opinion, on top of those benefits, there are a lot of potential challenges coming along with social media, including
data security, privacy concerns, and personal information leaks. An example of data security and privacy concerns is on March 11, 2012, Chinese spies created a fake Facebook to friend NATO officials (Protalinski, 2012). Also, Facebook admitted that they have leaked 6 million users' information such as phone numbers and email addresses (Shih, 2013).

       Therefore, I think it is significant that companies should be aware of these issues and take measures to minimize their personal data and use to be exposed to on social media. There are several ways, in my point of view, that are useful for privacy and data protection such as use strong passwords, review privacy settings frequently, provide little personal information and use browsers with security tools like AdBlock, and NoScript. Finally, always be careful with your information and data when you're online.



                                                                     Work Cited


Protalinski, Emil. "Chinese Spies Used Fake Facebook Profile to Friend NATO Officials." CBS Interactive, March 11, 2012. Web. 09/06/2013. http://www.zdnet.com/blog/facebook/chinese-spies-used-fake-facebook-profile-to-friend-nato-officials/10389

Shih, Gerry. "Facebook Admits Year-long Data Breach Exposed 6 Million Users." Yahoo! Inc, June 21, 2013. Web. 09/06/2013. http://news.yahoo.com/facebook-admits-long-data-breach-exposed-6-million-230546858.html

Friday, August 30, 2013

Welcome!


       Hello CS100W and welcome everyone to Duc Nguyen's technical writing blog. My name is Duc Nguyen and I'm a junior Computer Science student at San Jose State University (SJSU). I started to learn programming when I was in middle school. Most of my programs were written in Visual Basic and Pascal because those two programming languages were really popular then. I love coding and even enjoy doing it when I have free time, but for sure I'm not a computer nerd. I do enjoy going out with my friends and playing tennis with my brother over weekends. Occasionally, I do some volunteering jobs like picking up trash along Tully road in San Jose and holding little soccer tournaments for obese kids at Yerba Buena High School in San Jose. I consider volunteering jobs as a meaningful way to give back to the community. Over the past 3 years, I have learned several programming languages at SJSU, such as Java, C, C++, Python, Scheme and Lisp. However, I have specially focused on software development, and CPU design. So far, I have developed an interpreter for a subset of the Scheme language using Python, created a Microprocessor without Interlocked Pipeline Stages (MIPS) Instruction Set Emulator using C, and designed a 16-bit two-cycle processor by Logisim. I hope you all will be enjoying my blog and finding the information posted here useful.