You are on page 1of 59

BIOINFORMATICS & BIOSTASTICS

[Year]

CONTENTS UNIT-I

Scope of computers in current biological research. Basic operations, architecture of computer. Introduction of digital computers. Organization, low level and high level languages, binary number system. The soft side of the computer Different operating systems Windows, Linux. Introduction of programming in C. Introduction to Internet and its applications.
UNIT-II

Introduction to Bioinformatics Genomics and Proteomics. Bioinformatics Online tools and offline tools. Biological databases. Types of data bases Gen bank, Swiss port, EMBL, NCBL, and PDB. Database searching using BLAST and FASTA.
UNIT-III

Multiple sequence alignment and Dynamic programming. Gene and Genome annotation Tools used. Physical map of genomes. Molecular phylogeny - Concept methods of tree construction. Protein secondary structure prediction. Protein 3D structure prediction. Protein docking. Introduction to homology modeling, Computer Aided Drug Design (CADD) in Drug discovery.
UNIT-IV

Brief description and tabulation of data and its graphical representation. Measures of central tendency and dispersion - mean, median, mode, range, standard deviation, variance. Simple linear regression and correlation. Types of errors and level of significance. Tests of significance F & t tests, chisquare tests, ANOVA.

UNIT I
THE EVOLUTION OF COMPUTERS Necessity is the mother of invention. The saying holds true for computers also because computers were invented as a result of mans search for fast and accurate calculating devices.

Fig:1 Abacus The earliest device that qualifies as a digital computer is the abacus also known as soroban. This device permits the users to represent numbers by the position of beads on a rack. Simple addition and subtraction can be carried out rapidly and efficiently by positioning the beads appropriately. Although, the abacus was invented around 600 BC, it is interesting to note that it is still used in the Far East and its users can calculate at amazing speeds. Another manual calculating device was John Napiers bone or cardboard multiplication calculator. It was designed in the early 17 th century and its upgraded versions were in use even around 1890. The first mechanical adding machine was invented by Blaise Pascal in 1642. later, in the year 1671, Baron Gottfired Wilhelm von Leibniz of Germany invented the first calculator for multiplication. Keyboard machines originated in the United States Around this period only, Herman around 1880 and are extensively used even today. media in modern digital computers.

Hollerith came up with the concept of punched cards which are extensively used as input Business machines and calculators made their appearance in Europe and America towards the end of the nineteenth century.

Charles Babbage, a nineteenth century Professor at Cambridge University, is considered to be the father of modern digital computers. During this period, mathematical and statistical tables were prepared by a group of clerks. Even the utmost care and precautions could not eliminate human errors. Babbage had to spend several hours checking these tables. Soon he became dissatisfied and exasperated with this type of monotonous job. The result was that he started thinking to build a machine which could compute tables guaranteed to be error free. In this process, Babbage designed a Difference Engine in the year 1822 which could produce reliable tables. In 1842, Babbage came out with his new idea of Analytical Engine that was intended to be completely automatic. It was to be capable of performing the basic arithmetic functions for any mathematical problem and it was to do so at an average speed of 60 additions per minute. Unfortunately, he was unable to produce a working model of this machine mainly because the precision engineering required to manufacture the machine was not available during that period. However, his efforts established a number of principles which have been shown to be fundamental to the design of any digital computer. We will now discuss about some of the well known early computers. THE MARK I COMPUTER (1937 44) Also known as Automatic Sequence Controlled calculator, this was the first fully automatic calculating machine designed by Howard A. Aiken of Harvard University in collaboration with IBM (International Business Machines) corporation. Its design was based on the techniques already developed for punched card machinery. Although this machine proved to be extremely reliable, it was very complex in design and huge in size. It used over 3000 electrically actuated switches to control its operations and was approximately 50 feet long and 8 feet high. It was capable of

performing five basic arithmetic operations :

addition, subtraction, multiplication,

division, and table reference. A number as big as 23 decimal digits could be used in this machine. It took approximately 0.3 second to add tow numbers and 4.5 seconds for multiplication of two numbers. Hence, the machine was very slow as compared to todays computers. It was basically an electro-mechanical device since both mechanical and electronic components were used in its design. Although its operations were not controlled electronically, Aikens machine is often classified as computer because its instructions, which were entered by means of punched paper tape, could be altered. THE ATANASOFF BERRY COMPUTER (1939 -42) This electronic machine was developed by Dr. John Atanasoff to solve certain mathematical equations. It was called the Atanasoff Berry Computer, or ABC, after its inventors name and his assistant, Clifford Berry. It used 45 vacuum tubes for internal logic and capacitors for storage. THE ENIAC (1943 -46) The Electronic Numerical Integrator and Calculator (ENIAC) was the first all electronic computer. It was constructed at the Moore School of Engineering of the University of Pennsylvania, U.S.A. by a design team lead by Professors J. Presper Eckert and John Mauchly. ENIAC was developed as a result of military need. It took up the wall space in a 20 x 40 square feet room and used 18,000 vacuum tubes. The addition of two numbers was achieved in 200 microseconds, and multiplication in 2000 microseconds. Although, much faster in a speed as compared to Mark I computer, ENIAC had two major shortcomings : it could store and manipulate only a very limited amount of information, and its programs were wired on boards. These limitations made it difficult to detect errors and to change the programs. Hence its use was limited. However, whatever be the shortcoming of ENIAC, it represented an impressive feat of electronic engineering and was used for many years to solve ballistic problems. THE EDVAC (1946 52)

The operation of ENIAC was seriously handicapped by the wiring board. This problem was later overcome by the new concept of stored program developed by Dr. John Von Neumann. The basic idea behind the stored program concept is that a sequence of instructions as well as data can be stored in the memory of the computer for the purpose of automatically directing the flow of operations. The stored program feature considerably influenced the development of modern digital computers and because of this feature we often refer to modern digital computers as stored program digital computers. The Electronic Discrete Variable Automatic Computer (EDVAC) was designed on stored program concept. Von Neumann has also got a share of the credit for introducing the idea of storing both instructions and data in the binary form ( a system that used only two digits 0 & 1 to represent all characters) instead of the decimal numbers or human readable words. THE EDSAC (1947- 49) Almost simultaneously with EDVAC of USA, the Britishers developed the Electronic Delay Storage Automatic Calculator (EDSAC). The machine executed its first program in May 1949. In this machine, addition operation was accomplished in 1500 microseconds, and multiplication operation in 4000 microseconds. The machine was developed by a group of scientists headed by Professor Maurice Wilkes at the Cambridge University. MANCHESTER MARK I (1948) This computer was a small experimental machine based on the stored program concept. It was designed at Manchester University by a group of scientists headed by Professor M.H.A. Newman. Its storage capacity was only 32 words, each of 31 binary digits. This was too limited to store data and instructions. Hence, the Manchester Mark I was hardly of any practical use. THE UNIVAC I (1951) The Universal Automatic Computer (UNIVAC) was the first digital computer which was not one of a kind. Many UNIVAC machines were produced, the first of which was installed in the Census Bureau in 1951 and was used continuously for 10 years. The first business use of a computer, a UNIVAC I, was by General Electric Corporation in 1954. In 1952, the International Business Machines (IBM) Corporation introduced the 701 commercial computer. In rapid succession, improved models of the UNIVAC I and

other 700 series machines were introduced. In 1953, IBM produced the IBM -650 and sold over 1000 of these computers. The commercially available digital computers, that could be used for business and scientific applications, had arrived. COMPUTER FUNDAMENTALS Introduction The word computer comes from the word compute which means to calculate. So a computer is normally considered to be a calculating device that can perform arithmetic operations at enormous speed In fact, the original objective for inventing the computer was to create a fast calculating machine. But more than 80% of the work done by computers today is of nonmathematical or non-numerical nature. Hence, to define a computer merely as calculating device is to ignore over 80% of its work. More accurately, a computer may be defined as a device that operates upon information or data. Data can be anything like bio-data of various applicants when the computer is used for recruiting personnel, or the marks obtained by various students in various subjects when the computer is used to prepare results, or the details (name, age, sex, etc.,) of various passengers when the computer is employed for making airline or railway reservations, or number of different types in case of application of computers for scientific research problems, etc., Thus, data comes in various shapes and sizes depending upon the type of computer application. A computer can store, process and retrieve data as and when desired. The fact that computers process data is so fundamental that many people have started calling it a data processor. The name data processor is more inclusive because modern computers not only compute in the usual sense but also perform other functions with the data flow to and from them. For example, data processors may gather data from various incoming sources, merge (process of mixing or putting together) then all, sort (process of arranging in some sequence ascending or descending) them in the desired order and finally print them in the desired format. None of these operations involve the arithmetic operations

normally associated with a computing device but the term computer is often applied anyway. CHARACTERISTICS OF COMPUTERS 1. Speed: A computer is a very fast device. It can perform in a few seconds the amount of work that a human being can do in an entire year if he worked day and night and did nothing else. To put it in a different manner, a computer does in one minute that would take a man his entire lifetime. While talking about the speed of a computer, we do not talk in terms of seconds or even milliseconds (10-3). Our units of speed are the microseconds (10-6), the nanoseconds (10-9), and even the picoseconds (10-12). A powerful computer is capable of performing about 3 to 4 million simple arithmetic operations per second. 2. Accuracy: The accuracy of a computer is consistently high and the degree of accuracy of a particular computer depends upon its design. But for a particular computer, each and every calculation is performed with the same accuracy. Errors can occur in a computer, but these are mainly due to human rather than technological weaknesses, that is, due to imprecise thinking by the programmer (a person who writes instructions for a computer to solve a particular problem) or due to inaccurate data. 3. Diligence: Unlike human beings, a computer is free from monotony, tiredness, lack of concentration etc., and hence can work for hours together without creating any error and without grumbling. Due to this property, computers obviously score over human beings in doing routine type of jobs which require great accuracy. If ten million calculations have to be performed, a computer will perform the ten millionth calculation with exactly the same accuracy and speed as the first one. 4. Versatility: Versatility is one of the most wonderful things about the computer. One moment, it is preparing the results of particular examination, the next moment it is busy preparing electricity bills, and in between, it may be helping an office secretary to trace an

important letter in seconds. All that is required to change its talent is to slip in a new program ( a sequence of instructions for the computer) into it. Briefly, a computer is capable of performing almost any task provided that the task can be reduced to a series of logical steps. 5. Power of Remembering: As a human being acquires new knowledge, the brain subconsciously selects what it feels to be important and worth retaining in its memory, and relegates unimportant details to the back of the mind or just forgets them. With computers, this is not the case. A computer can store and recall any amount of information because of its secondary storage (a type of detachable memory) capability. Every piece of information can be retained as long as desired by the user and can be recalled as and when required. Even after several years, the information recalled will be as accurate as on the day when it was fed to the computer. A computer forgets or looses certain information only when it is asked to do so. So it is entirely up to the user to make a computer retain or forget a particular information. 6. No. I.Q. A computer is not a magical device. It can only perform tasks that a human being can. The difference is that it performs these tasks with unthinkable speed and accuracy. It possesses no intelligence of its own. Its I.Q. is zero, at least till today. It has to be told what to do and in what sequence. Hence, only the user can determine what tasks a computer will perform. A computer cannot take its own decision in this regard. 7. No Feelings: Computers are devoid of emotions. They have no feelings and no instincts

because they are machine. Although men have succeeded in building a memory for the computer, but no computer possesses the equivalent of a human heart and soul. Based on our feelings, taste, knowledge and experience, we often make certain judgements in our day to day life. But computers cannot make such judgements on their own. Their judgement is based on the instructions given to them in the form of programs that are written by us. They are only as good as man makes and uses them. COMPUTER GENERATIONS Generation in computer talk is a step in technology. It provides a framework for the growth of the computer industry. Originally, the term generation was used to distinguish between varying hardware technologies. But nowadays, it has been extended

to include both the hardware and the software which together make up an entire computer system. The custom of referring to the computer era in terms of generations came into wide use only after 1964. There are totally five computer generations known till today. Each generation has been discussed below in detail along with their advantages and disadvantages. Although there is a certain amount of overlapping between the generations, the approximate dates shown against each are normally accepted. FIRST GENERATION (1942 1955)

