South Birmingham College

Computer System
User guide or Manual

Rajibul Haque Shumon 10 December 2010

Contents
Introduction ............................................................................................................................................ 3 History .................................................................................................................................................... 3 Software and Programming: ............................................................................................................... 3 Hardware components:....................................................................................................................... 4 The Internet:........................................................................................................................................ 6 Computer Components: ......................................................................................................................... 6 Operating Systems:............................................................................................................................. 7 Processors:.......................................................................................................................................... 7 Storage Devices: ................................................................................................................................. 7 Memory:.............................................................................................................................................. 7 Input Devices: ..................................................................................................................................... 8 Output Devices: .................................................................................................................................. 8 BIOS: ................................................................................................................................................... 8 Application Software: .......................................................................................................................... 8 Interaction of the Components: ........................................................................................................... 9 Peripheral devices:............................................................................................................................... 10 Keyboards:........................................................................................................................................ 10 Mouse: .............................................................................................................................................. 11 CD-ROM:........................................................................................................................................... 11 Monitors: ........................................................................................................................................... 11 Camera: ............................................................................................................................................ 11 Printers:............................................................................................................................................. 11 Programming & Software: ..................................................................................................................... 12 Development Methodologies and Techniques: .................................................................................... 12 Analysis:............................................................................................................................................ 13 Design: .............................................................................................................................................. 13 Implementation: ................................................................................................................................ 13 Testing: ............................................................................................................................................. 14 Maintenance: .................................................................................................................................... 14 Algorithms and Methods of Designing Them: ...................................................................................... 14 Flow Charts: ...................................................................................................................................... 15 Pseudo-Code: ................................................................................................................................... 15 High-level Programming Languages: ................................................................................................... 16 Low-level Programming Languages: .................................................................................................... 16 Compilers & Interpreters:..................................................................................................................... 17 Bibliography ......................................................................................................................................... 18

2|Page Rajibul Haque Shumon South Birmingham College S45208512

Introduction
This manual or user guide contains training material for Virk Edibles IT Department. This manual has been created for training purpose only and contains copyright material from various books, website, magazines and articles. This manual will explain about software, programming, computers applications and computer hardware. This manual might contain some extended information from history. This manual can be used to train stuff only in Virk Edibles. Making a copy of this manual without authorised permission is against the Virk Edible manual copyright law.

History
Software and Programming:
The development of software is mainly dependent on computer hardware until the early 1950s. In 1940s when the first digital computer came out, programmers used vacuum tube and other objects to give instruction to the computer. Software developers took fifteen years to recognize the method of Abstraction and Information hiding. Between 1950s and 1960s programmers used abstraction and information hiding to create their programs but in 1975 it was widely known and used by all the programmers. In late 1940s computer hardware was limited for processing data or information it receives, eventually for the most of the software systems was batch oriented and custom designed for specific applications. In 1940 Samuel William and George Stibitz made a calculator which can calculate complex numbers but the first digital computer was built by Konrad Zusa. Konrad Zuse, in 1945, began his work on Plankalkul, which is the first algorithmic programming language. In 1950s, programming languages like FORTRAN, ALGOL, and COBOL was released to solve algorithmic, scientific and business problem. David Parnas, while teaching at Carnegie-Mellon, wrote the ´On Decomposing Programs into Modulesµ articles which overviews the key concept of information hiding and modularity. This article was created to help programmers to deal with the increasing complexity of software system. Later an Operating System was introduced, which manages the hardware among them (UNIX was most notable). When Second Generation computer was introduced, these demanded more advanced
3|Page Rajibul Haque Shumon South Birmingham College S45208512

software systems and Operating Systems. Thus personal computer and Windows came out and offered users with friendlier GUIs version of Operating systems named Windows 1.0 for a very cheap price.

