The first computer science degree program in the United States was formed at Purdue University in Although many initially believed it was impossible that computers themselves could actually be a scientific field of study, in the late fifties it gradually became accepted among the greater academic population. Time has seen significant improvements in the usability and effectiveness of computing technology. Initially, computers were quite costly, and some degree of human aid was needed for efficient use—in part from professional computer operators.
As computer adoption became more widespread and affordable, less human assistance was needed for common usage. Despite its short history as a formal academic discipline, computer science has made a number of fundamental contributions to science and society—in fact, along with electronics , it is a founding science of the current epoch of human history called the Information Age and a driver of the information revolution , seen as the third major leap in human technological progress after the Industrial Revolution — CE and the Agricultural Revolution — BC.
Although first proposed in ,  the term "computer science" appears in a article in Communications of the ACM ,  in which Louis Fein argues for the creation of a Graduate School in Computer Sciences analogous to the creation of Harvard Business School in ,  justifying the name by arguing that, like management science , the subject is applied and interdisciplinary in nature, while having the characteristics typical of an academic discipline.
Because of this, several alternative names have been proposed. Danish scientist Peter Naur suggested the term datalogy ,  to reflect the fact that the scientific discipline revolves around data and data treatment, while not necessarily involving computers. The first scientific institution to use the term was the Department of Datalogy at the University of Copenhagen, founded in , with Peter Naur being the first professor in datalogy. The term is used mainly in the Scandinavian countries.
An alternative term, also proposed by Naur, is data science ; this is now used for a distinct field of data analysis, including statistics and databases.
Also, in the early days of computing, a number of terms for the practitioners of the field of computing were suggested in the Communications of the ACM — turingineer , turologist , flow-charts-man , applied meta-mathematician , and applied epistemologist. A folkloric quotation, often attributed to—but almost certainly not first formulated by— Edsger Dijkstra , states that "computer science is no more about computers than astronomy is about telescopes.
For example, the study of computer hardware is usually considered part of computer engineering , while the study of commercial computer systems and their deployment is often called information technology or information systems. However, there has been much cross-fertilization of ideas between the various computer-related disciplines.
Computer science research also often intersects other disciplines, such as philosophy, cognitive science , linguistics , mathematics , physics , biology , statistics , and logic. Computer science is considered by some to have a much closer relationship with mathematics than many scientific disciplines, with some observers saying that computing is a mathematical science.
The relationship between computer science and software engineering is a contentious issue, which is further muddied by disputes over what the term "software engineering" means, and how computer science is defined. The academic, political, and funding aspects of computer science tend to depend on whether a department formed with a mathematical emphasis or with an engineering emphasis.
Computer science departments with a mathematics emphasis and with a numerical orientation consider alignment with computational science. Both types of departments tend to make efforts to bridge the field educationally if not across all research. A number of computer scientists have argued for the distinction of three separate paradigms in computer science.
Peter Wegner argued that those paradigms are science, technology, and mathematics. Eden described them as the "rationalist paradigm" which treats computer science as a branch of mathematics, which is prevalent in theoretical computer science, and mainly employs deductive reasoning , the "technocratic paradigm" which might be found in engineering approaches, most prominently in software engineering , and the "scientific paradigm" which approaches computer-related artifacts from the empirical perspective of natural sciences , identifiable in some branches of artificial intelligence.
As a discipline, computer science spans a range of topics from theoretical studies of algorithms and the limits of computation to the practical issues of implementing computing systems in hardware and software. In addition to these four areas, CSAB also identifies fields such as software engineering, artificial intelligence, computer networking and communication, database systems, parallel computation, distributed computation, human—computer interaction, computer graphics, operating systems, and numerical and symbolic computation as being important areas of computer science.
Theoretical Computer Science is mathematical and abstract in spirit, but it derives its motivation from practical and everyday computation. Its aim is to understand the nature of computation and, as a consequence of this understanding, provide more efficient methodologies. All studies related to mathematical, logic and formal concepts and methods could be considered as theoretical computer science, provided that the motivation is clearly drawn from the field of computing.
Data structures and algorithms is the study of commonly used computational methods and their computational efficiency. According to Peter Denning , the fundamental question underlying computer science is, "What can be efficiently automated? In an effort to answer the first question, computability theory examines which computational problems are solvable on various theoretical models of computation.
The second question is addressed by computational complexity theory , which studies the time and space costs associated with different approaches to solving a multitude of computational problems. Information theory is related to the quantification of information.
This was developed by Claude Shannon to find fundamental limits on signal processing operations such as compressing data and on reliably storing and communicating data. Codes are used for data compression , cryptography , error detection and correction , and more recently also for network coding.
Codes are studied for the purpose of designing efficient and reliable data transmission methods. Programming language theory is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of programming languages and their individual features. It falls within the discipline of computer science, both depending on and affecting mathematics , software engineering, and linguistics.
It is an active research area, with numerous dedicated academic journals. Formal methods are a particular kind of mathematically based technique for the specification , development and verification of software and hardware systems. The use of formal methods for software and hardware design is motivated by the expectation that, as in other engineering disciplines, performing appropriate mathematical analysis can contribute to the reliability and robustness of a design.
They form an important theoretical underpinning for software engineering, especially where safety or security is involved. Formal methods are a useful adjunct to software testing since they help avoid errors and can also give a framework for testing.
For industrial use, tool support is required. However, the high cost of using formal methods means that they are usually only used in the development of high-integrity and life-critical systems , where safety or security is of utmost importance. Formal methods are best described as the application of a fairly broad variety of theoretical computer science fundamentals, in particular logic calculi, formal languages , automata theory , and program semantics , but also type systems and algebraic data types to problems in software and hardware specification and verification.
Computer architecture, or digital computer organization, is the conceptual design and fundamental operational structure of a computer system. It focuses largely on the way by which the central processing unit performs internally and accesses addresses in memory. Computer performance analysis is the study of work flowing through computers with the general goals of improving throughput , controlling response time , using resources efficiently, eliminating bottlenecks , and predicting performance under anticipated peak loads.
Concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other. A number of mathematical models have been developed for general concurrent computation including Petri nets , process calculi and the Parallel Random Access Machine model.
A distributed system extends the idea of concurrency onto multiple computers connected through a network. Computers within the same distributed system have their own private memory, and information is often exchanged among themselves to achieve a common goal. Computer security is a branch of computer technology with an objective of protecting information from unauthorized access, disruption, or modification while maintaining the accessibility and usability of the system for its intended users.
Cryptography is the practice and study of hiding encryption and therefore deciphering decryption information. Modern cryptography is largely related to computer science, for many encryption and decryption algorithms are based on their computational complexity.
A database is intended to organize, store, and retrieve large amounts of data easily. Digital databases are managed using database management systems to store, create, maintain, and search data, through database models and query languages.
Computer graphics is the study of digital visual contents, and involves synthesis and manipulation of image data. The study is connected to many other fields in computer science, including computer vision , image processing , and computational geometry , and is heavily applied in the fields of special effects and video games.
Research that develops theories, principles, and guidelines for user interface designers, so they can create satisfactory user experiences with desktop, laptop, and mobile devices. Scientific computing or computational science is the field of study concerned with constructing mathematical models and quantitative analysis techniques and using computers to analyze and solve scientific problems.
In practical use, it is typically the application of computer simulation and other forms of computation to problems in various scientific disciplines. Artificial intelligence AI aims to or is required to synthesize goal-orientated processes such as problem-solving, decision-making, environmental adaptation, learning, and communication found in humans and animals.
From its origins in cybernetics and in the Dartmouth Conference , artificial intelligence research has been necessarily cross-disciplinary, drawing on areas of expertise such as applied mathematics , symbolic logic , semiotics , electrical engineering , philosophy of mind , neurophysiology , and social intelligence. AI is associated in the popular mind with robotic development , but the main field of practical application has been as an embedded component in areas of software development , which require computational understanding.
The starting-point in the late s was Alan Turing 's question "Can computers think? But the automation of evaluative and predictive tasks has been increasingly successful as a substitute for human monitoring and intervention in domains of computer application involving complex real-world data.
Software engineering is the study of designing, implementing, and modifying software in order to ensure it is of high quality, affordable, maintainable, and fast to build. It is a systematic approach to software design, involving the application of engineering practices to software. Software engineering deals with the organizing and analyzing of software—it doesn't just deal with the creation or manufacture of new software, but its internal maintenance and arrangement.
Both computer applications software engineers and computer systems software engineers are projected to be among the fastest growing occupations from to Conferences are important events for computer science research. First, particularity and consistency are important when writing papers for technical subjects. While you write assignments for computer science projects, you must be able to explain the importance of what you have implemented, the specifications of your implementations, and your future work.
Furthermore, you should learn how to sum up your ideas, so that the audience can understand your logic. The significance of writing depends on the classes you are taking. In classes such as Logic for Computer Science, writing is necessary to reach an answer a problem for computer science projects.
If you are taking software development classes, it is important to learn how to write clearly to deal with your customers in your future career. Writing helps to understand course material, consolidate different concepts, and allows us to make a synthesis of information. Overall, if you want to earn a degree in computer science, it is essential to develop writing skills.
Students should know how to become engaged in communication through writing to succeed in the computer science field. If it is difficult for you to solve computer science assignments , you can seek help at Assignment. A good book on writing: Bugs in Writing Using Citations A citation is an annotation for a sentence.
It is not part of the sentence and should play no grammatical role in the sentence. In other words, if you remove the citation, the sentence should still be grammatically correct and complete. Wrong "Thirty-second quasi-lunar normal form is defined in [AO72]. It is hard for a reader to remember the meaning of Reference This forces her to repeatedly look this up as she is reading. If you use the more common convention of author initials and year e. A few brief pointers on common mistakes are given below.
Do not start sentences with symbols, even capitalized symbols. Wrong R1 and R2 are disjoint. Right The relations R1 and R2 are disjoint. Function f is total. Avoid using notation with multiple, or horrors!
Computer science studies computers and their appliance in systems control, computation, information processing, and programming. Writing is an important skill to develop for a computer science major, no matter what type of computer science projects you .
Computer Science Writing The following is an incomplete list of some writing tips that I find useful for writing about computer science research in English. First, a bit about my writing style. Strunk and White "The Elements of Style" is a great starting point for CS writers. Yes, it is prescriptive.
Written in an accessible style, and including handy checklists and exercises, Writing for Computer Science is not only an introduction to the doing and describing of research, but is a valuable reference for working scientists in the computing and mathematical sciences/5(17). the writing used in Computer Science courses: writing to develop facility with the specialized language of the discipline, writing to explain results of a study, and writing as a process for clarification of fuzzy ideas.
Department of Computer Science & Engineering University of California at San Diego This document records some reflections and information on the subject of technical writing. Another reason to avoid URLs for web pages is that unlike academic papers and conferences in Computer Science, web pages usually have not been peer-reviewed, and many are written to persuade, not inform. With the current rate of publication, often it is impossible to cite all literature on a subject.