Friday, December 13, 2013

Computational neuroscience


Human brain is one of the most complex structures with hundreds of billions of neurons and hundreds of trillions of synapses. By looking at these numbers we can say that studying how our brain functions is not an easy task. It is a mystery since our evolution. Scientists and neurobiologists have been trying to study and understand the brain functions for decades (Well, they are able to find many details but there is still more to discover.) This field of study, as you might have guessed by now is called Computational neuroscience.  
Computational neuroscience
 

Computational neuroscience is not a single man army (by which I mean, it is not a stand-alone field.) In fact, it is an interdisciplinary science that uses computer science (mathematics, physics and electric engineering) programs and models to construct biophysically detailed simulations of various parts of brain to study in detail and understand each part/section of brain. The study results and understanding from computational neuroscience can be used in other fields such as machine learning to create artificial neural networks (ANN’s.) These ANN’s can then be trained to perform functions that human brain can do such as identifying patterns, numbers, objects, face recognition, etc. Although it does not seem to be realistic to design and train an ANN which exactly mimics the human brain, but with more advancements in computational neuroscience we may see ANN’s that perform some major functions of brain like show emotions, react to various situations, etc.

References:

Thursday, December 5, 2013

Computer Graphics


Are you a big fan of (or at least interested in) video games or sci-fi movies? If yes, you will appreciate the role computer graphics play to make you get on the edge. Computer Graphics is nothing but creating images and integrating different images that would look realistic but are not actually real/possible to exist in the real world. Have you watched the movie Avatar? (It’s one of my favorites.) The planet Pandora in the movie is a beautiful work of computer graphics. We all know that there is no such planet called Pandora with flying/hanging rocks and any of its creatures, yet it seems so realistic in the movie (Don’t you think so?) Computer graphics have taken the sci-fi movies and video games to an entirely different level.
Avatar
 

Computer Graphic applications are not just limited to movies and video games. They are also used in many simulation models such as cloth modeling, Simulation games, Driving/Flight simulation and even in the field of medicine to perform some critical surgeries in virtual simulation prior to actual surgery.
In the coming years, with more advances in computer graphics, we may not even have real humans in the movies except for computer scientists who design and program all the visual/special effects using computer graphics. Let’s hope that is not the case (taking humans completely out of the frame is not too much fun to watch.)

Friday, November 29, 2013

Communications and Security: Cryptography

In my first post I introduced you to Cryptography. In this post let us dig a little deeper into the subject. To give you a quick recap, Cryptography is the science of making and breaking 'secret' codes. We use the internet every single day. We connect all our electronic devices to the internet, in most cases through a wireless medium and transmit a lot of data over the network. This data may contain sensitive information such as username and passwords, bank account details, personal information, etc. So, all the data that you transmit through a wireless network is visible to everyone? Unfortunately, yes. Now the question is how to protect our data. One obvious way to do so is to encrypt the data using strong cryptographic techniques. The basic idea behind cryptography is very simple. The sender encrypts the data and sends the cipher text to the receiver and the receiver decrypts the cipher text back to the plain text. All the cryptographic techniques can be broadly divided into two categories. They are:
Symmetric key Cryptography: Symmetric key cryptography is a technique in which the secret key is shared between the sender and receiver and the same key is used for both encryption and decryption.
Symmetric key Cryptography
Symmetric key Cryptography

Public key Cryptography: Public key Cryptography is a technique in which different keys are used for encryption and decryption. The sender and receiver have their own pair of public and private keys and a message encrypted with the public key of the key-pair can only be decrypted using the corresponding private key and vice-versa.
Public Key Cryptography
Public Key Cryptography

 Using any cryptographic technique will not protect your data from the bad guys out there. This is because even strong cryptographic techniques are vulnerable to attacks if they are used properly. So choose proper cryptographic techniques and keep your data safe and secure.

Sunday, November 24, 2013

Artificial Intelligence (AI):


Do you like to play chess? Until a couple of decades ago, only humans played chess. But guess what today there are machines which can play chess. One such chess-playing machine was Deep Blue. This machine is so intelligent that it even defeated the world chess champion Garry Kasparov. Can you believe that? 
Artificial Intelligence

