CS Fields
Mathematical foundations
- Mathematical logic
- Boolean logic and other ways of modeling logical queries; the uses and limitations of formal proof methods.
- Number theory
- Theory of proofs and heuristics for finding proofs in the simple domain of integers. Used in cryptography as well as a test domain in artificial intelligence.
- Graph theory
- Foundations for data structures and searching algorithms.
- Type theory
- Formal analysis of the types of data, and the use of these types to understand properties of programs, especially program safety.
- Category theory
- Category theory provides a means of capturing all of math and computation in a single synthesis.
- Computational geometry
- The study of algorithms to solve problems stated in terms of geometry.
- Numerical analysis
- Foundations for algorithms in discrete mathematics, as well as the study of the limitations of floating point computation, including round-off errors.
Theory of Computation:
- Automata theory
- Different logical structures for solving problems.
- Computability theory
- What is calculable with the current models of computers. Proofs developed by Alan Turing and others provide insight into the possibilities of what can be computed and what cannot.
- Computational complexity theory
- Fundamental bounds (especially time and storage space) on classes of computations.
- Quantum computing theory
- Representation and manipulation of data using the quantum properties of particles and quantum mechanism.
Algorithms and data structures
- Analysis of algorithms
- Time and space complexity of algorithms.
- Algorithms
- Formal logical processes used for computation, and the efficiency of these processes.
- Data structures
- The organization of and rules for the manipulation of data.
Programming languages and compilers
- Compilers
- Ways of translating computer programs, usually from higher level languages to lower level ones.
- Interpreters
- A program that takes in as input a computer program and executes it.
- Programming languages
- Formal language paradigms for expressing algorithms, and the properties of these languages (e.g., what problems they are suited to solve).
Concurrent, parallel, and distributed systems:
- Concurrency
- The theory and practice of simultaneous computation; data safety in any multitasking or multithreaded environment.
- Distributed computing
- Computing using multiple computing devices over a network to accomplish a common objective or task and thereby reducing the latency involved in single processor contributions for any task.
- Parallel computing
- Computing using multiple concurrent threads of execution.
Software engineering:
- Algorithm design
- Using ideas from algorithm theory to creatively design solutions to real tasks
- Computer programming
- The practice of using a programming language to implement algorithms
- Formal methods
- Mathematical approaches for describing and reasoning about software designs.
- Reverse engineering
- The application of the scientific method to the understanding of arbitrary existing software
- Software development
- The principles and practice of designing, developing, and testing programs, as well as proper engineering practices.
System architecture:
- Computer architecture
- The design, organization, optimization and verification of a computer system, mostly about CPUs and memory subsystems (and the bus connecting them).
- Computer organization
- The implementation of computer architectures, in terms of descriptions of their specific electrical circuitry
- Operating systems
- Systems for managing computer programs and providing the basis of a useable system.
Communications:
- Computer audio
- Algorithms and data structures for the creation, manipulation, storage, and transmission of digital audio recordings. Also important in voice recognition applications.
- Networking
- Algorithms and protocols for communicating data across different shared or dedicated media, often including error correction.
- Cryptography
- Applies results from complexity, probability and number theory to invent and break codes.
Databases:
- Data mining
- Data mining is the extraction of relevant data from all sources of data.
- Relational databases
- Study of algorithms for searching and processing information in documents and databases; closely related to information retrieval.
- OLAP
- Online Analytical Processing, or OLAP, is an approach to quickly provide answers to analytical queries that are multi-dimensional in nature. OLAP is part of the broader category business intelligence, which also encompasses relational reporting and data mining.
Artificial intelligence:
- Artificial intelligence
- The implementation and study of systems that exhibit an autonomous intelligence or behaviour of their own.
- Artificial life
- The study of digital organisms to learn about biological systems and evolution.
- Automated reasoning
- Solving engines, such as used in Prolog, which produce steps to a result given a query on a fact and rule database.
- Computer vision
- Algorithms for identifying three dimensional objects from one or more two dimensional pictures.
- Machine learning
- Automated creation of a set of rules and axioms based on input.
- Natural language processing/Computational linguistics
- Automated understanding and generation of human language
- Robotics
- Algorithms for controlling the behavior of robots.
Visual rendering (or Computer graphics):
- Computer graphics
- Algorithms both for generating visual images synthetically, and for integrating or altering visual and spatial information sampled from the real world.
- Image processing
- Determining information from an image through computation.
Human-Computer Interaction:
- Human computer interaction
- The study of making computers and computations useful, usable and universally accessible to people, including the study and design of computer interfaces through which people use computers.
Scientific computing:
- Bioinformatics
- The use of computer science to maintain, analyse, and store biological data, and to assist in solving biological problems such as protein folding, function prediction and phylogeny.
- Cognitive Science
- Computational modelling of real minds
- Computational chemistry
- Computational modelling of theoretical chemistry in order to determine chemical structures and properties
- Computational neuroscience
- Computational modelling of real brains
- Computational physics
- Numerical simulations of large non-analytic systems
- Numerical algorithms
- Algorithms for the numerical solution of mathematical problems such as root-finding, integration, the solution of ordinary differential equations and the approximation/evaluation of special functions.
- Symbolic mathematics
- Manipulation and solution of expressions in symbolic form, also known as Computer algebra.
History:
- History of computer science
- difference engine
- Wilhelm Schickard
- Ada Lovelace
- Charles Babbage
- Edsger Dijkstra
- Grace Hopper
- Kurt Gödel
- Alan Turing
- Dartmouth Time-Sharing System
- IBM System/370
Extra Credit:
Languages:
- assembly languages
- structured programming
- procedural language
- Fortran
- BASIC
- Python
- Perl
- Java
- C#
- C
- C++
- Lisp programming language
- Pascal
- COBOL
- PHP
- Ruby
- ALGOL 68 (obscure)
- Simula 67 (obscure)
Computer Science Fields:
- Theory of computation
- Operating Systems
- Numerical computation
- Compilers
- Software Engineering
- Databases
- Real-time computing
- Distributed system
- Computer Networking
- Data Communication
- Computer graphics
- Artificial Intelligence
- Multimedia
General CS articles:
- Abstraction (computer science)
- address space
- alphanumeric code
- array
- artificial intelligence
- atomic
- big endian
- binary tree
- bit array
- buffer overflow
- call stack
- Cheney’s algorithm
- Class (computer science)
- compiler
- computability
- computation
- computational complexity theory
- computer programming
- Concurrency (computer science)
- context switching
- Coupling (computer science)
- cryptography
- dangling pointers
- data
- data structure
- deadlocks
- Design pattern (computer science)
- Digital Revolution
- dynamic memory allocation
- exceptions
- exploits
- function
- function prototype
- Garbage Collection
- halting problem
- Hashing
- Heap overflow
- heuristic
- Heuristic algorithm
- Information Age
- Inheritance (computer science)
- Instruction (computer science)
- Integer (computer science)
- Kernel (computer science)
- Library (computing)
- linked list
- little endian
- Lock (computer science)
- malloc
- memory allocator
- Memory leak
- Memory management
- memory pool
- Method (computer science)
- Microsoft .NET Framework
- Modula-3
- Object (computer science)
- object inheritance
- object-oriented programming
- opcode
- paged memory
- Persistence (computer science)
- Polling (computer science)
- polymorphic code
- polymorphism
- process
- Process (computing)
- programming language theory
- quantum computing
- real-time
- Reflection (computer science)
- Reversible computing
- scheduler
- semipredicate problem
- serialize
- shared memory
- software engineering
- sorting algorithm
- Stack buffer overflow
- stack frame
- Standard Template Library
- state
- String (computer science)
- struct
- syntax
- system call
- system call
- thread
- type inference
- virtual memory
- void pointer
- Weak reference
- Whitespace (computer science)
