Introduction to Computer Science
By:Waseem Khurshid
http://www.waseemk.tk


The study of computers, including their design (architecture) and their uses for computations, data processing, and systems control. The field of computer science includes engineering activities such as the design of computers and of the hardware and software that make up computer systems. It also encompasses theoretical, mathematical activities, such as the design and analysis of algorithms, performance studies of systems and their components by means of techniques like queueing theory, and the estimation of the reliability and availability of systems by probabilistic techniques. Since computer, systems are often too large and complicated to allow a designer to predict failure or success without testing, experimentation is incorporated into the development cycle. Computer science is generally considered a discipline separate from computer engineering, although the two disciplines overlap extensively in the area of computer architecture, which is the design and study of computer systems. The major sub disciplines of computer science have traditionally been (1) architecture (including all levels of hardware design, as well as the integration of hardware and software components to form computer systems), (2) software (the programs, or sets of instructions, that tell a computer how to carry out tasks), here subdivided into software engineering, programming languages, operating systems, information systems and databases, artificial intelligence, and computer graphics, and (3) theory, which includes computational methods and numerical analysis on the one hand and data structures and algorithms on the other.

Software

Instructions that tell a computer what to do. Software comprises the entire set of programs, procedures, and routines associated with the operation of a computer system. The term was coined to differentiate these instructions from hardware--i.e., the physical components of a computer system. A set of instructions that directs a computer's hardware to perform a task is called a program, or software program. The two main types of software are system software and application software. System software controls a computer's internal functioning, chiefly through an operating system, and also controls such peripherals as monitors, printers, and storage devices. Application software, by contrast, directs the computer to execute commands given by the user and may be said to include any program that processes data for a user. Application software thus includes word processors, spreadsheets, database management, inventory and payroll programs, and many other "applications." A third software category is that of network software, which coordinates communication between the computers linked in a network. Software is typically stored on an external long-term memory device, such as a hard drive or magnetic diskette. When the program is in use, the computer reads it from the storage device and temporarily places the instructions in random access memory (RAM). The process of storing and then performing the instructions is called "running," or "executing," a program. By contrast, software programs and procedures that are permanently stored in a computer's memory using a read-only (ROM) technology are called firmware, or "hard software."

Software engineering

Computer programs, the software that is becoming an ever-larger part of the computer system, are growing more and more complicated, requiring teams of programmers and years of effort to develop. As a consequence, a new sub discipline, software engineering, has arisen. The development of a large piece of software is perceived as an engineering task, to be approached with the same care as the construction of a skyscraper, for example, and with the same attention to cost, reliability, and maintainability of the final product. The software-engineering process is usually described as consisting of several phases, variously defined but in general consisting of: (1) identification and analysis of user requirements, (2) development of system specifications (both hardware and software), (3) software design (perhaps at several successively more detailed levels), (4) implementation (actual coding), (5) testing, and (6) maintenance. Even with such an engineering discipline in place, the software-development process is expensive and time-consuming. Since the early 1980s, increasingly sophisticated tools have been built to aid the software developer and to automate as much as possible the development process. Such computer-aided software engineering (CASE) tools span a wide range of types, from those that carry out the task of routine coding when given an appropriately detailed design in some specification language to those that incorporate an expert system to enforce design rules and eliminate software defects prior to the coding phase. As the size and complexity of software has grown, the concept of reuse has become increasingly important in software engineering, since it is clear that extensive new software cannot be created cheaply and rapidly without incorporating existing program modules (subroutines, or pieces of computer code). One of the attractive aspects of object-oriented programming (see below Programming languages) is that code written in terms of objects is readily reused. As with other aspects of computer systems, reliability--usually rather vaguely defined as the likelihood of a system to operate correctly over a reasonably long period of time--is a key goal of the finished software product. Sophisticated techniques for testing software have therefore been designed. For example, a large software product might be deliberately "seeded" with artificial faults, or "bugs"; if they are all discovered through testing, there is a high probability that most actual faults likely to cause computational errors have been discovered as well. The need for better trained software engineers has led to the development of educational programs in which software engineering is either a specialization within computer science or a separate program. The recommendation that software engineers, like other engineers, be licensed or certified is gaining increasing support, as is the momentum toward the accreditation of software engineering degree programs.