We have already discussed about some of the early computers ENIAC, EDVAC, EDSAC, etc., These machines and other of their time were made possible by the invention of vacuum tube which was a fragile glass device that could control and amplify electronic signals. generation computers. Advantages 1. 2. 3. Vacuum tubes were the only those days. Vacuum tube technology made possible the advent of electronic digital computers. These computers were the fastest calculating device of their time. They could perform computations in milliseconds. Disadvantages 1. 2. 3. 4. 5. 6. 7. Too bulky in size Unreliable Thousands of vacuum tubes that were used emitted large amount of heat and burnt out frequently. Air conditioning required Prone to frequent hardware failures Constant maintenance required Nonportable electronic components available during These vacuum tube computers are referred to as first

8. 9. 10.

Manual assembly of individual components into functioning unit required Commercial production was difficult and costly Limited commercial use

SECOND GENERATION (1955 1964)

The transistor, a smaller and more reliable successor to the vacuum tube, was invented in 1947. However, computers that used transistors were not produced in quantity until over a decade later. The second generation emerged with transistors being the brain of the computer. With both the first and the second generation computers, the basic component was a discrete or separate entity. The many thousands of individual components had to be The manual assembly of individual assembled by hand into functioning circuits. production of these computers difficult and costly. 1. 2. 3. 4. 5. 6. 7. Smaller in size as compared to first generation computers More reliable Less heat generated These computers were able to reduce computational times from milliseconds to microseconds. Less prone to hardware failures Better portability Wider commercial use

components and the cost of labour involved at this assembly stage made the commercial

Disadvantages 1. 2. 3. 4. Air-conditioning required Frequent maintenance required Manual assembly of individual components into a functioning unit was required. Commercial production was difficult and costly.

THIRD GENERATION (1964 1975)

Advances

in

electronics

technology

continued

and

the

advent

of

microelectronics technology made it possible to integrate large number of circuit elements inot very small (less than 5mm square) surface of silicon known as chips.. This new technology was called integrated circuits (ICs). The third generation was based on IC technology and the computers that were designed with the use of integrated circuits were called third generation computers. Advantages 1. 2. 3. 4. 5. 6. 7. 8. 9. Smaller in size as compared to previous generation computers. Even more reliable than second generation computers. Even lower heat generated than second generation computers. These computers were able to reduce computational times from microseconds to nanoseconds. Maintenance cost is low because hardware failures are rare. Easily portable. Totally general purpose. Widely used for various commercial applications all over the world. Less power requirement than previous generation computers. Manual assembly of individual components into a functioning unit not required. So human labour and cost involved at assembly stage reduced drastically. 10. Commercial production was easier and cheaper.

Disadvantages 1. 2. Air-conditioning required in many cases. Highly sophisticated technology required for the manufacture of IC chips.

FOURTH GENERATION (1975 onwards)

Initially, the integrated circuits contained only about ten to twenty components. This technology was named small scale integration (SSI). Later, with the advancement in technology for manufacturing ICs, it became possible to integrate upto a hundred components on a single chip. This technology came to be known as medium scale integration (MSI). Then came the era of large scale integration (LSI) when it was possible to integrate over 30,000 components onto a single chip. Effort is still on for further miniaturizing and it is expected that more than one million components will be integrated on a single chip known as very large scale integration. (VLSI). A fourth generation computer, which is what we have now, has LSI chips as its brain. It is LSI technology which has led to the development of very small but extremely powerful computers. It was the start of a social revolution. A whole computer circuit was soon available on a single chip, the size of a postage stamp. Overnight computers became incredibly compact. They became inexpensive to make and suddenly it became possible for anyone and everyone to own a computer. Advantages 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Smallest in size because of high component density. Very reliable. Heat generated is negligible. No air conditioning required in most cases. Much faster in computation than previous generations Hardware failure is negligible and hence minimal maintenance is required. Easily portable because of their small size. Totally general purpose Minimal labour and cost involved at assembly stage. Cheapest among all generations.

Disadvantages

1.

Highly sophisticated technology required for the manufacture of LSI chips.

FIFTH GENERATION (YET TO COME) Scientists are now at work on the fifth generation computers a promise, but not yet a reality. They aim to bring us machines with genuine I.Q., the ability to reason logically, and with real knowledge of the world. Thus, unlike, the last four generations which naturally followed its predecessors, the fifth generation will be totally different, totally novel, totally new. In structure it will be parallel (the present ones are serial) and will be able to do multiple tasks simultaneously. In functions it will not be algorithmetic (step by step,, with one step at a time). In nature, it will not do just data processing (number crunching) but knowledge processing. In inference, it will not be merely deductive, but also inductive. In application, it will behave like an expert. In language (unlike BASIC, COBOL, FORTRAN, etc., which present computers need). And in architecture, it will have KIPS (Knowledge Information Processing System) rather than the present DIPS/LIPS (Data /Logic Information Processing System).

The odds of coming out with a fifth generation computer are heaviest for Japan. They have already started wok in this direction few years back. Japan has chosen the PROLOG (Programming in Logic) language as its operating software and plans to have the final machine talk with human beings, see and deliver pictures and hear the normal, natural language.

BASIC COMPUTER ORGANIZATION All computer systems perform the following five basic operations: 1. Inputting :

The process of entering data and instructions into the computer system. 2. Storing: Saving data and instructions so that they are available for initial or for additional processing as and when required.

3.

Processing

Performing arithmetic operations or logical operations (comparisons like equal to, less than, greater than, etc.,) on data in order to convert them into useful information. 4. Outputting: The process of producing useful information or results for the user, such as a printed report or visual display. 5. Controlling : Directing the manner and sequence in which all of the above operations are performed. The goal of this chapter is to familiarize you with the computer system units that perform these functions. This chapter will provide you with an overview of computer systems as they are viewed by computer system architects. The internal architectural design of computers differs from one system model to another. However, the basic organization remains the same for all computer systems. A block diagram of the basic computer organization is shown in Fig. 2.1. In this figure, the solid lines are used to indicate the flow of instruction and data, and the dotted lines represent the control exercised by the control unit. It displays the five major building blocks, or functional units, of a digital computer system. These five units correspond to the five basic operations performed by all computer systems. The function of each of these units is described below: INPUT UNIT Data and instructions must enter the computer system before any computation can be performed on the supplied data. This task is performed by the input unit that links the external environment with the computer system. Data and instructions enter input units in forms that depend upon the particular device used. For example, data is entered from a keyboard in a manner similar to typing, and this differs from the way in which data is entered through a card reader which is another type of input device. However, regardless of the form in which they receive their inputs, all input devices must provide a computer with data that are transformed into the binary codes that the primary memory of a computer is designed to accept. This transformation is accomplished by units called

input interfaces. Input interfaces are designed to match the unique physical or electrical characteristics of input devices to the requirements of the computer system. In short, the following functions are performed by an input unit: 1. 2. 3. It accepts (or reads) the list of instructions and data from the outside world. It converts these instructions and data in computer acceptable form. It supplies the converted instructions and data to the computer system for further processing. OUTPUT UNIT The job of an output unit is just the reverse of that of an input unit. It supplies information and results of computation to the outside world. Thus it links the computer with the external environment. As computers work with binary code, the results This task is produced are also in the binary form. Hence, before supplying the results to the outside world, it must be converted to human acceptable (readable form). accomplished by units called output interfaces. Output interfaces are designed to match the unique physical or electrical characteristics of output devices (terminals, printers, etc.,) to the requirements of the external environment. In short, the following functions are performed by an output unit: 1. 2. 3. It accepts the results produced by the computer which are in coded form and hence cannot be easily understood by us. It converts these coded results to human acceptable (readable) form. It supplies the converted results to the outside world.

Storage unit The data and instructions that are entered into the computer system through input units have to be stored inside the computer before the actual processing starts. Similarly, the results produced by the computer system before being passed on to the output units. Moreover, the intermediate results produced by the computer must also be preserved for ongoing processing. The storage unit or the primary / main storage of a computer system is designed to cater to all these needs. It provides space for storing data and instructions, space for intermediate results, and also space for the final results. In short, the specific functions of the storage unit are to hold (store): 1. 2. All the data to be processed and the instructions required for processing (received from input devices). Intermediate results of processing.

3.

Final results of processing before these results are released to an output device.

ARITHMETIC LOGIC UNIT The arithmetic logic unit (ALU) of a computer system is the place where the actual execution of the instructions takes place during the processing operation. To be more precise, all calculations are performed and all comparisons (decisions) are made in the ALU. The data and instructions, stored in the primary storage prior to processing, are transferred as and when needed to the ALU where processing takes place. No processing is done in the primary storage unit. Intermediate results generated in the ALU are temporarily transferred back to the primary storage until needed at a later time. Data may thus move from primary storage to ALU and back again to storage many times before the processing is over. After the completion of processing, the final results which are stored in the storage unit are released to an output device. The type and number of arithmetic and logic operations that a computer can perform is determined by the engineering design of the ALU. However, almost all ALUs are designed to perform the four basic arithmetic operations add, subtract, multiply, divide and logic operations or comparisons such as less than, equal to, or greater than. CONTROL UNIT How does the input device know that it is time for it to feed data into the storage unit? How does the ALU know what should be done with the data once they are received? And how is it that only the final results are sent to the output device and not the intermediate results? All this is possible because of the control unit of the computer system. By selecting, interpreting and seeing to the execution of the program instructions, the control unit is able to maintain order and direct the operation of the entire system. Although, it does not perform any actual processing on the data, the control unit acts as a central nervous system for the other components of the computer. It manages and coordinates the entire computer system. It obtains instructions from the program stored in the main memory, interprets the instructions, and issues signals that cause other units of the system to execute them. CENTRAL PROCESSING UNIT

The control unit and the arithmetic logic unit of a computer system are jointly known as the Central Processing Unit (CPU). The CPU is the brain of any computer system. In a human body, all major decision are taken by the brain and the other parts of the body function as directed by the brain. Similarly, in a computer system, all major calculations and comparisons are made inside the CPU and the CPU is also responsible for activating and controlling the operations of other units of a computer system. THE SYSTEM CONCEPT You might have observed by now that we have been referring to a computer as a system (computer system). What can be the reason behind this? To know the answer let us first consider the definition of a system. A system is a group of integrated parts that have the common purpose of achieving some objective(s). So, the following three characteristics are key to a system: 1. 2. 3. A system has more than one element. All the elements of a system are logically related. All the elements of a system are controlled in such a way that the system goal is achieved. Since a computer is made up of integrated components (input and output devices, storage, CPU) that work together to perform the steps called for in the program being executed, it is a system. The input or output units cannot function until they receive signals from the CPU. Similarly, the storage unit or the CPU alone is of no use. So the usefulness of each unit depends on other units and can be realized only when all units are put together (integrated) to form a system.

COMPUTER LANGUAGES This chapter continues the development of computer programs that was begun in chapter 11. after the programming analysis phase, discussed in the previous chapter has been completed, the second step in the development of computer programs is to write the specific instructions, needed to process an application into a language and form acceptable to a computer system. The process of writing such program instructions for an analysed problem is called coding. In this chapter, we will see how the logical steps of our program plan will be coded as program instructions. The goal of this chapter is to introduce some of the common computer languages used in writing computer programs.

ANALOGY WITH NATURAL LANGUAGES A language is a system of communication. With our natural language such as

English, we communicate to one another our ideas and emotions. Similarly, a computer language is a means of communication used to communicate between people and the computer. With the help of a computer language, a programmer tells a computer what he wants it to do. All natural languages (English, French, German etc.,) use a standard set of symbols for the purpose of communication. These symbols are understood by everyone using that language. We normally call this set of symbols the vocabulary of that particular language. For example, the words we use in English are the symbols of English language that make up its vocabulary. Each word had definite meaning which can be looked up in a dictionary. In a similar manner, all computer languages have a vocabulary of their own. Each symbol of the vocabulary has definite unambiguous Hence, each meaning which can be looked up in the manual meant for that language.