Programming or coding is the process of designing, testing, and writing, debugging, troubleshooting, and maintaining the source code of a computer. Programming can be traced back to Ancient Greece time, The Antikythera mechanism, which is use to track the metonic cycle or lunar month. Joseph Marie jacquard developed The Jacquard Loom in 1801, which programmed using a series of pasteboard cards with holes punch on it. Charles Babbage used punched card to control his Analytical Engine in 1830. This development of computer programming accelerated during Industrial Revolution. Herman Hollerith invented the recording data on a medium, which then could be read by a machine. To read the ´Hollerith Cardsµ he also invented the tabulator, and the keypunch machine. Von Neumann architecture allowed programmer to store programs in computer storage. Early computer were programmed differently for different hardware to do same type of work, which was very uncomfortable for programmer. In 1950s, Assembly Language was developed, which let programmer to give instruction using text format and. FORTRAN was invented in 1954, the first high level language, this gave programmer more advance way to give instruction to computer. These instructions are translated into machine language using a special program called compiler. Early development of computer language has given programmer more room to write program easily. These developments in Assembly language and High level programming languages is still being use to develop software and Operating Systems. Software can now perform more broadly based on hardware and can perform more action and calculation. Software developing has become more complex now that if the ´life cycleµ was not developed than programmer would have been difficulties to write software·s.

Hardware components:
Device to do calculation/computing has been in use for thousands of year. For arithmetic task Roman used abacus in 2400 BC. Wilhelm Schickard, a German polymath, tried to build a calculating clock in 1623 but he lost his work in a fire and gave up on that.

4|Page Rajibul Haque Shumon South Birmingham College S45208512

Later in 16th century a teenager name Blaise Pascal build a mechanical calculator and it was called Pascaline. Joseph Marie Jacquard developed a loom, which can be controlled using a punch card, in 1801. The patterns this loom can be alter by changing the punch card without changing any mechanical design of the loom. For navigational calculation, Charles Babbage, in 1833 build an Analytic engine, which also used punch card. This was a program able computing device, programming/inputting data using punch card and this machine would calculate and print out the result. Later in 1800, Herman Hollerith invented his punch card to store data on it and to process that punch he also invented tabulator and key punch machine. In 1936, Konrad Zuse started building Z-series calculators; these calculators had memory and limited programmability. His first machine did not work for technical difficulties but later he builds Z3, which was program controlled digital computer. Early computers before First Generation Computer was for only calculating purpose and they were not connected to any network. First Generation computer was build using John von Neumann architecture name EDVAC, which has both the programs and working data stored in a single, unified storage. Manchester Mark 1 and EDSAC was also the First Generation computer, these two system used William tube and magnetic drum memory, and had index registry. The First commercial computer was Ferranti Mark 1; it had primary storage using William Tubes, a secondary storage, a faster multiplier and additional instructions. Ferranti Mark 1 was based on Manchester Mark 1; it was delivered to University of Manchester in February 1951. The LEO I, ran the World first regular routine office computer job, become operational in April 1951 and in November J. Lyons Company began weekly operation on the LEO. In the earlier time of computing mathematician, programmer or scientist was working mostly on figuring how they can make large calculation on a machine within a short time. Computer was invented but commercially it was not available for everyone. In 1947, the transistor was invested, which replace vacuum tubes in computers and made it much smaller than before. University of Manchester build first transistorised computer, which become operational in 1953, and a second version of this in 1955 but the speed was very low to read and write on the magnetic drum memory. After the invention of bipolar junction transistors at Bell Telephone Laboratories by John Bardeen and Walter Brattain under the direction of William Shockley, this reduced the computer components size, initial costs and operating costs.

5|Page Rajibul Haque Shumon South Birmingham College S45208512

Between 1960 and 1964, IBM mass produced IBM 1401 and installed more than 100 thousands of them. In second generation computing, the transistorized electronics improved Central Processing Unit and also Peripheral devices. In second generation computing the remote terminal like Friden Flexowriter has increased in use. Telephone connections, which were mainly improved by Bell Laboratories, provided sufficient speed for the remote-terminals and the computing centre to connect with each other. These stand-alone Computer network become interconnected network of networks, which is internet, later.

