Friday, December 13, 2013

Scientific Computing: Computational Science

You might be aware of the fact that we can use computers to do almost anything. Now, what if I tell you we can use computers to do science. Yes, you heard it right! We can use computers to do science and the field that uses computers to do science is known as Computational Science



What is Computational Science?

Computational Science is basically integrating computer science, mathematics, physics, biology, chemistry, and algorithms to solve real life problems. By combining all the fields, we are able to accurately model the scientific problems. Computational Science heavily relies on mathematics and computer programs to compute massive amount of calculations to understand the nature of the problem. Computational Science has three main branches such as computational physics, computational biology, and computational chemistry.

Meteorologist using Computational Science
Who uses Computational Science?

Now, you might be wondering who uses computational science. Well, it turns out that every field that uses science is starting to use computational science. The reason for this is because computational science enables every science related field to visualize the problem, and accurately map out the science behind the problems. For instance, meteorologists use computational science to figure out the future weather and predict the long term climate changes. Another field that successfully uses computational science is biology. Biologists use computational science to understand the functions of our organs. Computational Science enables biologists to model things at molecular level which enables them to design new medicines. Overall, Computational Science is at heart of every concrete science fields.

I hope you learned something new about Computational Science from this post. I am looking forward to hear your opinion and suggestions about this post, so please comment below.

References:





Saturday, December 7, 2013

Computer Graphics: Making our Movies and Video Games Realistic and Entertaining

Do you enjoy watching sci-fi or animated movies? Let’s admit it, we all love watching animated movies. (Don’t worry, I won’t ask for your age!) If you are interested in watching animated and/or sci-fi movies, then you might be interested to learn more about computer graphics. In simple terms, computer graphics is the use of a computer to generate realistic images. All the animated images we see in our movies are generated using Computer Graphics.

                               

Use of Computer Graphics in Movies

Now that I have briefly mentioned about use of computer graphics in movies, let me give some concrete examples to show you the importance of computer graphics in our favorite movies. First of all, you all have watched the movie Jurassic Park, right? (If you haven’t seen Jurassic Park yet, I highly recommend you watch that movie!) Incredible usage of computer graphics in Jurassic Park shows us what it would be like to live in a dinosaur era. Various details of dinosaurs were cleverly depicted by the computer graphics team. The dinosaur’s red and brown eyes, yellowish teeth, spiny skin, and long tails were so realistic that it frightened everyone. Without use of computer graphics, movies like Jurassic Park would be impossible to make.


Use of Computer Graphics in Video Games

Let’s talk about another widely popular use of computer graphics. Video games are very popular nowadays. We are spending most of our time playing video games, but have you ever thought about what makes video games more interesting? The use of computer graphics makes video games very exciting and realistic. As far as video games are concerned, computer graphics truly changed this industry upside down. Few years ago, we were happily playing 2-D video games, but now with use of 3-D graphics in video games, we are able to be part of the game. Nowadays, most of the games are using 3-D graphics which makes video games more fun and we are able to attach ourselves to the games.

I hope you learned something new about computer graphics by reading this post. I am looking forward to hearing your opinion about this post, so please leave a comment.

References:




Friday, November 29, 2013

Communications and Security: Cryptography

Nowadays, we are using the internet for everything. For instance, we are using the internet to connect with friends and family, online banking, shopping, and transferring information. In other words, we are giving away our valuable information on the internet. And, as I mentioned earlier in blog post “Hacking: Prevention or Theft?”, hackers can easily hack most of the information we are giving away on the internet. However, we can use cryptography techniques to secure our information on the internet. So, today I would like to inform you all about cryptography.

Encryption and Decryption techniques
What is Cryptography?


Cryptography is the study of securely transforming information, so a third party cannot have any access to secured information. Cryptography uses two main concepts called encryption and decryption to securely transfer or store information. Encryption basically transforms stored information to some unreadable text using probability and number theory. On the other hand, decryption decodes the encrypted formula to convert unreadable text to original text. So, now with cryptography technique if hackers were to get access to transferred or stored information, then they will not be able to use that information because it will be transformed into very unreadable text.