symbol of a computer language is that natural languages have a large vocabulary but most computer languages use a very limited or restricted vocabulary. This is mainly because a programming language by its very nature and purpose does not need to say too much. Each and every problem to be solved by a computer has to be broken down into discrete (simple and separate), logical steps which basically comprise of four fundamental operations input and output operations, arithmetic operations, movement of information within the CPU, and logical or comparison operations. Each natural language has a systematic method of using symbols of that language. In English, this method is given by the rules of grammar. These rules tell us which words to use and how to use them. Similarly, the symbols of a particular computer language must also be used as per set rules which are known as the syntax rules of the language. In case of a natural language, people can use poor or incorrect vocabulary and grammar and still make themselves understood. However, computers, being a machine are receptive only to exact vocabulary used correctly as per syntax rules of the language being used. Thus in case of a computer language, we must stick by the exact rules of the language if we want to be understood by the computer. As yet, no computer is capable of correcting and deducing meaning from incorrect instructions. Computer languages are smaller and simpler than natural languages but they have to be used with great precision. Unless a programmer adheres exactly to the syntax rules of a programming language, even down to the correct punctuation marks, his commands will not be understood by the computer.

Programming languages have improved throughout the years, just as computer hardware has improved. They have progressed from machine oriented languages that use strings of binary 1s and 0s problem oriented languages that use common mathematical and /or English terms. However, all computer languages can be classified in the following three broad categories: (a) (b) (c) Machine language Assembly Language High Level Language

We shall now examine the evolution and nature of each type of language. MACHINE LANGUAGE Although computers can be programmed to understand many different computer languages, there is only one language understood by the computer without using a translation program. This language is called the machine language or the machine code of the computer. Machine code is the fundamental language of a computer and is normally written as strings of binary 1s and 0s. The circuitry of a computer is wired in such a way that it immediately recognizes the machine language and converts it into the electrical signals needed to run the computer. An instruction prepared in any machine language has a two-part. The first part is the command or operation, and it tells the computer what function to perform. Every computer has an operation code or opcode for each of its functions. The second part of the instruction is the operand, and it tells the computer where to find or store the data or other instructions that are to be manipulated. Thus, each instruction tells the control unit of the CPU what to do and the length and location of the data fields that are involved in the operation. Typical operations involve reading, adding, subtracting, writing and so on. OPCODE (operation code) OPERAND (Address/location)

We, already know that all computers use binary digits (0 and 1s) for performing internal operations. Hence, most computers machine language consists of strings of binary numbers and is the only one of the CPU directly understands. When stored inside the computer, the symbols which make up the machine language program are made up of

1s and 0s. For example, a typical program instruction to print out a number on the printer might be 101100111111010011101100 The program to add two numbers in memory and print the result look something like the following; 001000000000001100111001 001100000000010000100001 101000111111011100101110 101000111111011100101110 000000000000000000000000 This is obviously not a very easy language to learn, partly because it is difficult to read and partly because it is written in a number system with which we are not familiar. But it will be surprising to note that some of the first programmer, who worked with the first few computer, actually wrote their programs in binary from as above. Since human programmers are more familiar with the decimal number system, most of them preferred to write the computer instructions in decimal, and leave the input device to convert these to binary. In fact, without too much effort, a computer can be wired so that instead of using long string of 1s and 0s we can use the more familiar decimal numbers. With this change, the preceding program appears as follows: 10001471 14002041 30003456 50773456 00000000 The set of instruction codes, whether in binary or decimal, which can be directly understood by the CPU of a computer without the help of a translating program, is called a machine code or machine language. Thus, a machine language program need not necessarily be coded as strings of binary digits (1s and 0s). It can also be written using decimal digits if the circuitry of the computer being used permits this. Advantages and Limitations of Machine Language Programs written in machine language can be executed very fast by the computer. This is mainly because machine instructions are directly understood by the CPU and no translation of the program is required. However, writing a program in machine language has several disadvantages which are discussed below. 1. Machine dependent:

Because the internal design of every type of computer is different from every other type of computer and needs different electrical signals to operate, the machine language also is different from computer to computer. It is determined by the actual design or construction of the ALU, the control unit and the size as well as the word length of the memory unit. Hence, suppose after becoming proficient in the machine code of a particular computer, a company decides to change to another computer, the programmer may be required to learn a new machine language and would have to rewrite all the existing programs. 2. Difficult to program: Although easily used by the computer, machine language is difficult to program. It is necessary for the programmer either to memorize the dozens of code numbers for the commands in the machines instruction set or to constantly refer to a reference card. A programmer is also forced to keep track of the storage location of data and instructions. Moreover, a machine language programmer must be an expert who knows about the hardware structure of the computer. 3. Error prone: For writing programs in machine language, since a programmer has to remember the opcodes and he must also keep track of the storage location of data and instructions, it becomes very difficult for him to concentrate fully on the logic of the problem. This frequently results in program errors. Hence, it is easy to make errors while using machine code. 4. Difficult to modify: It is difficult to correct or modify machine language programs. Checking machine instructions to locate errors is about as tedious as writing them initially. Similarly, modifying a machine language program at a later date is so difficult that many programmers would prefer to code the new logic afresh instead of incorporating the necessary modifications in the old program. In short, writing a program in machine language is so difficult and time consuming that is rarely used today. ASSEMBLY LANGUAGE One of the first steps in improving the program preparation process was to substitute letter symbols-mnemonics for the numeric operation codes of machine

language. A mnemonic (or memory aid) is any kind of mental trick we use to help us remember. Mnemonics come in various shapes and sizes, all of them useful in their own way. For example, a computer may be designed to interpret the machine code of 1111 (binary) or 15 (decimal) as the operation subtract but it is easier for a human being to remember it as SUB. Use of symbols instead of numeric OP codes All computers have the power of handling letters as well as numbers. Hence, a computer can be taught to recognize certain combination of letters or numbers. It can be taught ( by means of a program) to substitute the number 14 every time it sees the symbol ADD, substitute the number 5 every time it sees the symbol SUB, and so forth. In this way, the computer can be trained to translate a program written with symbols instead of numbers into the computers own machine language. Then we can write a program for the computer using symbols instead of numbers and have the computer do its own translating. This makes it easier for the programmer, because he can use letters, symbols and mnemonics instead of numbers for writing the programs. For example, the preceding program that was written in machine language for adding two numbers and printing out the result could be written in the following way: CLA ADD STA TYP HLT A B C C

Which could mean take A, add B, store the result in C, type C and halt. The computer, by means of a translating program, would translate each line of this program, would translate each line of this program into the corresponding machine language program. At this point we must learn a few more terms. The language which substitutes letters and symbols for the numbers in the machine language program is called an assembly language or symbolic language. A program written in symbolic language that uses symbolic language that uses symbols instead of numbers is called an assembly code or a symbolic program. The translator program that translates an assembly code into the computers machine code is called an assembler. The assembler is a system program which is supplied by the computer manufacturer. It is written by system programmers with great care. It is so called because in addition to translating the assembly code into machine code, it also assembles the machine code in the main memory of the computer and makes it ready for execution. A symbolic program written by a programmer is

assembly language is called a source program. After the source program has been converted into machine language by an assembler, it is referred to as an object program. Since the assembler translates each assembly language instruction into an equivalent machine language instruction, there is a one to one correspondence between the assembly instructions of source program and the machine instructions of object program. By now, it must have been clear to the readers that when we write a program in symbolic language, we first run the assemble (program) to assemble the symbolic program into machine language, and then we run the machine language program to get our answer. You will notice that this means more time spent by the computer it not only has to run the main program to get the answer, but it also must first translate the original symbolic program into machine language. But symbolic programming saves so much time and effort of the programmer that the extra time spent by the computer is worth it. To see how symbolic programming works, let us first write a short machine language program and then see how we would write the same program in assembly language. For this, let us assume that the computer uses the following mnemonics for the operation codes mentioned against each. For simplicity, here we have considered only five operation codes that will be used in writing our program. Like this there can be more than hundred operation codes available with a particular computer.

Mnemonic HLT CLA ADD SUB STA

OP Code 00 10 14 15 30

Meaning Halt, used at end of program to stop Clear and Add into A register Add to the contents of A register Subtract from contents of A register Store A register

The program we will write is quite simple : adding two numbers and storing the sum. The regular machine language program fro this will be as follows: Memory Location 0000 0001 0002 Contents OP Code Address 10 1000 14 1001 30 1002 Comments Clear & add first number to A register Add second number to the contents of the register Store the answer from A register

0003 1000 1001 1002

00

Halt

Reserved for first number Reserved for second number Reserved for answer

It has been assumed here that the computer is capable of handling decimal numbers instead of only binary numbers. The numbers to be added are stored in memory locations 1000 and 1001, and the answer obtained after adding the two numbers is to be stored in location 1002. The first instruction at location 0000 clears (makes zero) that A register (accumulator) and puts the contents of location 1000 (first number) in it. The second machine instruction at location 0001 adds the contents of location 1001 (second number) to the contents of A register (first number) and stores the sum in A register. The third instruction at location 0002 stores the answer from A register into memory location 1002. Finally, the fourth machine instruction at location 0003 stops the execution of the program. Now we will see how to write the same program in assembly language. We can easily replace the op-code in each of the preceding instructions by the corresponding mnemonic and write the program as given below instead and let the computer handle the rest. INTRODUCTION OF DIGITAL COMPUTERS:The word Micro is used very commonly in our daily life. Example, you have microscopes, microphones, microwaves etc. In computer terminology we have microprocessors, microcomputers, microprogramming, microcodes etc., some of which, you must be already familiar with. A Microprocessor is a complete CPU on a single chip and a Microcomputer is a computer whose CPU is a microprocessor. With the advent of distributed processing where the emphasis is not on a single mainframe system, with a lot of users tied to it, but on a lot of user stations, consisting of independently functioning units with their own CPU, RAM, ROM and probably a magnetic or optical disk memory, the study of microcomputers has become even more important.

The main components of a microcomputer

like any other type of a computer, consist of the Central Processing Unit (CPU), Memory, some I/O ports / modules and buses. We will discuss about each of the components briefly. Input / Output Unit:-

Whenever you sit in front of a computer, you see mainly three components. The keyboard, with the help of which you give commands to the computer, an enclosed cabinet which consists of CPU etc., and which interprets your commands, executes them, and later displays the result on the monitor. The keyboard and the monitor are some of the I/O devices that you commonly come across. Of course, in addition of these two, you have a hard disk, and /or a floppy diskette in which you store your programs, a printer through which you take a printout of your program or results, and a lot of other I/O

devices. All these I/O devices talk with the CPU through I/O Ports. The Input / Output Unit mainly consists of these ports. These are two kinds of ports: (a) (b) Serial Ports Parallel Ports

The best example of a Parallel Port is the connection used on most printers, called Centronics Parallel Interface. This interface has become an industry standard, consisting of both standard sized connector and specific meanings for each pin. The term parallel implies that all 8 bits of data are sent to the printer simultaneously, rather than 1 bit at a time.

Serial Port, a serial communication channel, connects a mouse, a modem or any other serial device to the computer system. It sends data bits one at a time, rather than in parallel. RS-232C is a standard serial interface used with PCs. Memory Unit

One of the data has been inputted from an input device, it needs to be stored in Memory. Memory can be broadly divided into two categories. Main or Primary memory Secondary memory Primary or main memory contains information which is currently been acted upon. This is the memory the microcomputer uses in executing and storing programs. The Read / Write memory and ROM are general categories of primary memory. They include several types of memory as follows: 1. RAM Memory:It is also popularly known as Random Access Memory, or RAM. This memory is volatile, i.e. the contents of the memory are lost as soon as the power is turned off. There are two types of RAMs available static RAM and dynamic RAM. Static RAM stores a bit as voltage, while dynamic RAMs store them as charge. The advantage of dynamic RAMs is their high density and fast speed. The disadvantage, however is, that they need to be refreshed after certain time. This gives an edge to static memories, as they are more stable and therefore, dont need to be refreshed. 2. ROM:As this memory cannot be easily programmed, it for all practical reasons is called Read Only Memory, hence the name. It is not-volatile, meaning its contents are not lost even after the power is switched off. Therefore, this memory

is also used for storing some of the crucial information about the system, including the initial portion of the boot program. Central Processing Unit:-