The Internet:
The history of Internet begins with ARPANET (Advanced Research Projects Agency Network) but data communication between two computers existed before that and the idea grew as advance technology start to emerge. Before the ARPANET, most of the communication network has limited to only communications. Some network had gateway or bridge but those bridge or gateway was used for only single purpose. Paul Baran, in 1960, produced survival network for the US military and used packet switching to transfer data from one computer to another. In 1963, Licklider was head of the Behavioral Sciences and Command and Control programs at the Advanced Research Projects Agency in United States Department of Defence. In 1969, ARPA start building their network and gave permission to two contractors to build the network on BBN Technologies. In October same year after the implement of ARPANET, the first message was sent from UCLA to Stanford research Institute. Arpanet used 1822 protocol BBN Report 1822 initially but this protocol was unable to handle multiple connections for different application in a host computer. This problem was recognized by NCP (Network Control Program) and given a new communication protocols. In 1983, TCP/IP replaced NCP as the principal protocol for ARPANET. As a result of these successful communications between host-to-host computer and software application to create interface for TCP/IP protocols, ARPANET spread towards east cost of United States (March 1970), London IMPs (1973) etc. By 1981, ARPANET has 213 host computers connected and communicating successfully. Those are the time from where modern communication started. We are still using TCP/IP protocol to exchange communication between two computers. All this development in Computer hardware, software and programming, and Internet has now given us the computing we use today. For those great inventions on early 1960s and onwards, we now can sit on our home and get information about anything from anywhere within this world.

Computer Components:

6|Page Rajibul Haque Shumon South Birmingham College S45208512

Operating Systems:
An Operating System is a program, which fulfil the purpose of running other programme in a computer and to recognize the input and output device. Operating System also keeps tracks of files and directories, and controls the computer hardware·s. In a large system operating system maintain multiple user and programme, so that one process would not interfere with other process, which is taking place at the same time. It also ensures security for a computer and networks the computer sits on. Nowadays operating systems allows multi-user, multiprocessing, multitasking, multithreading and real time. Operating system gives software platform to run application programme. A programmer will write an application programme based on the operating system they intend to run it. Thus the choice of operating system determines which application can be install on it.

Processors:
Central Processing Unit or CPU or Processor is where most of the calculation takes place. It has two units which called Arithmetic Logic Unit (ALU) and Control Unit (CU). Arithmetic Logic Unit (ALU) performs all the arithmetic calculations and logical operation, and Control Unit (CU) extracts instructions from memory and decodes and executes them, and sends necessary signal to the ALU to perform the operation needed.

Storage Devices:
A storage device is hardware device which is capable of storing information or data. There are two types of storage device in computers; a primary storage such as computer RAM (Random Access Memory) and a secondary storage device such as computer hard disk drive. Hard disk is connected using SATA cable to Motherboard and RAM is directly connected to Motherboard.

Memory:
Storage areas of a computer are called memory. Computers have RAM, where computer can physically store data and use them. A computer can have virtual
7|Page Rajibul Haque Shumon South Birmingham College S45208512

memory also, which expands physical memory into a hard disk. Computers also can store data in ROM (Read-only Memory), PROM (Programmable read-only memory), and EEPROM (Electrically erasable programmable read-only memory).

Input Devices:
An input device is a piece of hardware, which can feed data into a computer. There are many input devices such as: Keyboards, Pointing devices, Composite devices, Imaging and Video input devices, Audio input devices etc.

Output Devices:
An output device is any piece of hardware that can show the result of the data process done by a computer. Speakers, Headphones, Monitor, Printer, projector etc are output device.

BIOS:
Basic Input/output System is defining a firmware interface. The BIOS is a software, which is built into the motherboard. When a computer power up, the first code run is the BIOS and its function is to start and identify system devices. After completion of detecting and identifying all connected devices, BIOS locates the boot device, and loads and executes that software, which is Operating System, and give control to it. The BIOS is typically place in a ROM chip that fitted into the motherboard. It makes sure that the BIOS will be always available to do the initial start up of the computer and while the operating system or boot disk is missing or corrupted. Nowadays BIOS are implemented with Flash memory so that they could be update over the air using a batch file.