Caesar's Cipher Cryptography Technique
Caesar’s Cipher
Now that I have introduced you about the cryptography, let me give you one simple example to give you more insight about the technique of cryptography. One of the simplest examples in cryptography is known as Caesar’s Cipher. Julius Caesar was the first one to use cryptography technique. In Caesar’s Cipher, encryption can shift all the letters by 3 characters. That means that ABC will become DEF. Similarly, decryption will be simple because it simply un-shifts the characters to the original text. So, when we read the encrypted text, it will not make sense, but with a simple decryption method we will be able to retrieve the original information back. 

Saturday, November 23, 2013

Artificial Intelligence


Have you ever wonder what it would be like if computers can think by themselves? What if computers can understand humans and perform tasks according to our actions? If these questions really intrigue you, then you would certainly want to learn about Artificial Intelligence (AI). Informally, Artificial Intelligence is making computers perform like humans. 



Applications of Artificial Intelligence

Most of us have seen or used applications of Artificial Intelligence in our daily lives. Let me explain few famous applications that use Artificial Intelligence. If you have ever made a phone call to your phone or internet provider, you will hear human like sound which will interpret what you need help with based on few question answers. Once the system collects information, it will transfer your call to the right department. This whole system uses the concept of AI because we hear human like voice and based on our reply system makes a decision on which area to transfer our phone call for better assistance. This scenario is very similar to our interaction with each other. For instance, if I ask someone (i.e. human) for help, then they will ask few questions to better assist me. Once the person who is helping me has enough information, (hopefully) they will guide us in the right direction. 
Concept of AI in Chess games
Another amazing application of AI can be found in games. When we are playing chess or checkers on computer (i.e. a single player), the computer acts as a second player. Usually, it’s hard to realize that we are playing with a computer because a computer makes their independent decisions. Playing with a computer usually gives us a feel of playing with another human. 


Future of Artificial Intelligence
Google's self-driving car which uses AI 

Now you might ask, “What more can we do with Artificial Intelligence?” Well, there are lots of companies, who are working on to use Artificial Intelligence in everything we see around us. For instance, Google is developing the self-driving car which will use Artificial Intelligence. The self-driving car will be able to make independent decision, and it will be able to make driving safer and secure. 
 
Another developing idea using Artificial Intelligence can be found in Robot Restaurant located in China. Robot Restaurant is using robots to perform all tasks required to run an ideal restaurant. Their chefs, cashier, and waiters are robots. They are using AI to enable robots to make independent decisions. In Robot Restaurant, a cashier robot takes order, a chef robot prepares meal, and waiter robots deliver food to the right person. This restaurant shows how use of AI can be very useful in running a successful business.

I hope you learned something new about Artificial Intelligence. I am looking forward to read your opinion and suggestions regarding this post.

References:  





Saturday, November 16, 2013

Quick Glance at History of Computer Science

Can you imagine your life without a computer? For most of us, surviving without computers has become nearly impossible. Nowadays, we use computers for computations, storing and retrieving information, entertainment, and the list goes on. So, today I will write about the history of the device that is very close to all of our lives.

Life before computers

Before Computers

Before computers were invented, people used various tools for computations. For instance, people calculated by hand. (Some still do!) After a few decades, businesses started to grow and they started hiring clerks to handle computations. Subsequently, computers were invented for quick computations, and for the efficiency of information storage.

Early use of computers in businesses 

Emergence of Computer Science

Because computer use increased over time, the idea that computers could be used for more than just calculations emerged quickly. Thus, the field of Computer Science was developed to scientifically study various logics, to understand what can be computed, and to form a theoretical foundation between Mathematics and information. Computer Science paved its way to academic discipline during 1950s. The University of Cambridge became the first university to offer Computer Science degree. Due to the increasing discoveries and exciting applications in the field of Computer Science, today, almost every institution offers Computer Science degree. 




Computer Science Today