Central Processing Unit, or CPU as it is called in short, is the brain of any computer system. The CPU of the computer consists of various registers to store data, the Arithmetic / Logic Unit, ALU, to perform arithmetic and logical computations, instructions decoders, counters and control lines. The CPU reads instructions from the memory, decodes them, and executes them, with the help of its various components. The CPU also controls the functioning of the various other units of the system, like memory unit, I/O unit, and other interfacing units, synchronizing their operations with the help of its clock and other control circuitry, called the control unit. Buses:Buses are a set of wires, connecting various parts of the computer, internally and externally. They are used to send the data in the form of voltages. This data could be the address of the memory location that need to be accessed, or its contents or even the control signals, indicating the type of operation to be performed on the memory. Based on the type of information they are carrying, the buses are classified into three types: address bus, data bus and control bus. The bus could be used to send information from the CPU to one of the memory chips or some I/O device, or vice-versa, or even in both the directions, i.e. from the CPU to the memory of I/O device and vice-versa. The former are called Unidirectional buses, while the latter are called as Bidirectional. 1. Address bus:This bus is used by the CPU to send the address of the memory chip or the I/O port that needs to be accessed. As most of the times it is the CPU that is generating the addresses, this bus is said to be unidirectional. The size of the address bus determines the number of memory locations that can be directly accessed / or addressed. A bus of n lines can address upto 2n locations directly. Example : 8085 microprocessor with address bus equal to 16 bits can access upto 216 bytes directly.

8086 microprocessor with 20 bits address bus can access upto 220 , or 1M bytes directly. 2. Data bus: This bus is used to send data to and from memory or I/O devices to CPU. Data bus could be 8,16,32 or even 64 bits wide. Normally, a microprocessor is said to be of n bits if the size of its data bus is n bits. This bus is Bidirectional, as the data travels in both the directions. From the memory or I/O device to the CPU, and is aid to being written, if it traveling from the CPU to the memory or I/O device. Any device connected to the data bus must have three state outputs, so that its outputs can be disabled when it is not being used to put data on the data bus. 3. Control bus: Control bus contains various control signals that are sued to control various devices connected to the CPU. The control signals vary from the microprocessor to the microprocessor. They are designed keeping in mind the design philosophy of the microprocessor and the requirements of the various devices connected to the CPU. Some of the common control signals are MEMORY READ (MEMR), MEMORY WRITE (MEMW), I/O READ (IOR), I/O WRITE (IOW) etc., Here you see an addre2ss bus, a data bus, and a set of control signals, which can be put together and called a control bus. To these buses are connected a CPU, some memory chips, and some I/O device. Now let us assume, the CPU wants to read a data byte from the memory location 100 and write it to the device, whose port address, is say, 20. The CPU first puts 100, the address of the memory location that needs to accessed onto the address bus. Next it generates the MEMR control signal. The byte from the corresponding memory location is read into one of the CPU registers. In the next clock cycle, the CPU puts the address of the port, 20, on to the address bus. This selects the particular port and activates it. CPU then generates the IOW (I/O write) control signal and puts the data byte to be written on to the data bus. Please note that in the above example, the addressees were being generated only from the CPU, and were being used to select either the memory location or and I/O device. On the data bus, once the data byte was being read from the memory on to the CPU, and at a later instance, was being written from the CPU to the I/O device. Thus, we can say that the data on the data bus can travel in either direction. Similarly, for the control signals, the signals can be from the CPU to the peripherals or vice-versa.

Operating system
An operating system is software, consisting of programs and data, that runs on computers, manages computer hardware resources, and provides common services for execution of various application software. The operating system is the most important

type of system software in a computer system. Without an operating system, a user cannot run an application program on their computer, unless the application program is self booting. For hardware functions such as input and output and memory allocation, the operating system acts as an intermediary between application programs and the computer hardware]although the application code is usually executed directly by the hardware and will frequently call the OS or be interrupted by it. Operating systems are found on almost any device that contains a computerfrom cellular phones andvideo game consoles to supercomputers and web servers. Examples of popular modern operating systems are: BSD, Linux (Ubuntu, Fedora, OpenSuSE, Debianetc.), Mac OS X, Microsoft Windows and UNIX.

Types:Real-time:A real-time operating system is a multitasking operating system that aims at executing real-time applications. Real-time operating systems often use specialized scheduling algorithms so that they can achieve a deterministic nature of behavior. The main object of real-time operating systems is their quick and predictable response to events. They have an event-driven or time-sharing design and often aspects of both. An event-driven system switches between tasks based on their priorities or external events while time-sharing operating systems switch tasks based on clock interrupts. Multi-user vs. Single-user:A multi-user operating system allows multiple users to access a computer system concurrently. Time-sharing system can be classified as multi-user systems as they enable a multiple user access to a computer through the sharing of time. Singleuser operating systems, as opposed to a multi-user operating system, are usable by a single user at a time. Being able to have multiple accounts on a Windows operating system does not make it a multi-user system. Rather, only the network administrator is the real user. But for a Unix-like operating system, it is possible for two users to login at a time and this capability of the OS makes it a multi-user operating system. Multi-tasking vs. Single-tasking:When a single program is allowed to run at a time, the system is grouped under a single-tasking system, while in case the operating system allows the execution of multiple tasks at one time, it is classified as a multi-tasking operating system. Multi-tasking can be of two types namely, pre-emptive or co-operative. In preemptive multitasking, the operating system slices the CPU time and dedicates one slot to each of the programs. Unix-like operating systems such as Solaris and Linux support pre-emptive multitasking. Cooperative multitasking is achieved by

relying on each process to give time to the other processes in a defined manner. MS Windows prior to Windows 95 used to support cooperative multitasking. Distributed:A distributed operating system manages a group of independent computers and makes them appear to be a single computer. The development of networked computers that could be linked and communicate with each other, gave rise to distributed computing. Distributed computations are carried out on more than one machine. When computers in a group work in cooperation, they make a distributed system. Embedded:Embedded operating systems are designed to be used in embedded computer systems. They are designed to operate on small machines like PDAs with less autonomy. They are able to operate with a limited number of resources. They are very compact and extremely efficient by design. Windows CE and Minix 3 are some examples of embedded operating systems.

Windows:-

The Windows family tree. Microsoft has taken two parallel routes in its operating systems. One route has been for the home user and the other has been for the professional IT user. The dual routes have generally led to home versions having greater multimedia support and less functionality in networking and security, and professional versions having inferior multimedia support and better networking and security. The first version of Microsoft Windows, version 1.0, released in November 1985, lacked a degree of functionality and achieved little popularity, and was to compete with Apples own operating system.[citation needed] Windows 1.0 is not a complete operating system; rather, it extends MS-DOS. Microsoft Windows version 2.0 was released in November 1987 and was slightly more popular than its predecessor. Windows 2.03 (release date January

1988) had changed the OS from tiled windows to overlapping windows. The result of this change led to Apple Computer filing a suit against Microsoft alleging infringement on Apple's copyrights. Microsoft Windows version 3.0, released in 1990, was the first Microsoft Windows version to achieve broad commercial success, selling 2 million copies in the first six months.[12][13] It featured improvements to the user interface and to multitasking capabilities. It received a facelift in Windows 3.1, made generally available on March 1, 1992. Windows 3.1 support ended on December 31, 2001. In July 1993, Microsoft released Windows NT based on a new kernel. Windows NT 3.1 was the first release of Windows NT. NT was considered to be the professional OS and was the first Windows version to utilize preemptive multitasking.[citation needed] Windows NT would later be retooled to also function as a home operating system, with Windows XP. On August 24, 1995, Microsoft released Windows 95, a new, and major, consumer version that made further changes to the user interface, and also used preemptive multitasking. Windows 95 was designed to replace not only Windows 3.1, but also Windows for Workgroups, and MS-DOS. It was also the first Windows operating system to use Plug and Play capabilities. The changes Windows 95 brought to the desktop were revolutionary, as opposed to evolutionary, such as those in Windows 98 and Windows Me. Mainstream support for Windows 95 ended on December 31, 2000 and extended support for Windows 95 ended on December 31, 2001. The next in the consumer line was Microsoft Windows 98 released on June 25, 1998. It was followed with the release of Windows 98 Second Edition (Windows 98 SE) in 1999. Mainstream support for Windows 98 ended on June 30, 2002 and extended support for Windows 98 ended on July 11, 2006. As part of its "professional" line, Microsoft released Windows 2000 in February 2000. During 2004 part of the Source Code for Windows 2000 was leaked onto the Internet. This was bad for Microsoft as the same kernel used in Windows 2000 was used in Windows XP. The consumer version following Windows 98 was Windows Me (Windows Millennium Edition). Released in September 2000, Windows Me implemented a number of new technologies for Microsoft: most notably publicized was "Universal Plug and Play". Windows Me was heavily criticized due to slowness,freezes and hardware problems. In October 2001, Microsoft released Windows XP, a version built on the Windows NT kernel that also retained the consumer-oriented usability of Windows 95 and its successors. This new version was widely praised in computer magazines. It shipped in two distinct editions, "Home" and "Professional", the former lacking many of the superior security and networking features of the Professional edition. Additionally, the first "Media Center" edition was released in 2002, with an emphasis on support for DVD and TV functionality including program recording and a remote control. Mainstream support for Windows XP ended on April 14, 2009. Extended support will continue until April 8, 2014.

In April 2003, Windows Server 2003 was introduced, replacing the Windows 2000 line of server products with a number of new features and a strong focus on security; this was followed in December 2005 by Windows Server 2003 R2. On January 30, 2007, Microsoft released Windows Vista. It contains a number of new features, from a redesigned shell and user interface to significant technical changes, with a particular focus on security features. It is available in a number of different editions, and has been subject tosome criticism. On October 22, 2009, Microsoft released Windows 7. Unlike its predecessor, Windows Vista, which introduced a large number of new features, Windows 7 was intended to be a more focused, incremental upgrade to the Windows line, with the goal of being compatible with applications and hardware which Windows Vista was not at the time. Windows 7 has multi-touch support, a redesigned Windows shell with a new taskbar, referred to as the Superbar, a home networking system called HomeGroup and performance improvements. Usage share Main article: Usage share of operating systems Source Net Market Share[27] W3Counter[28] Global Stats[29] StatOwl[30] W3Schools[31]

Date

May 2011

May 2011

May 2011 May 2011

May 2011

All versions

88.67%

80.01%

91.58%

86.38%

85.2%

Windows XP

52.41%

37.76%

45.83%

38.25%

40.7%

Windows 7

25.89%

30.44%

33.22%

30.61%

36.5%

Windows Vista

9.93%

11.67%

12.53%

16.16%

7.1%

Windows Server 2003

0.21%

1.16%

0.9%

Windows 2000

0.2%

0.14%

0.2%

Windows 98 Security

0.03%

Consumer versions of Windows were originally designed for ease-of-use on a single-user PC without a network connection, and did not have security features built in from the

outset. However, Windows NT and its successors are designed for security (including on a network) and multi-user PCs, but were not initially designed with Internet security in mind as much, since, when it was first developed in the early 1990s, Internet use was less prevalent. These design issues combined with programming errors (e.g. buffer overflows) and the popularity of Windows means that it is a frequent target ofcomputer worm and virus writers. In June 2005, Bruce Schneiers Counterpane Internet Security reported that it had seen over 1,000 new viruses and worms in the previous six months. In 2005, Kaspersky Lab found around 11,000 malicious programsviruses, Trojans, back-doors, and exploits written for Windows. Microsoft releases security patches through its Windows Update service approximately once a month (usually the second Tuesday of the month), although critical updates are made available at shorter intervals when necessary. In versions of Windows after and including Windows 2000 SP3 and Windows XP, updates can be automatically downloaded and installed if the user selects to do so. As a result, Service Pack 2 for Windows XP, as well as Service Pack 1 for Windows Server 2003, were installed by users more quickly than it otherwise might have been. While the Windows 9x series offered the option of having profiles for multiple users, they had no concept of access privileges, and did not allow concurrent access; and so were not true multi-user operating systems. In addition, they implemented only partial memory protection. They were accordingly widely criticised for lack of security. The Windows NT series of operating systems, by contrast, are true multi-user, and implement absolute memory protection. However, a lot of the advantages of being a true multi-user operating system were nullified by the fact that, prior to Windows Vista, the first user account created during the setup process was an administrator account, which was also the default for new accounts. Though Windows XP did have limited accounts, the majority of home users did not change to an account type with fewer rights partially due to the number of programs which unnecessarily required administrator rights and so most home users ran as administrator all the time. Windows Vista changes this by introducing a privilege elevation system called User Account Control. When logging in as a standard user, a logon session is created and a token containing only the most basic privileges is assigned. In this way, the new logon session is incapable of making changes that would affect the entire system. When logging in as a user in the Administrators group, two separate tokens are assigned. The first token contains all privileges typically awarded to an administrator, and the second is a restricted token similar to what a standard user would receive. User applications, including the Windows Shell, are then started with the restricted token, resulting in a reduced privilege environment even under an Administrator account. When an application requests higher privileges or "Run as administrator" is clicked, UAC will prompt for confirmation and, if consent is given (including administrator credentials if the account requesting the elevation is not a member of the administrators group), start the process using the unrestricted token.