Application Software:
An application software or application or app is computer software designed to help to perform single or multiple related specific tasks. Application helps to solve real world problem such as
8|Page Rajibul Haque Shumon South Birmingham College S45208512

accounting software, office suites, web browsers, Graphics software, media player etc. Application software is deployed on top of Operating system, which does not have direct capabilities to perform tasks that benefit the users. An application is designed to perform an activity thus it·s different from the operating system, which only maintain the system and have a platform to run the application. An application can manipulate text, numbers, graphics or a combination of these elements, depending on the purpose it created for. There are many type of software such as an application suite, enterprise software, and enterprise infrastructure, information worker software, content access software, simulation software, product engineering software, graphical user interface, media development software, mobile application etc.

Interaction of the Components:
When a computer is powered on, the power supply, supply electricity to motherboard (printed circuit board, where all the components are connected), keyboard, mouse, monitor, hard disk and other connected peripheral device. When the motherboard gets power, the first code run on the computer is BIOS (Basic Input/Output system). These BIOS detect and identify all the connected devices to the motherboard. After checking and identifying all the devices connected, BIOS checks if it is a cold boot or reboot. If it·s a reboot, the BIOS will skip the rest of the procedure and hand the control to the operating system. If it·s a cold boot, the BIOS will verify all the connected devices. The BIOS will display details about the system then it will identify the boot device in complementary metal-oxide semiconductor (CMOS) setup. The BIOS will try to initiate the boot sequence from the device using the bootstrap loader. The bootstrap loader will load the operating system into and allow it to begin the operation. The bootstrap loader will establishes data structures between sub-systems and application of the computer to communicate and turns the control of the computer to the operating system. When the operating system loads successfully the task management fall into six categories, which are processor management (break the task into manageable size before sending to processor), memory management (determining when the virtual memory is needed and control the flow of data into RAM), and storage management (an interface for all the connected device to the computer), application interface (providing a standard communications and data exchange between software programs and the computer) and user interface (providing GUIs to interact and communicate with computer).

9|Page Rajibul Haque Shumon South Birmingham College S45208512

For example, that an application is opened, where you can input data using keyboard and mouse or other means, and prints the data out. These actions make several components to work together. The keyboard and mouse or other device sends input data to the operating system. The operating system determines the application is the active program and accepts the input as data for that program. This application will determine the format of the data and using operating system, it will store the data temporarily on RAM. Every instruction from that application is sent to the CPU by operating system, which intertwined these instructions with other instructions from other programs that the operating system is handling before sending them to the CPU. All this time, the operating system is providing information to the graphics card to display on the monitor. When the save option is selected for the work done on that application, it will sends request to the operating system and operating system will provides a standard window to select the path and name of the file, after this operating system directs the data from RAM to the appropriate storage. When the printing option is selected, the application will send a request to the operating system, which then translates that data into a format the printer will understands and directs the data from RAM to the appropriate port for the printer you requested. When we browse web using a web browser, the operating system coordinates all of the action and it also get input from internet. The operating system seamlessly integrates all incoming and outgoing information. When the shut down option is selected, the operating system will close all the active applications. It will give option to save any unsaved work. The operating system writes its current settings to a special configuration file so that it will boot up next time with the same settings. If the computer provides software control of power, then the operating system will completely turn off the computer when it finishes its own shut-down cycle. Otherwise, you will have to turn the power off manually.

Peripheral devices:
A peripheral device is a hardware, which is not part of the essential computer like
keyboards, mice, CD-ROM, Monitors, Cameras, and Printers etc. To explain it more broadly a peripheral device is attached to the computer but not part of it, and it is more or less dependent on that computer. It expands the computer·s capabilities but does not form part of it.

Keyboards:
This device allows you to input data into a computer using a set of typewriter-like keys. Computer keyboards are similar to electrictypewriter keyboards but contain additional buttons. Classification for keys of the keyboard is alphanumeric, punctuation and function keys. The standard layout of
10 | P a g e Rajibul Haque Shumon South Birmingham College S45208512

