Science
Science

Glossary of Computer Science

Mathematical foundations

  • Coding theory: useful in networking, programming and other areas where computers communicate with each other.
  • Discrete Mathematics.
  • Graph theory: foundations for data structures and searching algorithms.
  • Mathematical logic: boolean logic and other ways of modeling logical queries; the uses and limitations of formal proof methods.
  • Number theory: theory of the integers. Used in cryptography as well as a test domain in artificial intelligence.

Concurrent, parallel, and distributed systems

  • Parallel computing: the theory and practice of simultaneous computation; data safety in any multitasking or multithreaded environment.
  • Concurrency: computing using multiple concurrent threads of execution, devising algorithms for solving problems on multiple processors to achieve maximal speed-up compared to sequential execution.
  • 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.

Databases

  • Relational databases: the set theoretic and algorithmic foundation of databases.
  • Structured Storage: non-relational databases such as NoSQL databases.

Programming languages and compilers

  • Compiler theory: theory of compiler design, based on Automata theory.
  • Programming language theory (PLT): is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of formal languages known as programming languages and of their individual features.
  • Formal semantics: rigorous mathematical study of the meaning of programs.
  • Type theory: formal analysis of the types of data, and the use of these types to understand properties of programs — especially program safety.

Computer architecture

  • Computer architecture: the design, organization, optimization and verification of a computer system, mostly about CPUs and Memory subsystem (and the bus connecting them).
  • Operating systems: systems for managing computer programs and providing the basis of a usable system.

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 may be computed and what may not.
  • Computational complexity theory: fundamental bounds (especially time and storage space) on classes of computations.

Computer Science

  • Abstraction
  • Finite-state machine
  • Idempotent logic
  • Observability

Data Structures

  • Hash Table
    • Hash Function
    • Hash Collision
  • Binary Tree
    • Types of Binary Tree
      • Binary Tree
      • Binary Search Tree (BSTs)
      • AVL Tree
      • B-Tree
      • B+ Tree
      • Red-Black Tree
  • Linked list
    • Types of Linked List
      • Singly Linked List
      • Doubly Linked List
      • Circular Linked List
    • Methods
      • Traversal
      • Insertion
      • Deletion
      • Search
      • Sort
  • Stack
    • Types of Stack
      • LIFO (Last-in First-out)
    • Methods
      • Push
      • Pop
      • isEmpty
      • isFull
      • Peek
  • Queue
    • Types of Queues
      • Simple Queue
      • Circular Queue
      • Priority Queue
      • Double Ended Queue
    • Rules
      • FIFO (First In, First Out)
      • LILO (Last-In-Last-Out)
    • Methods
      • Enqueue
      • Dequeue
      • isEmpty
      • isFull
      • Peek
  • Heap
    • Types of Heap
      • Fibonacci Heap
    • Methods
      • Insert
      • Heapify
      • Delete
      • Peek
      • Extract-Max/Min
  • Graph
    • BFS (Breadth-first search)
    • DFS (Depth-first search)
    • DLS (Depth-first search)
    • Bellman Ford's Algorithm
    • IDDFS (Iterative deepening depth-first search)
  • Sort
    • Bubble Sort
    • Selection Sort
    • Insertion Sort
    • Merge Sort
    • Quicksort
    • Counting Sort
    • Radix Sort
    • Bucket Sort
    • Heap Sort
    • Shell Sort
    • Linear Search
    • Binary Search
  • Greedy Algorithm
    • Ford-Fulkerson Algorithm
    • Dijkstra's Algorithm
    • Kruskal's Algorithm
    • Prim's Algorithm
    • Huffman Coding

Big O notation

Programming Paradigms

Functional

  • Pure Functions
  • First-class Functions
  • Higher Order Functions
  • State
  • Referential Transparency
  • Partial Application
  • Composition
  • Currying
  • PointFree
  • Continuation Passing Style
  • Fold
  • Lazy Evaluation
  • Callback
  • Memoization
  • Lambda
  • Hoisting
  • Deep copy
  • Shallow copy
  • Closures
  • Pipe
  • Memoization
  • Mappable
  • Covariant Functor
  • Contravariant Functor
  • Bifunctor
  • Monads
  • Isomorfism
  • Homomorfism
  • Morphism
  • Catamorphism
  • Applicative Functor
  • Recursion
  • Reducer
  • Transducer

Imperative

Logical

Object-Oriented

Class-based

Prototype-based

Declarative

Procedural

Event-Driven

Flow-Driven

Constraint

Aspect-Oriented

Reflective

Relational

Services

  • Backend as a Service (BaaS)
  • Serverless
  • Function as a Service (FaaS)
  • Plataform as a Service (PaaS)

Data Fetching

  • Over-fetching (trazer mais informação do que o necessário)
  • Under-fetching (trazer menos informação que o necessário, obrigando a realização de chamadas adicionais)
  • Two-way databinding

Agile

  • Behavior Driven Development

References

Outline of computer science (opens in a new tab)