File permissions All Windows versions from Windows NT 3 have been based on a file system permission system referred to as AGLP (Accounts, Global, Local, Permissions) AGDLP which in essence where file permissions are applied to the file/folder in the form of a 'local group' which then has other 'global groups' as members. These global groups then hold other groups or users depending on different Windows versions used. This system varies from other vendor products such as Linux and NetWare due to the 'static' allocation of permission being applied directory to the file or folder. However using this process of AGLP/AGDLP/AGUDLP allows a small number of static permissions to be applied and allows for easy changes to the account groups without reapplying the file permissions on the files and folders. Windows Defender On January 6, 2005, Microsoft released a Beta version of Microsoft AntiSpyware, based upon the previously released Giant AntiSpyware. On February 14, 2006, Microsoft AntiSpyware became Windows Defender with the release of Beta 2. Windows Defender is a freeware program designed to protect against spyware and other unwanted software. Windows XP and Windows Server 2003 users who have genuine copies of Microsoft Windows can freely download the program from Microsoft's web site, and Windows Defender ships as part of Windows Vista and 7. Third-party analysis In an article based on a report by Symantec, internetnews.com has described Microsoft Windows as having the "fewest number of patches and the shortest average patch development time of the five operating systems it monitored in the last six months of 2006. A study conducted by Kevin Mitnick and marketing communications firm Avantgarde in 2004 found that an unprotected and unpatched Windows XP system with Service Pack 1 lasted only 4 minutes on the Internet before it was compromised, and an unprotected and also unpatched Windows Server 2003 system was compromised after being connected to the internet for 8 hours. However, it is important to note that this study does not apply to Windows XP systems running the Service Pack 2 update (released in late 2004), which vastly improved the security of Windows XP.[citation needed] The computer that was running Windows XP Service Pack 2 was not compromised. The AOL National Cyber Security Alliance Online Safety Study of October 2004 determined that 80% of Windows users were infected by at least one spyware/adwareproduct.[citation needed] Much documentation is available describing how to increase the security of Microsoft Windows products. Typical suggestions include deploying Microsoft Windows behind a hardware or software firewall, running anti-virus and anti-spyware software, and installing patches as they become available through Windows Update.

Linux and GNU:-

Ubuntu, a common GNOME desktop Linux distribution

Kubuntu, a common KDE desktop Linux distribution Linux (or GNU/Linux) is a Unix-like operating system that can be used on a wide range of devices from supercomputers to wristwatches. The Linux kernel is released under an open source license, so anyone can read and modify its code. It has been modified to run on a large variety of electronics. Although estimates suggest that Linux is used on 1.82% of all personal computers, it has been widely adopted for use in servers and embedded systems](such as cell phones). Linux has superseded Unix in most places, and is used on the 10 most powerful supercomputers in the world. The Linux kernel is used in some popular distributions, such as Red Hat, Debian, Ubuntu, Linux Mint and Google's Android. The GNU project is a mass collaboration of programmers who seek to create a completely free and open operating system that was similar to Unix but with completely original code. It was started in 1983 by Richard Stallman, and is responsible for many of the parts of most Linux variants. For this reason, some claim that the combined product of the Linux kernel and the GNU software collection is more correctly called GNU/Linux. Thousands of pieces of software for virtually every operating system are licensed under the GNU General Public License. Meanwhile, the Linux kernel began as a side project of Linus Torvalds, a university student from Finland. In 1991, Torvalds began work on it, and posted information about his project on a newsgroup for computer students and programmers. He received a wave of support and volunteers who ended up creating a full-fledged kernel. Programmers from GNU took notice, and members of both projects worked to integrate the finished GNU parts with the Linux kernel in order to create a full-fledged operating system.

Introduction of programming in BASIC:In computer programming, BASIC (an acronym which stands for Beginner's Allpurpose Symbolic Instruction Code) is a family of high-level programming languages designed to be easy to use. The original Dartmouth BASIC was designed in 1964 by John George Kemeny and Thomas Eugene Kurtz at Dartmouth College in New Hampshire, USA to provide computer access to non-science students. At the time, nearly all use of computers required writing custom software, which was something only scientists and mathematicians tended to do. The language and its variants became widespread on microcomputers in the late 1970s and 1980s. BASIC remains popular to this day in a handful of highly modified dialects and new languages influenced by BASIC such as Microsoft Visual Basic. In 2006, 59% of developers for the .NET platform used Visual Basic .NET as their only programming language.

Typical BASIC keywords:Data manipulation:


LET: assigns a value (which may be the result of an expression) to a variable. DATA: holds a list of values which are assigned sequentially using the READ Command.

Program flow control:


IF ... THEN ... ELSE: used to perform comparisons or make decisions. FOR ... TO ... {STEP} ... NEXT: repeat a section of code a given number of times. A variable that acts as a counter is available within theloop. WHILE ... WEND and REPEAT ... UNTIL: repeat a section of code while the specified condition is true. The condition may be evaluated before each iteration of the loop, or after. DO ... LOOP {WHILE} or {UNTIL}: repeat a section of code Forever or While/Until the specified condition is true . The condition may be evaluated before each iteration of the loop, or after. GOTO: jumps to a numbered or labelled line in the program. GOSUB: temporarily jumps to a numbered or labelled line, returning to the following line after encountering the RETURN Command. This is used to implement subroutines. ON ... GOTO/GOSUB: chooses where to jump based on the specified conditions. See Switch statement for other forms.

Input and output

PRINT: displays a message on the screen or other output device.

INPUT: asks the user to enter the value of a variable. The statement may include a prompt message. TAB or AT: sets the position where the next character will be shown on the screen or printed on paper.

Miscellaneous

REM: holds a programmer's comment; often used to give a title to the program and to help identify the purpose of a given section of code.

Data types and variables:Minimal versions of BASIC had only integer variables and single-letter variable names. More powerful versions of BASIC offered floating-point arithmetic, and variables could be labelled with names six or more characters long. String variables are usually distinguished in many microcomputer dialects by having $ suffixed to their name, and string values are typically enclosed in quotation marks. Arrays in BASIC could contain integers, floating point or string variables. Some dialects of BASIC supported matrices and matrix operations, useful for the solution of sets of simultaneous linear algebraic equations. These dialects would support matrix operations such as assignment, addition, multiplication (of compatible matrix types), and evaluation of a determinant. Microcomputer dialects often lacked this data type and required a programmer to provide subroutines to carry out equvalent operations. Examples:New BASIC programmers on a home computer might start with a simple program similar to the Hello world program made famous by Kernighan and Ritchie. This generally involves simple use of the language's PRINT statement to display the message (such as the programmer's name) to the screen. Often an infinite loop was used to fill the display with the message. Most first generation BASIC languages such as MSX BASIC andGWBASIC supported simple data types, loop cycles and arrays. The following example is written for GW-BASIC, but will work in most versions of BASIC with minimal changes: 10 INPUT "What is your name: ", U$ 20 PRINT "Hello "; U$ 30 INPUT "How many stars do you want: ", N 40 S$ = "" 50 FOR I = 1 TO N 60 S$ = S$ + "*" 70 NEXT I 80 PRINT S$ 90 INPUT "Do you want more stars? ", A$ 100 IF LEN(A$) = 0 THEN GOTO 90 110 A$ = LEFT$(A$, 1) 120 IF A$ = "Y" OR A$ = "y" THEN GOTO 30 130 PRINT "Goodbye "; U$

140 END The resulting dialog might resemble: What is your name: Mike Hello Mike How many stars do you want: 7 ******* Do you want more stars? yes How many stars do you want: 3 *** Do you want more stars? no Goodbye Mike Second generation BASICs (for example QuickBASIC and PowerBASIC) introduced a number of features into the language, primarily related to structured and procedureoriented programming. Usually, line numbering is omitted from the language and replaced with labels (for GOTO) andprocedures to encourage easier and more flexible design. INPUT "What is your name: ", UserName$ PRINT "Hello "; UserName$ DO INPUT "How many stars do you want: ", NumStars Stars$ = STRING$(NumStars, "*") PRINT Stars$ DO INPUT "Do you want more stars? ", Answer$ LOOP UNTIL Answer$ <> "" Answer$ = LEFT$(Answer$, 1) LOOP WHILE UCASE$(Answer$) = "Y" PRINT "Goodbye "; UserName$ Third generation BASIC dialects such as Visual Basic, REALbasic, StarOffice Basic and BlitzMax introduced features to support object-oriented and event-driven programming paradigm. Most built-in procedures and functions now represented as methods of standard objects rather thanoperators. The following example is in Visual Basic .NET: Public Class StarsProgram Public Shared Sub Main() Dim UserName, Answer, stars As String, NumStars As Integer Console.Write("What is your name: ") UserName = Console.ReadLine() Console.WriteLine("Hello {0}", UserName) Do Console.Write("How many stars do you want: ") NumStars = CInt(Console.ReadLine()) stars = New String("*", NumStars) Console.WriteLine(stars) Do Console.Write("Do you want more stars? ") Answer = Console.ReadLine() Loop Until Answer <> ""

Answer = Answer.Substring(0, 1) Loop While Answer.ToUpper() = "Y" Console.WriteLine("Goodbye {0}", UserName) End Sub End Class Standards

ANSI/ISO/IEC Standard for Minimal BASIC: ANSI X3.60-1978 "For minimal BASIC" ISO/IEC 6373:1984 "Data Processing Programming Languages Minimal BASIC" ANSI/ISO/IEC Standard for Full BASIC: ANSI X3.113-1987 "Programming Languages Full BASIC" INCITS/ISO/IEC 10279-1991 (R2005) "Information Technology Programming Languages - Full BASIC" ANSI/ISO/IEC Addendum Defining Modules:

ANSI X3.113 Interpretations-1992 "BASIC Technical Information Bulletin # 1 Interpretations of ANSI 03.113-1987" ISO/IEC 10279:1991/ Amd 1:1994 "Modules and Single Character Input Enhancement" ECMA-116 BASIC (withdrawn, similar to ANSI X3.113-1987)

C++ OVERVIEW:C++ (pronounced "see plus plus") is a statically typed, free-form, multiparadigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both highlevel and low-level language features.[2] It was developed by Bjarne Stroustrup starting in 1979 at Bell Labs as an enhancement to the C language and originally named C with Classes. It was renamed C++ in 1983 C++ is one of the most popular programming languages[4][5] and its application domains include systems software (such as Microsoft Windows), application software, device drivers, embedded software, high-performance server and client applications, and entertainment software such as video games.[6] Several groups provide both free and proprietary C++ compiler software, including the GNU Project, Microsoft, Intel and Embarcadero Technologies. C++ has greatly influenced many other popular programming languages, most notably C# and Java. C++ is also used for hardware design, where the design is initially described in C++, then analyzed, architecturally constrained, and scheduled to create a register-transfer level hardware description language via high-level synthesis.[7] The language began as enhancements to C, first adding classes, then virtual functions, operator overloading, multiple inheritance, templates, and exception handling among other features. After years of development, the C++ programming language standard was ratified in 1998 as ISO/IEC 14882:1998. That standard is still

current, but is amended by the 2003 technical corrigendum,ISO/IEC 14882:2003. The next standard version (known informally as C++0x, in reference to the long-standing expectation that it would be released sometime before 2010) is in development; its final draft was approved on March 25, 2011 and the formal specification is expected to be published in the summer of 2011.