letters, numbers and punctuation is known as QWERTY keyboard, which was designed in the 1800s. This type of keyboards is for slow typing; for faster typing Dvork design is followed in most of today·s keyboards.

Mouse:
This is the device which controls the movement of the pointer or cursor. The naming of this device was derived from its shape, which looks like a real mouse and the connecting line looks tail of a mouse. Mice contain at least one button or three and each of the buttons have different functions depending on what applications is running. There are three kind of mice mechanical, optomechanical and optical. Most of the today·s mice are optical.

CD-ROM:
Compact disk-read-only memory, it is an optical disk to store large amount of data. All CD-ROMs is made to a standard size and format, so that any CD-ROM can be put into any CD-ROM player. CD-ROM is suitable for information that requires large storage capacity. Nowadays there is CD-RW to read and write data on a CD.

Monitors:
Monitor is the display screen where CPU displays the input data. There are monochrome, gray-scale and color monitor. Rather than displaying the data nowadays monitor come with built in speakers. Using monitor user can change color setting according to their preference. The first display screen was black and white but today·s monitors or display screen can give 64 bits color resolution in a screen of 1024X768.

Camera:
This is the device which captures the reflection of light in a photographic film. This photographic film can be developed to photograph. Modern day·s cameras have display to view picture and do not use photographic film, which is not friendly towards environment. These cameras can be take photo and record video as well. Digital camera use electronic memory card to store photos and videos.

Printers:
Printer is a device, which can print text or graphics from stored electronic form. Printer can be connected to only one computer or in a network. Printer can be either laser based or toner based. Laser printer prints much faster than toner printer. 11 | P a g e Rajibul Haque Shumon South Birmingham College S45208512

Programming & Software:
Programming or Computer programming is a process which involves designing, writing, testing, debugging and maintaining the source code of a computer programs. Program is an organized instruction that, when run or entered to a computer, causes the computer to behave in a predetermined way and without programming computer will not function properly. A program will contain variables and list of commands, which will tell computer how to execute the variables. The variables can represent numeric data, text, or graphical images. There are two types of computer language High-level languages and Low-level languages. High-level languages are C, C++, Pascal, and BASIC etc and Low-level languages are called assembly language. Low-level languages are similar to the computer or machine language but High-level languages are closer to the human languages. Software is the collection of computer programs and data that give specific instruction to the computer. It is one of the ways for non-programmers to give instruction to the computer and get the output result on a display screen or print out. Software·s are of two kinds:

y y

System Software: which enables the computer hardware to function properly and
maintain the hardware, such as Operating System, drivers software, utilities etc. Application Software: which provides set of specific instruction for nonprogrammers to give instruction to the computer, such as word processors, spread sheets, database management etc.

Development Methodologies and Techniques:
Software development methodology is use to develop software in a well structure and planned process. To develop a well structured software developer need to research, develop, modify, reuse, re-engineer and maintain. Software·s are created for various purposes but there are three main purposes which must be met when developing software. The three main purposes are: 1. To meet specific need of clients/business. 2. To meet a perceived need of some set of potential users. 3. For personal use. Software development methodology, otherwise known as system development methodology in software engineering is a structure that is used to plan and control the process of developing an information system. The Software Development Life Cycle (SDLC) in systems engineering, information systems and software engineering is the process of creating and altering systems and the methods that people used to develop the systems.

12 | P a g e Rajibul Haque Shumon South Birmingham College S45208512

Analysis

Design

Implementation

Testing

Maintenance

To develop software, developers need to create a Software Development Life Cycle (SDLC). This life cycle may have more or less step than the above one but it will be use to serve the same purpose as this one.

Analysis:
By analysing any system one can find the problem and lacking of the systems. This analyse can be use to solve the problem and increase the efficiency of the systems. This action involves in breaking down the system into pieces to be able to analyse the situation, analyse project goals, figure out what needs to be created and attempting to engage users so that specific requirements can be defined. These requirements analysis required communication between users and developer by which developer can get an in depth requirement for the software. If the communication between users and developer lacks, the end product will not work or will not meet the needs of users or clients.