Ever since the discovery of Computer Science, this discipline changed our society in a positive manner. Computer Science’s discoveries helped us connect with each other, gave us access to enormous information, and enabled us to retrieve information, breaking even the greatest boundaries, beyond earth, enabling us to understand the universe and its elements. This field is vastly growing every day because new algorithms, programming languages, sorting routines, and UI’s are being discovered frequently. 

Reference:


http://upload.wikimedia.org/wikipedia/commons/5/57/MSL_concept_February_2007_-_PIA09201.jpg

http://en.wikipedia.org/wiki/History_of_computer_science


https://cs.uwaterloo.ca/~shallit/Courses/134/history.html

Saturday, November 9, 2013

File Sharing: Advantages and Disadvantages

Do you have a huge project where everyone should collaborate and work together? One way to work on this project is to use an old school approach where everyone would meet at some designated location and work on it together. If you have already tried this approach before, then I am sure you never want to use that approach ever again in your life. There are few things that can go wrong with an old school approach such as someone is not committed enough and will not show up to the meeting, one might have to commute a long distance for just one meeting, and finding a common time for everyone could be harder than rocket science. Now, you might be thinking, what can we do to finish a huge project efficiently? Answer to that question is simple; your team can use available file sharing tools to work on the project.

  Advantages of File Sharing

One of the benefits of file sharing is that file sharing can save time and money. For instance, if you are working on a project, then your team members don’t have to be physically at the same location. Every team member will have access to the same file that they can edit, view, and access at the same time. Another benefit of file sharing is retrieving your files or data from anywhere. If you are using file sharing tools, then you can save your files at one destination and retrieve those files in any of your device. Let me explain that using actual scenario. Imagine that you are working on your desktop for some project, and you are tired of staring at your desktop screen. Perhaps, weather is really nice outside and you want to sit by the pool, but still want to work on your project because it is due the next morning. File sharing lets you enjoy that nice weather and let you work on your project at the same time. You can simply save the file on your desktop and access that file from your tablet or laptop.

Disadvantages of File Sharing

Every time we utilize some digital tools, we should always consider potential disadvantages that might come along with it. Just like any other software, file sharing also comes with few disadvantages. One of the disadvantages of file sharing is the possibility of losing all of saved data. For instance, one of my professors once used Dropbox to share her files with all of her students. One of her students deleted all of her files from that folder and the whole class was left without access to the essential files for the class.

File sharing tools

There are many different file sharing tools available for us to use. Two of my favorite files sharing tools are Google drive, and Dropbox. Google drive lets us edit, view, and share one file with many different users. Drive also provides chatting option while editing documents, presentation, and spreadsheet. Another unique feature of drive is the option of locking the files or make files readable only. My second favorite files sharing tools is Dropbox. Dropbox is easy to use and lets us share a folder with other members. Their drag and drop functionality is my favorite feature of Dropbox.










References:


http://www.techopedia.com/definition/16256/file-sharing


http://webtrends.about.com/od/glossary/g/drag-and-drop.htm

http://gsmtweet.com/wp-content/uploads/2012/06/Secure-File-Sharing-Options.jpg

Friday, November 1, 2013

Data Structures

Can you imagine what would happen to our bedroom if we do not have closest or storage? Our cloths would be all over our bedroom. Speaking from an experience, finding important things in an unorganized room will be a great challenge, and one would be spending their valuable time on something useless. Similar logic applies to programming. Data structures in programming work as a closet or storage to store and retrieve data efficiently.

Why should you care about Data Structures?

Now, you might be wondering “why should you care about data structures?” Answer to this question might be different depending on your interests. If you are not planning to learn programming, then you may never have to learn various data structures. However, if you want to be an excellent programmer or pursue a career in Computer Science (because you are awesome!), then you must have to learn different data structures.
Examples of different data structures
Importance of Data Structures
Data structures’ most important features are efficiently storing, searching, retrieving and traversing the data. Attributes of data structures make them very useful and an essential tool in programming. According to one my Computer Science professor, “data structures serves as a heart of every application.” For instance, if you are building GUI applications and following MVC patterns, then you need to figure out which data structure will you use for your model. In addition, almost all algorithms rely on the correct choice of data structures to get the best running time. For instance, if you run some specific algorithm and change the underlying data structure of the algorithm, then you may find that algorithms running time drastically increases. Lastly, use of data structures in programming make codes very readable. 