C++ is designed to be a statically typed, general-purpose language that is as efficient and portable as C C++ is designed to directly and comprehensively support multiple programming styles (procedural programming, data abstraction, object-oriented programming, and generic programming) C++ is designed to give the programmer choice, even if this makes it possible for the programmer to choose incorrectly C++ is designed to be as compatible with C as possible, therefore providing a smooth transition from C C++ avoids features that are platform specific or not general purpose C++ does not incur overhead for features that are not used (the "zero-overhead principle") C++ is designed to function without a sophisticated programming environment

Inside the C++ Object Model (Lippman, 1996) describes how compilers may convert C+ + program statements into an in-memory layout. Compiler authors are, however, free to implement the standard in their own manner.

Language features
C++ inherits most of C's syntax. The following is Bjarne Stroustrup's version of the Hello world program that uses the C++ standard library stream facility to write a message to standard output: #include <iostream> int main() { std::cout << "Hello, world!\n"; } Within functions that define a non-void return type, failure to return a value before control reaches the end of the function results in undefined behaviour (compilers typically provide the means to issue a diagnostic in such a case). The sole exception to this rule is the main function, which implicitly returns a value of zero. Operators and operator overloading C++ provides more than 35 operators, covering basic arithmetic, bit manipulation, indirection, comparisons, logical operations and others. Almost all operators can be overloaded for user-defined types, with a few notable exceptions such as member access (. and .*). The rich set of overloadable operators is central to using C++ as a domain-specific language. The overloadable operators are also an essential part of

many advanced C++ programming techniques, such as smart pointers. Overloading an operator does not change the precedence of calculations involving the operator, nor does it change the number of operands that the operator uses (any operand may however be ignored by the operator, though it will be evaluated prior to execution). Overloaded "&&" and "||" operators lose their short-circuit evaluation property. Templates C++ templates enable generic programming. C++ supports both function and class templates. Templates may be parameterized by types, compile-time constants, and other templates. C++ templates are implemented by instantiation at compile-time. To instantiate a template, compilers substitute specific arguments for a template's parameters to generate a concrete function or class instance. Some substitutions are not possible; these are eliminated by an overload resolution policy described by the phrase "Substitution failure is not an error" (SFINAE). Templates are a powerful tool that can be used for generic programming, template metaprogramming, and code optimization, but this power implies a cost. Template use may increase code size, since each template instantiation produces a copy of the template code: one for each set of template arguments. This is in contrast to run-time generics seen in other languages (e.g. Java) where at compile-time the type is erased and a single template body is preserved. Templates are different from macros: while both of these compile-time language features enable conditional compilation, templates are not restricted to lexical substitution. Templates are aware of the semantics and type system of their companion language, as well as all compile-time type definitions, and can perform high-level operations including programmatic flow control based on evaluation of strictly type-checked parameters. Macros are capable of conditional control over compilation based on predetermined criteria, but cannot instantiate new types, recurse, or perform type evaluation and in effect are limited to pre-compilation text-substitution and text-inclusion/exclusion. In other words, macros can control compilation flow based on pre-defined symbols but cannot, unlike templates, independently instantiate new symbols. Templates are a tool for static polymorphism (see below) and generic programming. In addition, templates are a compile time mechanism in C++ that is Turing-complete, meaning that any computation expressible by a computer program can be computed, in some form, by a template metaprogram prior to runtime. In summary, a template is a compile-time parameterized function or class written without knowledge of the specific arguments used to instantiate it. After instantiation, the resulting code is equivalent to code written specifically for the passed arguments. In this manner, templates provide a way to decouple generic, broadly applicable aspects of functions and classes (encoded in templates) from specific aspects (encoded in template parameters) without sacrificing performance due to abstraction. Objects C++ introduces object-oriented programming (OOP) features to C. It offers classes, which provide the four features commonly present in OOP (and some non-OOP) languages: abstraction, encapsulation, inheritance, and polymorphism. Objects are

instances of classes created at runtime. One distinguishing feature of C++ classes compared to classes in other programming languages is support for deterministic destructors, which in turn provide support for the Resource Allocation is Initialization concept. Encapsulation Encapsulation is the hiding of information in order to ensure that data structures and operators are used as intended and to make the usage model more obvious to the developer. C++ provides the ability to define classes and functions as its primary encapsulation mechanisms. Within a class, members can be declared as either public, protected, or private in order to explicitly enforce encapsulation. A public member of the class is accessible to any function. A private member is accessible only to functions that are members of that class and to functions and classes explicitly granted access permission by the class ("friends"). A protected member is accessible to members of classes that inherit from the class in addition to the class itself and any friends. The OO principle is that all of the functions (and only the functions) that access the internal representation of a type should be encapsulated within the type definition. C++ supports this (via member functions and friend functions), but does not enforce it: the programmer can declare parts or all of the representation of a type to be public, and is allowed to make public entities that are not part of the representation of the type. Therefore, C++ supports not just OO programming, but other weaker decomposition paradigms, like modular programming. It is generally considered good practice to make all data private or protected, and to make public only those functions that are part of a minimal interface for users of the class. This hides all the details of data implementation, allowing the designer to later fundamentally change the implementation without changing the interface in any way. Inheritance Inheritance allows one data type to acquire properties of other data types. Inheritance from a base class may be declared as public, protected, or private. This access specifier determines whether unrelated and derived classes can access the inherited public and protected members of the base class. Only public inheritance corresponds to what is usually meant by "inheritance". The other two forms are much less frequently used. If the access specifier is omitted, a "class" inherits privately, while a "struct" inherits publicly. Base classes may be declared as virtual; this is called virtual inheritance. Virtual inheritance ensures that only one instance of a base class exists in the inheritance graph, avoiding some of the ambiguity problems of multiple inheritance. Multiple inheritance is a C++ feature not found in most other languages, allowing a class to be derived from more than one base classes; this allows for more elaborate inheritance relationships. For example, a "Flying Cat" class can inherit from both "Cat" and "Flying Mammal". Some other languages, such as C# or Java, accomplish something similar (although more limited) by allowing inheritance of multiple interfaces while restricting the number of base classes to one (interfaces, unlike classes, provide only declarations of member functions, no implementation or member data). An interface as in

C# and Java can be defined in C++ as a class containing only pure virtual functions, often known as an abstract base class or "ABC". The member functions of such an abstract base class are normally explicitly defined in the derived class, not inherited implicitly. C+ + virtual inheritance exhibits an ambiguity resolution feature called dominance. Polymorphism See also: Polymorphism in object-oriented programming Polymorphism enables one common interface for many implementations, and for objects to act differently under different circumstances. C++ supports several kinds of static (compile-time) and dynamic (runtime) polymorphisms. Compile-time polymorphism does not allow for certain run-time decisions, while run-time polymorphism typically incurs a performance penalty. Static polymorphism Function overloading allows programs to declare multiple functions having the same name (but with different arguments). The functions are distinguished by the number or types of their formal parameters. Thus, the same function name can refer to different functions depending on the context in which it is used. The type returned by the function is not used to distinguish overloaded functions and would result in a compile-time error message. When declaring a function, a programmer can specify for one or more parameters a default value. Doing so allows the parameters with defaults to optionally be omitted when the function is called, in which case the default arguments will be used. When a function is called with fewer arguments than there are declared parameters, explicit arguments are matched to parameters in left-to-right order, with any unmatched parameters at the end of the parameter list being assigned their default arguments. In many cases, specifying default arguments in a single function declaration is preferable to providing overloaded function definitions with different numbers of parameters. Templates in C++ provide a sophisticated mechanism for writing generic, polymorphic code. In particular, through the Curiously Recurring Template Pattern, it's possible to implement a form of static polymorphism that closely mimics the syntax for overriding virtual functions. Since C++ templates are type-aware and Turing-complete, they can also be used to let the compiler resolve recursive conditionals and generate substantial programs through template metaprogramming. Contrary to some opinion, template code will not generate a bulk code after compilation with the proper compiler settings.[21] Dynamic polymorphism Inheritance Variable pointers (and references) to a base class type in C++ can refer to objects of any derived classes of that type in addition to objects exactly matching the variable type. This allows arrays and other kinds of containers to hold pointers to objects of differing types. Because assignment of values to variables usually occurs at run-time, this is necessarily a run-time phenomenon.

C++ also provides a dynamic_cast operator, which allows the program to safely attempt conversion of an object into an object of a more specific object type (as opposed to conversion to a more general type, which is always allowed). This feature relies on runtime type information(RTTI). Objects known to be of a certain specific type can also be cast to that type with static_cast, a purely compile-time construct that is faster and does not require RTTI. Virtual member functions Ordinarily, when a function in a derived class overrides a function in a base class, the function to call is determined by the type of the object. A given function is overridden when there exists no difference in the number or type of parameters between two or more definitions of that function. Hence, at compile time, it may not be possible to determine the type of the object and therefore the correct function to call, given only a base class pointer; the decision is therefore put off until runtime. This is called dynamic dispatch. Virtual member functions or methods[22] allow the most specific implementation of the function to be called, according to the actual run-time type of the object. In C++ implementations, this is commonly done using virtual function tables. If the object type is known, this may be bypassed by prepending a fully qualified class name before the function call, but in general calls to virtual functions are resolved at run time. In addition to standard member functions, operator overloads and destructors can be virtual. A general rule of thumb is that if any functions in the class are virtual, the destructor should be as well. As the type of an object at its creation is known at compile time, constructors, and by extension copy constructors, cannot be virtual. Nonetheless a situation may arise where a copy of an object needs to be created when a pointer to a derived object is passed as a pointer to a base object. In such a case, a common solution is to create a clone() (or similar) virtual function that creates and returns a copy of the derived class when called. A member function can also be made "pure virtual" by appending it with = 0 after the closing parenthesis and before the semicolon. A class containing a pure virtual function is called an abstract data type. Objects cannot be created from abstract data types; they can only be derived from. Any derived class inherits the virtual function as pure and must provide a non-pure definition of it (and all other pure virtual functions) before objects of the derived class can be created. A program that attempts to create an object of a class with a pure virtual member function or inherited pure virtual member function is illformed. Parsing and processing C++ source code It is relatively difficult to write a good C++ parser with classic parsing algorithms such as LALR(1). This is partly because the C++ grammar is not LALR. Because of this, there are very few tools for analyzing or performing non-trivial transformations (e.g., refactoring) of existing code. One way to handle this difficulty is to choose a different syntax. More powerful parsers, such as GLR parsers, can be substantially simpler (though slower).

Parsing (in the literal sense of producing a syntax tree) is not the most difficult problem in building a C++ processing tool. Such tools must also have the same understanding of the meaning of the identifiers in the program as a compiler might have. Practical systems for processing C++ must then not only parse the source text, but be able to resolve for each identifier precisely which definition applies (e.g. they must correctly handle C++'s complex scoping rules) and what its type is, as well as the types of larger expressions. Finally, a practical C++ processing tool must be able to handle the variety of C++ dialects used in practice (such as that supported by the GNU Compiler Collection and that of Microsoft's Visual C++) and implement appropriate analyzers, source code transformers, and regenerate source text. Combining advanced parsing algorithms such as GLR with symbol table construction and program transformation machinery can enable the construction of arbitrary C++ tools. Compatibility Producing a reasonably standards-compliant C++ compiler has proven to be a difficult task for compiler vendors in general. For many years, different C++ compilers implemented the C++ language to different levels of compliance to the standard, and their implementations varied widely in some areas such as partial template specialization. Recent releases of most popular C++ compilers support almost all of the C++ 1998 standard. In order to give compiler vendors greater freedom, the C++ standards committee decided not to dictate the implementation of name mangling,exception handling, and other implementation-specific features. The downside of this decision is that object code produced by different compilersis expected to be incompatible. There were, however, attempts to standardize compilers for particular machines or operating systems (for example C++ ABI), though they seem to be largely abandoned now. Exported templates One particular point of contention is the export keyword, intended to allow template definitions to be separated from their declarations. The first widely available compiler to implement export was Comeau C/C++, in early 2003 (five years after the release of the standard); in 2004, the beta compiler of Borland C++ Builder X was also released with export. Both of these compilers are based on the EDG C++ front end. Other compilers such as GCC do not support it at all. Beginning ANSI C++ by Ivor Horton provides example code with the keyword that will not compile in most compilers, without reference to this problem. Herb Sutter, former convener of the C++ standards committee, recommended that exportbe removed from future versions of the C++ standard.[26] During the March 2010 ISO C++ standards meeting, the C++ standards committee voted to remove exported templates entirely from C++0x, but reserve the keyword for future use. With C. C++ is often considered to be a superset of C, but this is not strictly true. Most C code can easily be made to compile correctly in C++, but there are a few differences that cause some valid C code to be invalid or behave differently in C++.