Design:
In systems design, the design functions and operations are all described in detail. These will include screen layouts, business rules and the process diagrams. At this stage, the output will describe the new system as a compilation of modules and subsystems. The design stage takes the requirements identified in the approved requirements document. One or more design elements will be formed as a result of interviews, workshops and prototype efforts. Design elements describe the required software features in depth in which they include: y y y y y y Functional hierarchy diagrams Screen layout diagrams Tables of business rules Business process diagrams Pseudo-code Entity relationship diagram with a full data dictionary

Implementation:
During the implementation stage, modular and subsystem programming code will be accomplished. The developers at this stage will then do all the unit testing and module testing. This stage is somehow connected with the next stage where individual modules will be needed for testing before carrying out to the main project.

13 | P a g e Rajibul Haque Shumon South Birmingham College S45208512

Testing:
This is where the system is tested to ensure that it is working. During this stage the code is tested at various levels in software testing. Other units that are often performed are Unit, system and user acceptance tests. This is a blunt area as many different opinions exists as to what the stages of testing are and how much if any repetition occurs The various types of testing:
y y y y y y y y y y y y y

Defect testing Path testing Data set testing. Unit testing System testing Integration testing Black box testing White box testing Regression testing Automation testing User acceptance testing Performance testing Production process that ensures that the program performs the intended task.

Maintenance:
The operation of the system includes making changes and enhancements before the withdrawal of the system. An important feature to Software Development Life Cycle (SDLC) is the maintenance of the system. System updates will always be required as new changes will be implemented.

Algorithms and Methods of Designing Them:
In computer Science an algorithm is a well defined instruction for calculating functions. Algorithms are used for calculation, data processing and automated reasoning. Algorithm can be designed using Flow charts and Pseudo-code. Algorithm is the logic written by software developer in software.

14 | P a g e Rajibul Haque Shumon South Birmingham College S45208512

Flow Charts:
This is a type of diagram, which represents algorithm or process using various shapes of box and arrows. Box are use to show the steps in algorithm or process and arrows are use to show the connection between two algorithm. This can give a step by step solution to a problem of algorithm. Using a flow chart software developer can design algorithms from start to end and show the flow of data using arrows. This flow chart will show start and end symbols, arrows, generic processing steps, subroutines, input/output, conditional, conditional or decision, junction, connectors and concurrency. An example of this has been shown next page.

Pseudo-Code:
It is a compact and informal high level description of algorithm. It uses the structure of a programming language rather than machine language. Pseudo-code is use for human understanding of the conventional programming languages code. It is use to give information about variables declarations, system-specific code and subroutines. It is use to documents various algorithm and in planning of computer software development for showing the structure of the program before writing any code. Pseudo-code generally does not follow any syntax, it depends on the developer how they put them on their program or follow the structure of any conventional programming languages. There are some popular syntax rule which are Pascal, BASIC, Java, C, C++ etc. Depending on the writer, Pseudo-code may therefore vary widely in style, from a near-exact imitation of a real programming language at one extreme, to a description approaching formatted prose at the other. Example for Pseudo-code is shown in next page.

15 | P a g e Rajibul Haque Shumon South Birmingham College S45208512

High-level Programming Languages:
A High-level language is a programming language, which uses strong abstraction and is more users friendly. It may use natural language elements and easier to use. It hides the details of the CPU operation. This makes the language more users friendly. A high-level language makes the software development simpler and more understandable. High-level languages deal with variables, arrays, objects, complex arithmetic or boolean expressions, subroutines and functions, loops, threads, locks, and other abstract computer science concepts, with a focus on usability over optimal program efficiency. High-level languages need to be executed to machine languages or lower-level languages or assembly languages for program to run and machine to understand the code. There are three ways machine could execute high-level languages: 1. Interpreted languages: Program like interpreter will read the program line by line and execute the line as it read. It does not require compiler to execute the program. 2. Compiled languages: Compiler will compile the code into machine code directly. Some compiler will compile the code into intermediate representation, which can be saved and execute without re-reading the source code. 3. Translator: A language can be translated into lower-level language using compiler.

