Search This Blog

Thursday, 24 October 2013

computer science

Most generally, computer science is the study of methods for organizing and processing data in computers. The fun-damental questions of concern to computer scientists range from foundations of theory to strategies for practical imple-mentation.

Fundamental Theory

•  What problems are susceptible to solving through an automated procedure? (See computability and com-plexity.)

•  Given that a problem is solvable, can it be solved without too much expenditure of time or computing resources?

•  Can a step-by-step procedure be devised for solving a given problem? (See algorithm.) How do different procedures (such as for sorting data) compare in effi-ciency and reliability? (See sorting and searching.)

•  What methods of organizing data are most useful? (See data structures.) What are the advantages and drawbacks of particular forms of organization? (See array, list processing, and queue.)

•  Which structures are best for representing the data needed for a given application? What is the best way to relate data to the procedures needed to manipulate it? (See encapsulation, class, and procedures and functions.)

The Tools of Computing

•  How can programs be structured so they are easier to read and maintain? (See structured programming and object-oriented programming.)

•  Can programmers keep up with growth of operating systems and application programs that have millions of lines of code? (See software engineering and quality assurance, software.)

•  How can multiple simultaneous tasks (or even mul-tiple processors) be coordinated to bring greater computing power to bear on problems? (See multi-tasking and multiprocessing.)

•  What is the best way to design an operating system, including the arrangement of different layers of the operating system such as the hardware-specific driv-ers, kernel (essential functions), and interfaces (shells or visual environments)? (See operating system, kernel, device driver, and shell.)

•  What should be emphasized in designing a program-ming language? How does one specify the grammar of statements the declaration and handling of data types, and the mechanism for handling functions or procedures? (See Backus-Naur form, data types, and procedures and functions.)

•  What considerations should be emphasized in design-ing a compiler for a given language? (See compiler.)

•  How should a network be organized, and what pro-tocols should be used for transferring data? (See network, Internet, data communications, tele-communications, and tcp/ip.)

Specific Application Areas

The general principles and tools must then be applied to a variety of application areas including:

•  text processing (see word processor, text editor, and font)

•  graphics (see computer graphics and image pro-cessing)

•  database management, including file structures and file access (such as indexing and hashing), and data-base architecture (relational databases) (see database management system, sql, and xml).

•  business data processing issues, including the design of MIS (management information systems) and deci-sion support systems

•  web applications, including commercial applications (see e-commerce), multimedia, database access, inte-gration of Web services (see bioinformatics service-oriented architecture, mashups, and web 2.0 and beyond), and appropriate programming techniques (see Ajax and scripting languages.)

•  scientific programming issues, including data acqui-sition, maintaining accuracy in calculations, and creating visualizations driven by the data (see data acquisition, numeric data and scientific comput-ing applications.)

•  user interface design (designing the interaction between human beings and the operating system or application) (see user interface)

•  the broad area of artificial intelligence, which affects ways of representing information and modeling rea-soning processes (see artificial intelligence, neu-ral network, expert systems, and knowledge representation.)

•  robotics and control systems (an older term, “cyber-netics,” has also been used for this field) (see robot-ics and cybernetics.)

Clearly the concerns of computer science overlap a num-ber of related fields. The design of computer hardware is often considered to be computer engineering, but designers of hardware must be familiar with the algorithms that will be used to operate it (see also computer engineering). Both artificial intelligence and user interface design are affected by cognitive science (or psychology), the study of human thought processes. Biology both inspires and is illu-minated by artificial life simulations, genetic algorithms, and neural networks. The most abstract questions of infor-mation processing touch on the field of information science (or information theory).

History of the Field

The early computer pioneers such as Alan Turing, J. Pre-sper Eckert, and John Mauchly brought backgrounds in mathematics or engineering (see Turing, Alan; Eckert, J. Presper; and Mauchly, John). By the 1960s, however, a discipline and curriculum for computer science began to emerge. By the late 1990s more than 175 departments in American and Canadian universities offered a doctorate in computer science, with about a thousand new Ph.D.s being granted each year. However, in the following decade the number of students majoring in computer science declined by about 50 percent. (See education in the computer field for more details.)

The traditional computer science field emphasizes the theory of data representation, algorithms, and system archi-tecture. In recent years a more practically oriented cur-riculum has emerged as an alternative. Under the titles of “Information Technology” or “Information Systems,” this curriculum emphasizes application areas such as manage-ment information systems, database management, system administration, and Web development.

No comments:

Post a Comment