One major element that puts human-race ahead of all other living or non-living things is 'intelligence'. But with advancements in AI, this line is becoming thinner day by day. Have you ever had an iPhone and gave voice commands to 'Siri' to locate your favorite restaurant or a nearby movie theater? How do you think Siri can understand what you said and respond to your commands? All thanks to artificial intelligence. Now-a-days AI machines have become so smart that they even know how to drive (do they also need to have a driver's license?)
All these Ai inventions and technologies seem to be very interesting and promising. But at the same time, I feel them as a threat to the very existence of humans (may be because I watch too many science fiction movies where machines created by humans take over their masters and rule the world.) I hope AI machines will not be the last invention made by humans as mentioned in James Barrat's new book “Our Final Invention.”



Image Courtesy:
 

Friday, November 15, 2013

History of Computer Science

In my opinion, we started to use computer science when we started to use numbers. Our fingers are the very first computational devices that we have used until the abacus was discovered (don't you think so!)
Talking of history, it would be unfair not to know who invented the first mechanical computer. Any guesses? Don't worry if you don't know. Charles Babbage invented the first mechanical computer and Ada Lovelace wrote the first algorithm intended for processing on a computer. Early computers were mainly used for mathematical calculations but soon it became clear that computers can do more than just math. Computer Science gained more prominence and made its way into academia. Computer Science program is offered in almost every school now. But have you ever wondered which school is the first to start a degree program in Computer Science? Check it out here.

Computer Science is a very fascinating and fast-growing field. I say it's fast-growing because, so many programming languages, techniques, technologies, paradigms, algorithms, etc., are discovered every day and what seems to be new and interesting today becomes old and boring tomorrow. Today, Computer Science is ubiquitous and it is hard to even imagine the world without it.

Friday, November 8, 2013

File sharing


file sharing
 
Anyone with a computer and internet connection are probably aware of file sharing. In this digital world, we share files every single day. File sharing itself is not a new technology, only the ways in which we share have been drastically improved. Do you remember how we used to share files before the advent of the Internet? Yes, we used to either share the hard copies or copy the files to removable media such as floppy disk, CD/DVD, USB stick etc. and share it. With the onset of the Internet, e-mail served as the popular medium to share files. But the major problem with e-mail is the size restrictions imposed by the service provider (I still remember my email account giving me an error while trying to attach my school play video to share it with my friends.) Thanks to P2P networking system and cloud storage technology, file size is no longer a limitation. Today, there are a lot of online services that made file sharing easy. All you need to do is just drag and drop the files you want to share, click a couple of buttons and you are done.

File sharing is made so easy with all the online tools and websites that people started to share anything and everything often ignoring copyright violations. So be careful while uploading any files. Ask yourself, “Am I violating any copyright law?”
 
 

Thursday, October 31, 2013

Data Structures

 
Algorithms +Data Structures = Programs
 
We often see that the concept of Data Structures is explained along with Algorithms. Have you ever wondered why? It is because, the underlying data structure of an algorithm plays an important role in determining the performance of the algorithm. So let us see what a data structure is and how it effects the performance of algorithms.
Data structure, as the name indicates is a particular way of storing and organizing data in a computer program. The definition looks good, but why do we use data structures? Suppose you are writing a computer program to store all the student information of your university. For that you have to store a lot information such as student name, ID, department, courses taken, grades, etc. Once you have all the information, you may want to know how many students enrolled in a particular course.  What is the average class standing in a particular course? What is the current GPA of a particular student? By just looking at the information you may not be able to answer such questions.  The data/information must be organized in such a way that one should be able to retrieve the data, perform some calculations on the data and find answers to their questions. This is where data structures come in.
Data structure should be designed/chosen in such a way that storing and retrieving of data is fast. Most computer programs deal with hundreds of thousands of data records. If you choose an improper data structure to store your data, retrieving a single record from thousands of records could take a lot of time and as you know, for a computer program, even a couple of seconds is a lot of time. So, choosing a wrong data structure makes your program slow (I told you! The choice of data structure affects the performance of an algorithm.)