Basic Computer Operations

Basic computer operation . The operation of such a computer, once a program and some data have been loaded into RAM, is as follows. The first instruction is transferred from RAM into the control unit and interpreted by the hardware circuitry. For instance, suppose that the instruction is a string of bits that is the code for LOAD 10. This instruction loads the contents of memory location 10 into the ALU. The next instruction, says ADD 15, is fetched. The control unit then loads the contents of memory location 15 into the ALU and adds it to the number already there. Finally, the instruction STORE 20 would store the sum in location 20. At this level, the operation of a computer is not much different from that of a pocket calculator. In general, of course, programs are not just lengthy sequences of LOAD, STORE, and arithmetic operations. Most importantly, computer languages include conditional instructions, essentially rules that say, "If memory location satisfies condition, do instruction number next, otherwise do instruction." This allows the course of a program to be determined by the results of previous operations--a critically important ability.

 

Artificial intelligence

Artificial intelligence (AI) is an area of research that goes back to the very beginnings of computer science. The idea of building a machine that can perform tasks perceived as requiring human intelligence is an attractive one. The tasks that have been studied from this point of view include game playing, language translation, natural-language understanding, fault diagnosis, robotics, and supplying expert advice. For a detailed discussion of the successes--and failures--of AI over the years, see the article artificial intelligence.

Computer graphics

Computer graphics is the field that deals with display and control of images on the computer screen. Applications may be broken down into four major categories:

Graphical user interfaces

A highly visible aspect of the change in operating systems in recent years is the increasingly prevalent use of graphical user interfaces (GUIs). In the early days of computing, punch cards, written in the Job Control Language (JCL), were used to specify precisely which system resources a job would need and when the operating system should assign them to the job. Later, computer consoles allowed an operator directly to type commands--e.g., to open files, run programs, manipulate data, and print results--that could be executed immediately or at some future time. (Operating system commands stored for later execution are generally referred to as scripts; scripts are still widely used, especially for controlling servers.) With the advent of personal computers and the desire to make them more user-friendly, the operating system interface has become for most users a set of icons and menus so that the user only needs to "point and click" to send a command to the operating system.

Recent developments In Computer Science

Object-oriented languages .An important trend in programming languages is support for data encapsulation, or object-oriented code. Data encapsulation is best illustrated by the language Smalltalk, in which all programming is done in terms of so-called objects. An object in Smalltalk or similar object-oriented languages consists of data together with the procedures (program segments) to operate on that data. Encapsulation refers to the fact that an object's data can be accessed only through the methods (procedures) provided. Programming is done by creating objects that send messages to one another so that tasks can be accomplished cooperatively by invoking each other's methods. This object-oriented paradigm has been very influential. For example, the language C, which was popular for engineering applications and systems development, has largely been supplanted by its object-oriented extension C++. An object-oriented version of BASIC, named Visual BASIC, is available for personal computers and allows even novice programmers to create interactive applications with elegant graphical user interfaces (GUIs). In 1995, Sun Microsystems, Inc. introduced Java, yet another object-oriented language. Applications written in Java are not translated into a particular machine language but into an intermediate language called Java Byte code, which may be executed on any computer (such as those using UNIX, Macintosh, or Windows operating systems) with a Java interpretation program known as a Java virtual machine. (See Program translation below.) Thus, Java is ideal for creating distributed applications or Web-based applications. The applications can reside on a server in Byte code form, which is readily downloaded to and executed on any Java virtual machine. In many cases, it is not desirable to download an entire application but only an interface through which a client may communicate interactively with the application. Java applets (small chunks of application code) solve this problem. Residing on Web-based servers, they may be downloaded to and run in any standard Web browser to provide, for example, a client interface to a game or database residing on a server.

 

By Waseem Khurshid

www.waseemk.tk


Tell your friends about this website
Home | Engineers | Search | Data Books | Engg Books | Formulae | Theorems
Hot Links | Engg Projects | Circuit Diagrams | Pak Institutes | Int'l Institutes | Forum | Add URL | Post Ads | Contact | Guestbook | Special Thanx

All Rights Reserved � 2001 Engineers
800 x 600 Internet Explorer


Hosted by www.Geocities.ws

1