Two kinds of Data Structures
How to learn Data Structures?

Since data structures are very essential tools for programming, most of the well-known companies tend to ask interview questions based on data structures. Often interviewee tends to stumble upon those questions, and loses their dream jobs. So, what is the best practice to learn data structures? According to Robert Love, Software Engineer and interviewer at Google, one should visualize the data structures. He recommends “Intuitively understand what the data structure looks like, what it feels like to use it, and how it is structured both in the abstract and physically in your computer’s memory.” Another important thing to focus on while studying data structures is to understand when to use that particular data structure. The reason behind that is every data structures is designed to achieve certain things efficiently, but that same data structure would be very inefficient at achieving other tasks. For instance, arrays, the most basic data structure, are good for retrieving data at given location (it takes O(1)), but arrays running time drastically increases for removing data from the middle of the array.

I hope you enjoyed my post about data structures and learned something new from this post. I am looking forward to hear your suggestions in comments.

References:




http://s.radar.oreilly.com/wp-files/5/2013/03/redis-data-structures.png



Thursday, October 24, 2013

Hacking: Prevention or a Theft?

Do you lock your home before going to sleep? Do you lock your car when you are going for shopping? I am sure your answer to both questions is yes. But, why do we protect our property? Well, the answer to that is very simple and obvious. We do not want anyone to steal our property nor do we want strangers to use our property. Now, let us consider our digital property. Do you use online banking? Do you check your emails regularly? Do you use social networking websites? In the 21st century, I assume the answers to these questions are yes. Now, what if I tell you that someone can steal all of your personal information from your digital world? Yes, you heard it right. If you are not protecting your digital property, some hackers can steal your digital information. So, in this blog post I would like to talk about what is hacking and how hacking is related to us. 


What is hacking?

Hacking has many different interpretations. Many professionals use “hacking” to mean clever programming. For instance, one my professor uses “hacking” to simply mean computer programming. However, there is another interpretation of hacking that is often used by our media and our society. According to that interpretation, hacking is an act of breaking or stealing. In this context, hacking means “gain unauthorized access to computer data: to use a computer or other technological device or system in order to gain unauthorized access to data held by another person or organization” (1).  


Relationship between users and hackers

Now, you might be wondering what hacking has to do with you. Let me explain that by giving you a realistic example. Imagine that you are browsing on the internet. You might be checking emails, and you happen to get an email with an attached file. If the attached file is corrupted (meaning it contains Trojan horse), then malicious users can get access to your personal data. Perhaps, malicious users can control your device and possibly ruin your device by deleting important files. This is just a one simple scenario, hacking is usually more harmful than the situation mentioned above. Hackers can have power of controlling our our credit cards, to controlling our car breaks. In other words, anything that uses software can be hacked and controlled by malicious users. Read further to know more about what hackers can possibly do. 

Who are hackers?

There are various kinds of hackers in our society. Some of them hack for good causes whereas others hack for unethical reasons. First, I will like to talk about unethical hackers. Unethical hackers are those who hack to steal or gain access to unauthorized software or networks. Their main purpose of hacking is to gain benefits for themselves. On the other hand, there are other kinds of hackers who hack for good causes. For example, big corporations and governments hire hackers for security reasons. Corporations would like to check their cyber security, and ask hackers to break into their system or find a loophole into the software. Lastly, there are hackers who hack for fun or to challenge their skills. Hackers of this type take hacking as a challenge.

I hope you enjoyed my blog post about hacking, and learned something new. I will be looking forward to your replies in the comments.

References:








Saturday, October 12, 2013

Open Source

