Courtesy : BSc Computer Science
Theoretical computer science
Main article: Theoretical computer science
Theoretical Computer Science is mathematical and abstract in spirit, but it derives its motivation from the practical and everyday computation. Its aim is to understand the nature of computation and, as a consequence of this understanding, provide more efficient methodologies. # ISO certification in India
Theory of computation
Main article: Theory of computation
According to Peter Denning, the fundamental question underlying computer science is, “What can be automated?” Theory of computation is focused on answering fundamental questions about what can be computed and what amount of resources are required to perform those computations. 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. # ISO certification in India
The famous P = NP? problem, one of the Millennium Prize Problems, is an open problem in the theory of computation.
{\displaystyle M=\{X:X\not \in X\}} | |||
Automata theory | Formal languages | Computability theory | Computational complexity theory |
Models of computation | Quantum computing theory | Logic circuit theory | Cellular automata |
Information and coding theory
Main articles: Information theory and Coding theory
Information theory, closely related to probability and statistics, 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. Coding theory is the study of the properties of codes (systems for converting information from one form to another) and their fitness for a specific application. 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.
Coding theory | Channel capacity | Algorithmic information theory | Signal detection theory | Kolmogorov complexity |
Data structures and algorithms
Main articles: Data structure and Algorithm
Data structures and algorithms are the studies of commonly used computational methods and their computational efficiency.
O(n2) | |||||
Analysis of algorithms | Algorithm design | Data structures | Combinatorial optimization | Computational geometry | Randomized algorithms |
Programming language theory and formal methods
Main articles: Programming language theory and Formal 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. # ISO certification in India
{\displaystyle \Gamma \vdash x:{\text{Int}}} | |||||
Formal semantics | Type theory | Compiler design | Programming languages | Formal verification | Automated theorem proving |
Computer systems
Computer architecture and organization
Main articles: Computer architecture, Computer organisation, and Computer engineering
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 engineers study computational logic and design of computer hardware, from individual processor components, microcontrollers, personal computers to supercomputers and embedded systems. The term “architecture” in computer literature can be traced to the work of Lyle R. Johnson and Frederick P. Brooks, Jr., members of the Machine Organization department in IBM’s main research center in 1959.
Processing unit | Microarchitecture | Multiprocessing | Processor design |
Ubiquitous computing | Systems architecture | Operating systems | Input/output |
Embedded system | Real-time computing | Dependability | Interpreter |
Concurrent, parallel and distributed computing
Main articles: Concurrency (computer science) and Distributed computing
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. When multiple computers are connected in a network while using concurrency, this is known as a distributed system. Computers within that distributed system have their own private memory, and information can be exchanged to achieve common goals. # ISO certification in India