One commonly encountered difference is that C allows implicit conversion from void* to other pointer types, but C++ does not. Another common portability issue is that C++ defines many new keywords, such as new and class, that may be used as identifiers (e.g. variable names) in a C program. Some incompatibilities have been removed by the latest (C99) C standard, which now supports C++ features such as line comments (//), and mixed declarations and code. On the other hand, C99 introduced a number of new features that C++ does not support, such as variable-length arrays, native complex-number types, designated initializers, and compound literals. However, at least some of the new C99 features will likely be included in the next version of the C++ standard, C++0x:

C99 preprocessor (including variadic macros, wide/narrow literal concatenation, wider integer arithmetic) _Pragma() long long __func__ Headers: cstdbool (stdbool.h) cstdint (stdint.h) cinttypes (inttypes.h).

In order to intermix C and C++ code, any function declaration or definition that is to be called from/used both in C and C++ must be declared with C linkage by placing it within an extern "C" {/*...*/} block. Such a function may not rely on features depending on name mangling (i.e., function overloading). Criticism Due to its large feature set and oft-perceived "strict" syntax, the language is sometimes criticized as being overly complicated and thus difficult to fully master. Because it includes most of the C programming language as a subset, C++ also inherits many of the criticisms leveled at C. Other criticisms stem from what is missing from C++, such as a lack of "native" multithreading facilitiesa feature present in some other languages, including Ada, C#, and Java (see Lock). The upcoming C++0x standard addresses this issue by adding direct support forconcurrency to the language, but at present this is only possible by using operating system calls or third party libraries. C++ is also sometimes compared unfavorably with languages such as Eiffel, Java, or Smalltalk on the basis that it enables programmers to "mix and match" declarative, functional, generic, modular, and procedural programming styles with object-oriented programming, rather than strictly enforcing a single style, although C++ is intentionally a multi-paradigm language. A fictitious article was written, wherein Bjarne Stroustrup is supposedly interviewed for a 1998 issue of IEEE's Computer magazine. In this article, the interviewer expects to

discuss the successes of C++ now that several years had passed after its introduction. Instead, the impostor posing as Stroustrup proceeds to "confess" that his invention of C+ + was intended to create the most complex and difficult language possible to weed out amateur programmers and raise the salaries of the few programmers who could master the language. The article contains various criticisms of C++'s complexity and poor usability, most false or exaggerated. In reality, Stroustrup wrote no such article, and due to the pervasiveness of the hoax, was compelled to publish an official denial on his website. Richard Stallman criticizes C++ for having ambiguous grammar and "gratuitous, trivial, incompatibilities with C (...) that are of no greatbenefit". Linus Torvalds has said, "C++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it". C++ is commonly criticized for lacking built-in garbage collection. On his website, Stroustrup explains that automated memory management is routinely implemented directly in C++, without need for a built-in collector, using "smart pointer" classes. Garbage collection not based onreference counting is possible in C++ through external libraries. The major cause of complaints is C++['s] undoubted success. As someone remarked: There are only two kinds of programming languages: those people always bitch about and those nobody uses. Bjarne Stroustrup, comp.lang.c++ Another point of criticism is the feature of multiple inheritance, as such ontologies are difficult to maintain. What is the Internet? The Internet links are computer networks all over the world so that users can share resources and communicate with each other. Some computers, have direct access to all the facilities on the Internet such as the universities. And other computers, eg privatelyowned ones, have indirect links through a commercial service provider, who offers some or all of the Internet facilities. In order to be connected to Internet, you must go through service suppliers. Many options are offered with monthly rates. Depending on the option chosen, access time may vary. The Internet is what we call a metanetwork, that is, a network of networks that spans the globe. It's impossible to give an exact count of the number of networks or users that comprise the Internet, but it is easily in the thousands and millions respectively. The Internet employs a set of standardized protocols which allow for the sharing of resources among different kinds of computers that communicate with each other on the network. These standards, sometimes referred to as the Internet Protocol Suite, are the rules that developers adhere to when creating new functions for the Internet. The Internet is also what we call a distributed system; there is no central archives. Technically, no one runs the Internet. Rather, the Internet is made up of thousands of smaller networks. The Internet thrives and develops as its many users find new ways to create, display and retrieve the information that constitutes the Internet. History & Development of the Internet: In its infancy, the Internet was originally conceived by the Department of Defense as a way to protect government communications systems in the event of a military strike. The

original network, dubbed ARPANet (for the Advanced Research Projects Agency that developed it) evolved into a communications channel among contractors, military personnel, and university researchers who were contributing to ARPA projects. The network employed a set of standard protocols to create an effective way for these people to communicate and share data with each other. ARPAnet's popularity continued to spread among researchers, and in the 1980's the National Science Foundation, whose NSFNet, linked several high speed computers, took charge of the what had come to be known as the Internet. By the late 1980's, thousands of cooperating networks were participating in the Internet. In 1991, the U.S. High Performance Computing Act established the NREN (National Research & Education Network). NREN's goal was to develop and maintain high-speed networks for research and education, and to investigate commercial uses for the Internet. The rest, as they say, is history in the making. The Internet has been improved through the developments of such services as Gopher and the World Wide Web. Even though the Internet is predominantly thought of as a research oriented network, it continues to grow as an informational, creative, and commercial resource every day and all over the world. Who Pays for the Internet? There is no clear answer to this question because the Internet is not one "thing", it's many things. No one central agency exists that charges individual Internet users. Rather, individuals and institutions who use the Internet pay a local or regional Internet service provider for their share of services. And in turn, those smaller Internet service providers might purchase services from an even larger network. So basically, everyone who uses the Internet in some way pays for part of it. what makes the internet work? The unique thing about the Internet is that it allows many different computers to connect and talk to each other. This is possible because of a set of standards, known as protocols, that govern the transmission of data over the network: TCP/IP (Transmission Control Protocol/Internet Protocol). Most people who use the Internet aren't so interested in details related to these protocols. They do, however, want to know what they can do on the Internet and how to do it effectively. The Client/Server Model: The most popular Internet tools operate as client/server systems. You're running a program called a Web client. This piece of software displays documents for you and carries out your requests. If it becomes necessary to connect to another type of service-say, to set up a Telnet session, or to download a file--your Web client will take care of this, too. Your Web client connects (or "talks") to a Web server to ask for information on your behalf. The Web server is a computer running another type of Web software which provides data, or "serves up" an information resource to your Web client. All of the basic Internet tools--including Telnet, FTP, Gopher, and the World Wide Web--are based upon the cooperation of a client and one or more servers. In each case, you interact with the client program and it manages the details of how data is presented to you or the way in which you can look for resources. In turn, the client interacts with one or more servers where the information resides. The server receives a request, processes it, and sends a result, without having to know the details of your computer system, because the client software on your computer system is handling those details. The advantage of the client/server model lies in distributing the work so that each tool can focus or specialize on particular tasks: the server serves information to many users

while the client software for each user handles the individual user's interface and other details of the requests and results. The Use of Local Clients: Every computer should be equipped with basic client software packages that allow you to perform functions such as electronic mail, Telnet, Gopher, and FTP. Electronic mail on the internet: Electronic mail, or e-mail, is probably the most popular and widely used Internet function. E-mail, email, or just mail, is a fast and efficient way to communicate with friends or colleagues. You can communicate with one person at a time or thousands; you can receive and send files and other information. You can even subscribe to electronic journals and newsletters. You can send an e-mail message to a person in the same building or on the other side of the world. How does E-mail Work? E-mail is an asynchronous form of communication, meaning that the person whom you want to read your message doesn't have to be available at the precise moment you send your message. This is a great convenience for both you and the recipient. On the other hand, the telephone, which is a synchronous communication medium, requires that both you and your listener be on the line at the same time in order for you to communicate (unless you leave a voice message). It will be impossible to discuss all the details of the many e-mail packages available to Internet users. Fortunately, however, most of these programs share basic functionality which allow you to: *send and receive mail messages *save your messages in a file *print mail messages *reply to mail messages *attach a file to a mail message Reading an Internet Address: To use Internet e-mail successfully, you must understand how the names and addresses for computers and people on the Internet are formatted. Mastering this technique is just as important as knowing how to use telephone numbers or postal addresses correctly. Fortunately, after you get the hang of them, Internet addresses are usually no more complex than phone numbers and postal addresses. And, like those methods of identifying a person, an organization, or a geographic location--usually by a telephone number or a street address--Internet addresses have rules and conventions for use. Sample Internet Address: custcare@aucegypt.edu The Internet address has three parts: 1.a user name [custcare in the example above] 2.an "at" sign (@) 3.the address of the user's mail server [aucegypt.edu in the example above] Sometimes it's useful to read an Internet address (like custcare@aucegypt.edu) or a domain name from right to left because it helps you determine information about the source of the address. An address like 201B6DQF@asu.edu doesn't tell me much about the person who's sending me a message, but I can deduce that the sender is affiliated with an educational institution because of the suffix edu. The right-most segment of domain names usually adhere to the naming conventions listed below:

EDU Educational sites in the United States COM Commercial sites in the United States GOV Government sites in the United States NET Network administrative organizations MIL Military sites in the United States ORG Organizations in the U.S. not covered by the categories above (e.g., nonprofit orginaizations). .xx where xx is the country code (e.g., .eg for Egypt). Introduction: Once you've become adept at using e-mail, you may want to communicate with others on the Internet who share your interests. Newsgroups are one way to do this; the other is through an electronic discussion group. An electronic discussion is a group of persons who have come together to discuss a particular topic via e-mail. There are several methods that network users can use to participate in electronic discussions; however, the basic purpose is to bring together persons with similar interests to share information, ideas, problems, solutions, and opinions. Since an electronic discussion is conducted by e-mail, it's commonly called a mailing list. If you find yourself interested in a topic, you can subscribe to a suitable mailing list. From then on, any message sent to the mailing list is automatically distributed as electronic mail to you--as well as to all previously subscribed members of that particular discussion. The beauty of a mailing list is that traffic (the mail generated by that list) covers a specific topic and the mail it generates comes straight to your electronic mailbox, without any extra work on your part. There are thousands of mailing lists operating on the Internet, dedicated to myriad topics. Some are created to serve local needs only (i.e., a list for the members of a regional computer user group), while many are open to anyone on the network. There are discussions on professional topics, vocational subjects, and topics of personal interest. You can roughly separate the thousands of mailing lists available on the Internet into the following groups: Types of discussion lists: Moderated vs. Unmoderated Lists Mailing lists can be moderated or unmoderated. The distinction is whether messages are automatically forwarded to all subscribers (unmoderated) or whether a moderator (a human being) first screens and perhaps combines similar messages before sending them to subscribers (moderated). Open vs. Closed Lists Electronic discussions can also be "open" or "closed." Anyone can subscribe to an open discussion, but a closed discussion is limited to a particular group of persons, for example, those in a particular professional field. Introduction to network news: Network News (sometimes referred to as Usenet News) is a service comprised of several thousand electronic discussions providing users an effective way to share information with others on just about any topic. If you're unclear about the concept of Network News, it's helpful to think about a bulletin board that you might see on campus. Here, one might find posted messages advertising a futon for sale, asking for students to join a math study group. In the newsgroup environment, the same kind of process take