Most of you may already know about open source software. Your understanding about open source software might be limited to the fact that open source software is “free software”. However, there are lot more interesting things about open source software that makes them unique. What makes open source software unique is the fact that they come with source codes. I know what most of you might be thinking, you might be thinking that “I am not a programmer, so how source codes are benefiting me or my business?” Well, let me explain how open source codes will help everyone. Since source codes of open source software are available to the general public for use or modification, if some developer finds a bug in the current version of the software and he or she decides to fix that bug and redistributes the software, everyone will get a fixed version of software. This innovative ideology of open source software makes them very convenient and successful. 


Why choose Open Source Software over Commercial Software?

As a user, you might be wondering which software (Open source software or commercial software) would be better to use for either your personal use or business use. Let us investigate which development methodology is better. 

Security: When it comes to installing or using software, we have to consider security of the software. Security of the open source software is better than commercial software because in open source software development, source codes are available to the general public, and as soon as someone finds a bug, they will either fix the bug or notify developers to fix bugs. On the other hand, commercial software has closed or hidden source codes, so when someone finds a bug, they have no access to the source code to fix the problem. (Well, what you have to do in that case? Wait for their new bug free updates!) The developer team of the commercial software is limited whereas open source software has a wide range of developers. 



Customizing Software: Open source software gives us a freedom of customizing software based on our taste. So, if you would like to add something to the current software, or if you would like to change something about the software, you have freedom of achieving that task. (I am assuming you know some programming in this case.) On the other hand, commercial software does not give us freedom of customizing software. In commercial software, we have to use what they gave us in that package. What is the solution if you would like to change something about the commercial software? According to commercial software approach, we have to buy new software or some other software to achieve that task. 

Cost: No matter who you are, you would like to save money and get better product. One of the primary advantages of open source software is the cost. Most of the open source software comes at little or no cost. Yes, you heard it right, they come for free! Now, let's consider commercial software. Commercial software is expensive and you have to keep on updating them once their license expires. 

I hope you enjoyed my blog post and learned something new about open source software. I will be looking forward to your replies in comments.


Reference: 

http://blog.hathix.com/wp-content/uploads/2013/09/may-the-source-be-with-you_Open-source.jpg

http://opensource.com/resources/what-open-source

http://milindpadalkar.files.wordpress.com/2011/05/open_source_part_ii.jpg

Friday, October 4, 2013

Agile Methodology: a successful way to develop software


Have you ever had an experience of ordering something and waiting for a long to find out the deliverable is completely opposite of what you expected? Well, this is a very common problem in most of the businesses. The traditional software development procedure is very similar to the scenario mentioned above. In a traditional software development, interaction between clients and developers are very minimal such that both of them do not interact with each other until the final product is ready. Now, can you imagine what this would be like? Yes, you guessed correctly, it would be a complete chaos if developers did not meet a client’s request properly. So, you might be wondering what we can do to improve this methodology. The answer is very simple, use new and effective methodology called Agile. 
Comparison of traditional development vs. agile development

What is Agile?
Agile is a plan driven software development methodology where active participation of client is very essential. Agile approach makes software development iterative by breaking huge project into small phases. During each phase, certain requirements are planned, implemented, and tested. After each phase, a development team delivers something to their clients. This approach really helps both software developers and clients.  Developers benefit from agile methodology because the work is divided into separate phases and that helps developers focus on smaller aspects of the project instead of tackling whole project at once. Agile approach benefits clients as well because at the end of each phase they get deliverable which gives client a clear understanding about the development. After the deliverable, clients can ask developers to make some changes to their development. 


Benefits of using agile methodology
·         Customers are happy with the final product because they are constantly involved during the development process.
·          Development time decreases because dividing work in each phase keeps the development process on time.
·         Easy to make changes in current development.
·         Improves clients’ business because agile methodology allows clients to pick and choose what they want in their software.
·         Improves software quality. 

Since agile methodology seems to work very effectively, many software companies are now using agile methodology to develop their software. An interesting thing about agile methodology is that agile is easy to learn. One can understand agile in less than nine minutes by watching this video

I hope you enjoyed reading about agile methodologies, and hope you use this approach when you develop software for your clients. I will be looking forward to your replies and views on agile methodologies.

References: