Pages

Saturday, November 23, 2013

Artificial Intelligence: Google Brain


Google Brain is an artificial intelligent machine which speaks to the user and answers the questions. It is a deep learning research project at Google. Andrew Ng, the Director of the Stanford Artificial Intelligence Lab founded the Google Brain project at Google, which developed very large scale artificial neural networks using Google's distributed compute infrastructure.


Google Brain is a fascinating project which uses set of algorithms from machine learning. It also uses artificial neural networks. Researchers try to train the Google Brain uses various sets of training data so that it can be used to enable high quality speech recognition, email spam blocking etc. Even the Google’s self-driving car concept is a part of the Google Brain project.

To teach the machine to distinguish between cars and motorcycles, the researchers need to collect tens of thousands of pictures that have already been labeled as ‘car’ or ‘motorcycle’ to train them. People working on this project say that they are create a neural network which simulates a new-born brain and introduce it to YouTube videos for a week. They inferred that it started to learn unlabeled images from the YouTube stills. This small-scale simulation of Google Brain learned what the word ‘cat’ is from the YouTube’s unlabeled stills. This is known as self-taught learning.

They are working on implementing this on all possible areas like speech recognition and email spam blocking. 

Friday, November 15, 2013

History of Computer Science: Who invented computer?



There is no easy answer for the question who invented the computer. Computer was not invented by one person, but many. It was not invented in a single break through but a series of incremental steps. It continues even today as new generations.


First automatic computing engine concept
Charles Babbage is known as the “father of computer”. He created the first Analytical Engine which contained the Arithmetic Logic Unit(ALU). It also had integrated memory and it is the first general purpose computing concept.



First concepts modern computer
Alan Turing proposed a concept of Turing machine to print symbols in 1936. It is considered as the first modern computer. The Turing machine has a tape of symbols which computes the logic of any computer algorithm.

First digital computer
ENIAC is the first electronic general-purpose computer. It has individual panels which perform different functions. The ENIAC was invented by J. Presper Eckert and John Mauchly at the University of Pennsylvania and began construction in 1943.



First commercial computer
In 1942, Konrad Zuse begin working on the Z4, which later became the first commercial computer after being sold to Eduard Stiefel a mathematician of the Swiss Federal Institute of Technology Zurich on July 12, 1950.


The first PC (IBM compatible) computer
The first personal computer was introduced by IBM in 1981. The computer is referred to as the Acorn and had an 8088 processor, 16 KB of memory, which was expandable to 256 and utilizing MS-DOS.

Thursday, November 14, 2013

File Sharing: Peer-to-peer


Peer-to-peer file sharing is different from traditional file downloading. In peer-to-peer sharing, you use a software program (rather than your Web browser) to locate computers that have the file you want. Because these are ordinary computers like yours, as opposed to servers, they are called peers.


The process works like this:
  • You run peer-to-peer file-sharing software on your computer and send out a request for the file you want to download.
  • To locate the file, the software queries other computers that are connected to the Internet and running the file-sharing software.
  • When the software finds a computer that has the file you want on its hard drive, the download begins.
  • Others using the file-sharing software can obtain files they want from your computer's hard drive.
The file-transfer load is distributed between the computers exchanging files, but file searches and transfers from your computer to others can cause bottlenecks. Some people download files and immediately disconnect without allowing others to obtain files from their system, which is called leeching. This limits the number of computers the software can search for the requested file.
Advantages:
  • Fault tolerance
  • Performance
  • Cost efficiency
Disadvantages:
  • Release of personal information, bundled spyware, and viruses downloaded from the network.
Some of the well known peer-to-peer file sharing programs are Bit Torrent, Shareaza, Limewire, eMule etc. Visit this site for more information regarding peer-to-peer file sharing programs.

Data Structures: Trees


A data structure is an arrangement of data in a computer’s memory (or sometimes on a disk). Data structures include arrays, linked lists, stacks, binary trees, and hash tables, among others.

Tree is an acyclic connected graph where each node has zero or more children nodes and at most one parent node. 

A tree is a non-empty set one element of which is designated the root of the tree while the remaining elements are subtree of the root.

Properties of Tree data structure

Depth: It is the length of the path from the root to that node. It is counted by the number of edges traversed.

Height: It is the longest path from that node to its leaves. The height of a tree is the height of the root.

Leaf node: It has no children. Its only path is up to its parent.

Types of trees

Binary: Each node has zero, one, or two children. This assertion makes many tree operations simple and efficient.

Binary Search: A binary tree where any left child node has a value less than its parent node and any right child node has a value greater than or equal to that of its parent node.

Traversal

Three different methods of traversal are possible for binary trees. They are 'preorder', 'postorder', and 'in-order'. They differ from each other by the order in which they visit the current node, left subtree and right subtree. 

Preorder: Current node, left subtree, right subtree 
Postorder: Left subtree, right subtree, current node 
In-order: Left subtree, current node, right subtree 

Sunday, October 27, 2013

Hacking: Hacker Classification


Computer hacking is modifying computer hardware or software to accomplish a goal outside of the creator’s original purpose. People who engage in computer hacking activities are often called hackers.


Malicious attacks on computer networks are officially known as cracking, while hacking truly applies only to activities having good intentions. Most non-technical people fail to make this distinction, however. It is extremely common to see the term "hack" misused and be applied to cracks as well.

Hacker Classification:

White Hat Hacker (Ethical Hacker): They are paid and working for a Government Agency or Companies to deliberately Hack into their Computer Mainframe to find any potential Weak Points in a Computer's Mainframe, and then figure out how to fix them.

Black Hat Hacker: They are also known as a cracker. They are the type of hacker that has malicious intent whenever he goes about breaking into computer security systems with the use of technology such as a network, phone system, or computer and without authorization. His malevolent purposes can range from all sorts cyber crimes such as piracy, identity theft, credit card fraud, and so. He may or may not utilize questionable tactics such as deploying worms and malicious sites to meet his ends.



Grey Hat Hacker: They are a combination of a black hat and a white hat hacker. A grey hat hacker may surf the internet and hack into a computer system for the sole purpose of notifying the administrator that their system has a security defect, for example. Then they may offer to correct the defect for a fee.

Elite Hacker: Elite hacker is the name utilized by the community with the aim of identifying those individuals who are deemed to be as experts in their line of work. These people are actually on the “cutting edge” of both the computer and network industry (Example:Master of Deception).

Script Kiddie: This is a derogatory term for black hat hackers who use borrowed programs to attack networks and deface websites in an attempt to make names for themselves.

Sunday, October 13, 2013

Open Source: Misconceptions - Free vs. Open Source Software


Open source software is software whose source code is available for modification or enhancement by anyone. Source code is the code which normal users cannot see. Developers can modify this code to change or enhance the functionality of the software. Proprietary software are the other software in which we don’t have access to the source code.

The term 'free' in Free Open Source software refers to freedom, not monetary cost. Though most free open source software is indeed free in price, the term 'free' is referring to the freedom to use the software and source code.

Free vs. Open Source Software:

Free Software was introduced by Richard Stallman in early 1980’s. He started GNU project to avoid dilemma of either denying his neighbor a copy of software/source code, or breaking either copyright or Non-Disclosure Agreement. Free Software is focused on the freedom to share with your neighbor.


Open Source was later introduced by another community. Open Source is focused on effective development using the bazaar model (as described in The Cathedral And The Bazaar).

Free Software:

Free Software is software which users can freely:
  • Run, for any purpose
  • Study and modify for their own needs (requires source code)
  • Redistribute copies (charging for them if they wish)
  • Improve and release the changes to the public (requires source code)

Open Source Software:

The consumer of an open source program has the rights to do the following things to the source code:
  • Read it
  • Use it
  • Modify it
  • Distribute it
  • Charge money for services related to it, such as copying or support, so long as they do not infringe on the freedoms of others
More details about Free Software and Open Source Software are available here.

Misconceptions:



  1. Free means there is no monetary cost
  2. Open Source software is low quality
  3. If the software is free, then who is going to pay you to write it?
  4. Open Source doesn't scale
  5. Open source has no support
  6. Open Source does not generate business revenue
  7. Large-scale development isn't efficient



Sunday, October 6, 2013

Agile: Scrum

Scrum is the best agile software development framework for managing software projects or application development. It based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. 



A key principle of Scrum is its recognition that during a project the customers can change their minds about what they want and that unpredictable challenges cannot be easily addressed in a traditional predictive or planned manner. Therefore we use Scrum which is a iterative agile software development framework.

Roles:

1.   Product Owner: Responsible for ensuring that the Scrum product backlog remains prioritized as more is learned about the system being built, its users, the team and so on.
2.   Development Teams: Responsible for building and demonstrate what they have built. Product Owner decides what to build next based on the demonstration.
3.  Scrum Master: It ensures that the Scrum process is used as intended. The Scrum Master is the enforcer of the rules of Scrum, often chairs key meetings, and challenges the team to improve.

Sprint:


It is the basic unit of Scum development. The duration is fixed in advance for each sprint. Each sprint is preceded by a planning meeting and followed by a review meeting.


Planning Meeting- Tasks for the sprint are identified and an estimated commitment for the sprint goal is made.
Review or Retrospective Meeting- The progress is reviewed and lessons for the next sprint are identified.

Advantages of using Scrum:

1.      Changes said by customers can be easily made.
2.      Bugs and errors can be found easily.
3.      Improved productivity.
4.      Predictable project completion and delivery.