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
- Types of Binary Tree
- Linked list
- Types of Linked List
- Singly Linked List
- Doubly Linked List
- Circular Linked List
- Methods
- Traversal
- Insertion
- Deletion
- Search
- Sort
- Types of Linked List
- Stack
- Types of Stack
- LIFO (Last-in First-out)
- Methods
- Push
- Pop
- isEmpty
- isFull
- Peek
- Types of Stack
- 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
- Types of Queues
- Heap
- Types of Heap
- Fibonacci Heap
- Methods
- Insert
- Heapify
- Delete
- Peek
- Extract-Max/Min
- Types of Heap
- 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