place: User X may access a newsgroup on a particular topic and post a message, question, or respond to a previously posted message, and anyone accessing that newsgroup would then be able to see User X's message. Network News newsgroups provide this same kind of forum online, where users have access to the messages posted by all other users of that newsgroup. Network News has been described as an "international meeting place" where you're likely to find a discussion going on just about anything. How Does Network News work? Messages posted on Network News newsgroups are sent from host computer to host computer all over the world, using the network news transfer protocol. Because Network News newsgroups are located on one server, Network News is a very efficient way to share information that might otherwise be disseminated to several individual users. This way, several people can read a given newsgroup message, but the host system stores only one copy of it. Newsgroups: What's in a Name? As mentioned before, Network News is essentially made up of newsgroups, each newsgroup a collection of messages focusing on a related theme. You can probably find a newsgroup on any topic, no matter how arcane or bizarre. A newsgroup's name gives you a good idea of that group's focus, and also illustrates the hierarchical naming scheme given to newsgroups. Newsgroups with the prefix comp, for example, are for computer-related topics. After the initial prefix, you'll see an additional series of names assigned to the newsgroup that tell its specific concern: Note the following examples: comp.mac.performa for "computers--macintosh--performas" rec.auto.antique for "recreation--autos--antiques" alt.backrubs for "alternative--backrubs" soc.culture.japan for "social--culture--japan" Remote Login & File Transfer: Introduction to telnet: Telnet is the protocol used to establish a login session on a remote computer on the network. While many computers on the Internet require users to have authorization, others are open to the public and can be logged onto with telnet. Telnet is not a method to transfer files from one machine to another, but rather is a way to remotely connect to another system with priveleges to run specific programs on that system. Some uses of the Telnet protocol include: connecting to a library catalog to search that library's collection connecting to a location that allows public priveleges to search its campus information system connecting to a location that gives you an up-to-the minute weather report Basic Telnet Commands open - establishes a connection to the specified host.close - closes an open connection and leaves you in the telnet software quit - closes any open telnet sessions and exits the telnet software. When using a telnet program like NCSA Telnet, you invoke these commands by way of pull-down menus or command keys. Introduction to FTP, File Transfer Protocol: Basic commands in FTP: To do FTP, a user invokes one of two commands: get the command for transferring a file from another server to your own computer.

put the command for moving a file from your computer to another one. Who can do FTP? Anonymous vs. authorized priveleges On many servers, called anonymous FTP servers, anyone can do FTP. All that is required to login is a username (anonymous) and a password (your e-mail address). To get an idea of the many resources available via FTP, you can look at this selected list of FTP servers. Other servers require you to be a registered "authorized" user before you're permitted to do FTP. In such a case, you would need to contact the system operator for the server you wish to access, and request an authorization and a password. Getting an authorization and password might mean that you can get and put only to specific subdirectories on that server. Resources available to you via FTP Freeware When you download freeware, the author continues to carry the copyright to the software, but permits you to use the program for free. You can share freeware with others, as long as you don't sell it. Public Domain When you download public domain software, you can use it freely. The creator carries no copyright, and has released it for anyone to use. There are no limits on distribution or sale--and anyone can modify the program. Shareware When you download shareware, the author continues to carry the copyright to the software, but you're permitted short-term use of the program for evaluation purposes. At the end of evaluation period, you must either pay the copyright holder for the program or destroy all copies you've made of it. Introduction to Gopher: Gopher is a client/server system that allows you to access many Internet resources simply by making selections from a sequence of menus. Each time you make a selection, Gopher carries out your request to the computer that contains the information and "serves" it up. For example, if you select a menu item that represents a text file, Gopher will get that file--wherever it happens to be--and display it for you. As you use Gopher, some menu items lead to other menus. If you choose one of these, Gopher will retrieve the new menu and display it for you. Thus you can move from menu to menu, using only a few key strokes or a mouse to navigate. The power of Gopher is that the resources listed in a menu may be anywhere on the Internet. As Gopher connects to computers to comply with your menu selection, you don't need to be preoccupied with the behind-the-scenes work of connecting to and disconnecting from these various computers. Gopher does this for you without your even needing to be aware of it. This automatic connecting makes Gopher popular and useful. Where did Gopher come from? "Born" in April 1991, gopher began as a project at the Microcomputer, Workstation, and Networks Center at the University of Minnesota to help people on campus get answers to computer-related questions. At the time, the computer center staff had accumulated answers to thousands of questions regarding computers and software. What was needed was an easy and efficient way to deliver this information to students, faculty and staff. Thus, the creation of Gopher reaffirms the adage that necessity is the mother of invention. Why is it called Gopher?

The name "Gopher" is appropriate for three reasons: 1.Just as a real gopher successfully navigates beneath the prairie, the Internet Gopher tunnels through the invisible paths of the Internet to help you find the information you want. 2.The name refers to someone who fetches things or provides service for other people. 3.The Golden Gopher is the mascot of the University of Minnesota. Introduction to the World Wide Web The World Wide Web (also referred to as WWW or W3) is the fastest growing area of the Internet. While gopher was an important step in allowing users to "browse" through the Internet's vast resources, the World Wide Web has raised excitement about the Internet to new heights. What makes the World Wide Web appealing and innovative is its use of hypertext as a way of linking documents to each other. A highlighted word or phrase in one document acts as a pointer to another document that amplifies or relates to the first document. When looking at a WWW document, the reader doesn't have to follow every pointer, or link (also called a hypertext link), only those that look interesting or useful. In this way, the user tailors the experience to suit his or her needs or interests. The other very appealing aspect of the World Wide Web is the use of graphics and sound capabilities. Documents on the WWW include text, but they may also include still images, video, and audio for a very exciting presentation. People who create WWW documents often include a photograph of themselves along with detailed professional information and personal interests. (This is often called a person's home page.) What makes the WWW work? WWW is another example of client/server computing. Each time a link is followed, the client is requesting a document (or graphic or sound file) from a server (also called a Web server) that's part of the World Wide Web that "serves" up the document. The server uses a protocol called HTTP or HyperText Transport Protocol. The standard for creating hypertext documents for the WWW is HyperText Markup Language or HTML. HTML essentially codes plain text documents so they can be viewed on the Web. Uniform Resource Locators, or URLs: A Uniform Resource Locator, or URL is the address of a document you'll find on the WWW. Your WWW browser interprets the information in the URL in order to connect to the proper Internet server and to retrieve your desired document. Each time you click on a hyperlink in a WWW document, you're actually instructing your browser to find the URL that's embedded within the hyperlink. The elements in a URL:Protocol://server's address/filename Hypertext protocol: http://www.aucegypt.edu Gopher protocol: gopher://gopher.umm.tc.edu File Transfer Protocol: ftp://ftp.dartmouth.edu Telnet Protocol: telnet://pac.carl.org News Protocol: news:alt.rock-n-roll.stones WWW Clients, or "Broswers": The program you use to access the WWW is known as a browser because it "browses" the WWW and requests these hypertext documents. Browsers can be graphical, like Netscape and Mosaic, allowing you to see and hear the graphics and audio; text-only browsers (i.e., those with no sound or graphics capability) are also available. All of these programs understand http and other Internet protocols such as FTP, gopher, mail, and news, making the WWW a kind of "one stop shopping" for Internet users.

Chatting: Internet Relay Chat (IRC), the other method for Internet conversation, is less common than talk because someone must set up the Chat before others can join in. Chat sessions allow many users to join in the same free-form conversation, usually centered around a discussion topic. When users see a topic that interests them, they type a command to join and then type another command to choose a nickname. Nicknames allow people in the session to find you on IRC Networks or Channels. A look at search engines: The World Wide Web is "indexed" through the use of search engines, which are also referred to as "spiders," "robots," "crawlers," or "worms". These search engines comb through the Web documents, identifying text that is the basis for keyword searching. Each search engine works in a different way. Some engines scan for information in the title or header of the document; others look at the bold "headings" on the page for their information. The fact that search engines gather information differently means that each will probably yield different results. Therefore, it's wise to try more than one search engine when doing Web searching. The list below lists several search engines and how each one gathers information, plus resources that evaluate the search engines. Selected Search Engines (listed alphabetically) Alta Vista Alta Vista, maintained by The Digital Equipment Corp., indexes the full text of over 16 million pages including newsgroups. Check out the Alta Vista Tips page. Excite Netsearch Excite includes approximately 1.5 million indexed pages, including newsgroups. Check out the Excite NetSearch handbook. InfoSeek Net Search Indexes full text of web pages, including selected newsgroups and electronic journals. Just under one-half million pages indexed. Check out the InfoSeek Search Tips. Inktomi As of December 1995, the Inktomi search engine offers a database of approximately 2.8 million indexed Web documents and promises very fast search retrievals. Results are ranked in order of how many of your searched terms are used on the retrieved pages. Lycos Lycos indexes web pages (1.5 million +), web page titles, headings, subheadings, URLs, and significant text. Search results are returned in a ranked order. Magellan Magellan indexes over 80,000 web sites. Search results are ranked and annotated. Open Text Index Indexes full text of approximately 1.3 million pages. Check out the Open Text Help pages for tips on using this search engine. WebCrawler Maintained by America Online, WebCrawler indexes over 200,000 pages on approximately 75,000 web servers. URLs, titles, and document content are indexed.

WWWW -- World Wide Web Worm Approximately 250,000 indexed pages; indexed content includes hypertext, URLs, and document titles. Yahoo A favorite directory and search engine, Yahoo has organized over 80,000 Web sites (including newsgroups) into 14 broad categories. Yahoo also maintains a comprehensive list of links to Yahoo - Computers and Internet:Internet:World Wide Web: Searching the Web other web search engines, indexes, and guides. Finally the internet is a huge source of information in all fields of knowledge. Datum will take your hand through this incredible world of information to get what you need in a fast, reliable and professional way. APPLICATIONS OF INTERNET The Internet is allowing greater flexibility in working hours and location, especially with the spread of unmetered high-speed connections andweb applications. The Internet can now be accessed almost anywhere by numerous means, especially through mobile Internet devices. Mobile phones,datacards, handheld game consoles and cellular routers allow users to connect to the Internet from anywhere there is a network supporting that device's technology. Within the limitations imposed by small screens and other limited facilities of such pocketsized devices, services of the Internet, including email and the web, may be available. Service providers may restrict the services offered and wireless data transmission charges may be significantly higher than other access methods. Educational material at all levels from pre-school to post-doctoral is available from websites. Examples range from CBeebies, through school and high-school revision guides, virtual universities, to access to top-end scholarly literature through the likes of Google Scholar. In distance education, help with homework and other assignments, self-guided learning, whiling away spare time, or just looking up more detail on an interesting fact, it has never been easier for people to access educational information at any level from anywhere. The Internet in general and theWorld Wide Web in particular are important enablers of both formal and informal education. The low cost and nearly instantaneous sharing of ideas, knowledge, and skills has made collaborative work dramatically easier, with the help ofcollaborative software. Not only can a group cheaply communicate and share ideas, but the wide reach of the Internet allows such groups to easily form. An example of this is the free software movement, which has produced, among other programs, Linux, Mozilla Firefox, andOpenOffice.org. Internet chat, whether in the form of IRC chat rooms or channels, or via instant messaging systems, allow colleagues to stay in touch in a very convenient way when working at their computers during the day. Messages can be exchanged even more quickly and conveniently than via email. Extensions to these systems may allow files to be

exchanged, "whiteboard" drawings to be shared or voice and video contact between team members. Content management systems allow collaborating teams to work on shared sets of documents simultaneously without accidentally destroying each other's work. Business and project teams can share calendars as well as documents and other information. Such collaboration occurs in a wide variety of areas including scientific research, software development, conference planning, political activism and creative writing. Social and political collaboration is also becoming more widespread as both Internet access and computer literacy grow. The Internet allows computer users to remotely access other computers and information stores easily, wherever they may be. They may do this with or without computer security, i.e. authentication and encryption technologies, depending on the requirements. This is encouraging new ways of working from home, collaboration and information sharing in many industries. An accountant sitting at home can audit the books of a company based in another country, on a server situated in a third country that is remotely maintained by IT specialists in a fourth. These accounts could have been created by home-working bookkeepers, in other remote locations, based on information emailed to them from offices all over the world. Some of these things were possible before the widespread use of the Internet, but the cost of private leased lines would have made many of them infeasible in practice. An office worker away from their desk, perhaps on the other side of the world on a business trip or a holiday, can open a remote desktop session into his normal office PC using a secure Virtual Private Network (VPN) connection via the Internet. This gives the worker complete access to all of his or her normal files and data, including email and other applications, while away from the office. This concept has been referred to among system administrators as the Virtual Private Nightmare, because it extends the secure perimeter of a corporate network into its employees' homes.

You might also like