Low-level Programming Languages:
Low-level language is a programming language, which does not provide any abstracts and it is almost similar to the machine languages. Low-level language does not need to compile before executing and it is known as assembly languages. Low-level language can be converted into machine language without using any compiler or interpreter. It can be run much faster than High-level programming languages. Low-level language is not user friendly and it needs numerous technical details to remember. To write a program in low16 | P a g e Rajibul Haque Shumon South Birmingham College S45208512

level language programmer need to memorise or look for every numerical code for every instruction.

Low-level languages can be divided into two categories: i) First Generation Programming Language: This is the only language microprocessor can process without interpreting or compiling. It is very hard write any program using this code for this reason programmer does not use this language nowadays. ii) Second Generation Programming Language: It is also known as assembly language. It is not similar to microprocessor language but assembly language programmer need to understand the microprocessor·s unique architecture.

Compilers & Interpreters: 
Compilers is a set of computer program, which transforms the source code written in a programming language into another computer language i.e. assembly language. The main job of the compiler is to translate complete source program into machine code. A compiler will perform lexical analysis, pre-processing, parsing, semantic analysis, code generation and code optimization. A compiler bridge the high-level programming languages with the underlying hardware. Compiler requires: correctness of the syntax of programs, generating correct and efficient object code, run-time organization, and formatting output according to assembler and/or linker conventions. A compiler consists of three main parts: i) Frontend: which checks whether the program is correctly written in terms of the programming language syntax and semantics ii) Middle-end: where optimization takes place. iii) Backend: is responsible for translating the IR from the middle-end into assembly code. 

Interpreter is a computer program that executes any instruction written in programming language. An interpreter will either execute the source code directly or translates source code into some efficient intermediate representation (code) and immediately executes it or will execute the precompiled code made by a compiler. Interpreter executes the program and interprets every time it runs but a compiler just makes one conversion.

17 | P a g e Rajibul Haque Shumon South Birmingham College S45208512

Bibliography
Abbate, J. (1999). Inventing the Internet. Cambridge: MIT Press. Bell, G., & Newell, A. (1978). Computer Structures: Readings and Examples. New York: McGraw-Hill. Berners-Lee, T. (2004). How It All Started. Retrieved December 11, 2010, from World Wide Web: http://www.w3.org/2004/Talks/w3c10-HowItAllStarted/?n=1 Berners-Lee, T. (1996, October). The World Wide Web: Past, Present and Future. Retrieved December 11, 2010, from World Wide Web: http://www.w3.org/People/BernersLee/1996/ppf.html Ceruzzi, P. E. (2003). A History of Modern Computing 2nd Edition. Salisbury: MIT Press. Derfler Jr., F., & Freed, L. (2005). How Networks Work. USA: Que publishing. Knuth, D. (2005). The Art of Computer Programming. United State: Addison-Wesley. Lavington, S. (1998). A History of Manchester Computers 2nd edition. Swindon: The British Computer Society. Mahon, B. (2003). The Man Who Changed Everything ² the Life of James Clerk Maxwell. New Jersey: Wiley. Patterson, D., & Hennessy, J. (1998). Computer Organization and Design. San Francisco: Morgan Kaufmann. Rojas, R., & Hashagen, U. (2000). The First Computers: History and Architectures. Cambridge: MIT Press. Stibitz, G. (1954). Patent No. 2668661. United State. Tomayko, J., & Hazzan, O. (2004). Human Aspects of Software Engineering. Massachusetts: Charles River Media. Tyson, J. (2001, June 05). How PCs Work. Retrieved December 13, 2010, from How Stuff Works: http://computer.howstuffworks.com/pc3.htm# Webopedia. (n.d.). Operating System. Retrieved December 11, 2010, from Webopedia: http://www.webopedia.com/TERM/O/operating_system.html Yang, H., & Ward, M. (2002). Successful Evolution of Software Systems. Norwood: Artech House, Incorporated .

18 | P a g e Rajibul Haque Shumon South Birmingham College S45208512