Courtesy : BSc Computer Science
Applied computer science
Computer graphics and visualization
Main article: Computer graphics (computer science)
Computer graphics is the study of digital visual contents and involves the 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.
Image and sound processing
Main article: Information processing
Information can take the form of images, sound, video or other multimedia. Bits of information can be streamed via signals. Its processing is the central notion of informatics, the European view on computing, which studies information processing algorithms independently of the type of information carrier – whether it is electrical, mechanical or biological. This field plays important role in information theory, telecommunications, information engineering and has applications in medical image computing and speech synthesis, among others. What is the lower bound on the complexity of fast Fourier transform algorithms? is one of unsolved problems in theoretical computer science.
FFT algorithms | Image processing | Speech recognition | Data compression | Medical image computing | Speech synthesis |
Computational science, finance and engineering
Main articles: Computational science, Computational finance, and Computational engineering
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. A major usage of scientific computing is simulation of various processes, including computational fluid dynamics, physical, electrical, and electronic systems and circuits, as well as societies and social situations (notably war games) along with their habitats, among many others. Modern computers enable optimization of such designs as complete aircraft. Notable in electrical and electronic circuit design are SPICE, as well as software for physical realization of new (or modified) designs. The latter includes essential design software for integrated circuits.
Numerical analysis | Computational physics | Computational chemistry | Bioinformatics | Neuroinformatics | Psych informatics | Medical informatics | Computational engineering | Computational musicology |
Social computing and human–computer interaction
Main articles: Social computing and Human–computer interaction
Social computing is an area that is concerned with the intersection of social behavior and computational systems. Human–computer interaction research develops theories, principles, and guidelines for user interface designers.
Software engineering
Main article: Software engineering
See also: Computer programming
Software engineering is the study of designing, implementing, and modifying the 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 arrangement and maintenance. For example software testing, systems engineering, technical debt and software development processes.
Discoveries
The philosopher of computing Bill Rapaport noted three Great Insights of Computer Science:
- Gottfried Wilhelm Leibniz’s, George Boole’s, Alan Turing’s, Claude Shannon’s, and Samuel Morse’s insight: there are only two objects that a computer has to deal with in order to represent “anything”.
All the information about any computable problem can be represented using only 0 and 1 (or any other bistable pair that can flip-flop between two easily distinguishable states, such as “on/off”, “magnetized/de-magnetized”, “high-voltage/low-voltage”, etc.).
See also: Digital physics
- Alan Turing’s insight: there are only five actions that a computer has to perform in order to do “anything”.
Every algorithm can be expressed in a language for a computer consisting of only five basic instructions:
- move left one location;
- move right one location;
- read symbol at current location;
- print 0 at current location;
- print 1 at current location.
See also: Turing machine
- Corrado Böhm and Giuseppe Jacopini’s insight: there are only three ways of combining these actions (into more complex ones) that are needed in order for a computer to do “anything”.
Only three rules are needed to combine any set of basic instructions into more complex ones:
- sequence: first do this, then do that;
- selection: IF such-and-such is the case, THEN do this, ELSE do that;
- repetition: WHILE such-and-such is the case, DO this.
Note that the three rules of Boehm’s and Jacopini’s insight can be further simplified with the use of goto (which means it is more elementary than structured programming).
See also: Structured program theorem
Programming paradigms
Main article: Programming paradigm
Programming languages can be used to accomplish different tasks in different ways. Common programming paradigms include:
- Functional programming, a style of building the structure and elements of computer programs that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It is a declarative programming paradigm, which means programming is done with expressions or declarations instead of statements.
- Imperative programming, a programming paradigm that uses statements that change a program’s state. In much the same way that the imperative mood in natural languages expresses commands, an imperative program consists of commands for the computer to perform. Imperative programming focuses on describing how a program operates.
- Object-oriented programming, a programming paradigm based on the concept of “objects”, which may contain data, in the form of fields, often known as attributes; and code, in the form of procedures, often known as methods. A feature of objects is that an object’s procedures can access and often modify the data fields of the object with which they are associated. Thus object-oriented computer programs are made out of objects that interact with one another.
- Service-oriented programming, a programming paradigm that uses “services” as the unit of computer work, to design and implement integrated business applications and mission critical software programs
Many languages offer support for multiple paradigms, making the distinction more a matter of style than of technical capabilities