Skip to content

Glossary

API (Application Programming Interface)

A set of rules and tools that allows different software applications to communicate with each other.

Abstraction

The process of hiding the complex reality while exposing only the necessary parts, often seen in the context of object-oriented programming.

Agile Development

A methodology for software development that emphasizes flexibility, collaboration, and a step-by-step approach to project completion.

Algorithm

A step-by-step procedure or formula for solving a problem.

Artificial Intelligence (AI)

The simulation of human intelligence by machines, particularly computer systems, enabling them to perform tasks that normally require human intelligence.

Backend

The part of a software system or application that is not directly accessed by the user, typically responsible for storing and manipulating data.

Binary

A type of data and file format used in computing which consists of binary code, a series of 1s and 0s.

Binary Tree

A tree data structure in which each node has at most two children, referred to as the left child and the right child.

Binding

The process of associating or mapping a variable with a type or a value with a variable.

Blockchain

A system of recording information in a way that makes it difficult or impossible to change, hack, or cheat the system, a digital ledger of transactions that is duplicated and distributed across the entire network of computer systems.

Branching

The process of diverging from the main line of development to work separately without affecting that main line.

Bug

An error or flaw in software that causes it to produce incorrect or unexpected results.

Class

In object-oriented programming, a blueprint for creating objects, providing initial values for state (member variables) and implementations of behavior (member functions or methods).

Cloud Computing

The delivery of different services through the Internet, including data storage, servers, databases, networking, and software.

Cohesion

A measure of how strongly-related and focused the various responsibilities of a software module are.

Commit

An action in version control that saves a set of changes to the source code.

Compiler

A program that translates code written in a high-level programming language into machine language.

Container

A standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another.

Continuous Integration

A software practice where code changes are automatically tested and merged into a shared repository frequently.

Data Mining

The process of discovering patterns and knowledge from large amounts of data.

Data Structure

A particular way of organizing and storing data in a computer so that it can be accessed and modified efficiently.

Database

A collection of data that is organized so that it can be easily accessed, managed, and updated.

Deadlock

A situation in computing where two processes are each waiting for the other to release a resource, resulting in both processes being halted.

Debugging

The process of finding and fixing errors or bugs in software.

Dependency Injection

A technique whereby one object supplies the dependencies of another object, which helps in decoupling software modules.

Deployment

The process of making a software application available for use.

DevOps

A set of practices that combines software development (Dev) and IT operations (Ops) aiming to shorten the systems development life cycle and provide continuous delivery with high software quality.

Elasticity

The ability of a system to grow or shrink dynamically in response to changes in demand, particularly in the context of cloud computing.

Encapsulation

The technique of bundling the data and the methods that operate on that data within a single unit or class.

End-User

The person or group who ultimately uses or is intended to ultimately use a software product.

Entity

In software engineering, particularly in object-oriented and relational databases, an entity is a thing capable of an independent existence that can be uniquely identified.

Entity Framework

An open-source object-relational mapping framework for .NET, allowing developers to work with a database using .NET objects.

Exception Handling

The process of responding to the occurrence of exceptions - anomalous or exceptional conditions requiring special processing - during the execution of a program.

Facade Pattern

A structural design pattern that provides a simplified interface to a complex system of classes, library or framework.

Factory Method

A design pattern that provides an interface for creating objects in a superclass but allows subclasses to alter the type of objects that will be created.

Fault Tolerance

The ability of a system to continue operating properly in the event of the failure of some of its components.

Framework

A set of tools, libraries, and best practices designed to help developers build software applications.

Frontend

The part of a software system or application that interacts with the user, often involving the user interface and user experience components.

Function

A block of organized, reusable code that is used to perform a single, related action.

Functional Programming

A programming paradigm where programs are constructed by applying and composing functions, emphasizing the application of functions, rather than changes in state.

Garbage Collection

An automatic memory management feature that frees up memory that is no longer in use or needed by the program.

Git

A version control system for tracking changes in computer files and coordinating work on those files among multiple people.

GraphQL

A query language for APIs and a runtime for executing those queries by using a type system you define for your data.

Greedy Algorithm

An algorithmic strategy that makes the best choice at each small stage with the hope of finding the global optimum.

Hash Table

A data structure that implements an associative array abstract data type, a structure that can map keys to values.

Hashing

The process of converting an input of any length into a fixed size string of bytes, typically used in creating hash tables.

Heap

A type of tree-based data structure that satisfies the heap property, used in service of algorithms like heap sort or to implement priority queues.

Heuristic Evaluation

A method used in user interface design to identify usability problems in the user interface design.

High Availability

The ability of a system or component to be continuously operational for a desirably long length of time.

IDE (Integrated Development Environment)

A software application that provides comprehensive facilities to computer programmers for software development.

Idempotence

A property of certain operations in which the operation can be applied multiple times without changing the result beyond the initial application.

Immutable

An object whose state cannot be modified after it is created.

Inheritance

A feature of object-oriented programming that allows a class to inherit properties and methods from another class.

Integration Testing

The phase in software testing in which individual software modules are combined and tested as a group.

Interface

A shared boundary across which two separate components of a computer system exchange information.

Interface Segregation Principle

A principle in object-oriented design that states clients should not be forced to depend upon interfaces they do not use.

Iteration

The repetition of a process or set of instructions in a computer program.

JIT Compiler (Just-In-Time Compiler)

A component of the runtime environment that improves the performance of Java applications by compiling bytecode into native machine code at runtime.

JSON (JavaScript Object Notation)

A lightweight format for storing and transporting data, often used when data is sent from a server to a web page.

JSON Web Token (JWT)

An open standard used to share security information between two parties — a client and a server.

JVM (Java Virtual Machine)

An engine that provides a runtime environment to drive Java applications or programs.

Just-In-Time Compilation (JIT)

A form of dynamic compilation where a bytecode or source code is converted to machine code at runtime.

Kernel

The core component of most computer operating systems; it manages system resources and the communication between hardware and software components.

Kernighan and Ritchie (K&R)

Denotes the book 'The C Programming Language' and sometimes the style of C programming presented in this book.

Key-Value Store

A type of non-relational database that uses a simple key/value method to store data.

Kubernetes

An open-source platform designed to automate deploying, scaling, and operating application containers.

Latency

The delay before a transfer of data begins following an instruction for its transfer.

Latent Bug

A bug that exists in a system but has not yet caused a failure because the exact condition to trigger the fault hasn't been met.

Library

A collection of precompiled routines that a program can use.

Linked List

A linear data structure where each element is a separate object and elements are linked using pointers.

Load Balancing

The process of distributing a set of tasks over a set of resources, with the aim of making their overall processing more efficient.

Memoization

An optimization technique used primarily to speed up computer programs by storing the results of expensive function calls.

Method

A function associated with an object in object-oriented programming.

Microservices

An architectural style that structures an application as a collection of small autonomous services, modeled around a business domain.

Middleware

Software that connects software applications or components and allows them to communicate and exchange data.

Module

A file or collection of files containing code that can be included in a project to provide additional functionality.

Mutex (Mutual Exclusion Object)

A program object that allows multiple program threads to share the same resource, such as file access, but not simultaneously.

NoSQL

A category of database management systems that does not follow the traditional database system and is used for storing and retrieving data.

Non-Functional Requirement

A requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviors.

Normalization

The process of organizing data in a database to reduce redundancy and improve data integrity.

Null Object Pattern

A design pattern that uses an object with defined neutral ('null') behavior as a default value.

Object

An instance of a class that includes both data and functions to manipulate the data.

Object-Oriented Programming (OOP)

A programming paradigm that uses objects and their interactions to design and program applications.

Observer Pattern

A design pattern where an object, called the subject, maintains a list of its dependents, called observers, and notifies them of any state changes.

Open Source

Software for which the original source code is made freely available and may be redistributed and modified.

Orchestration

The automated configuration, coordination, and management of computer systems and software.

Peer Review

The evaluation of work by one or more people with similar competences as the producers of the work.

Pointer

A variable that stores the memory address of another variable.

Polymorphic Association

An association that can link to more than one type of object, often implemented in database design.

Polymorphic Virus

A type of malware that changes its identifiable features in order to evade detection.

Polymorphism

The ability of different objects to respond in a unique way to the same functionality request.

Prototype

An early sample, model, or release of a product built to test a concept or process.

Quality Assurance

A way of preventing mistakes or defects in manufactured products and avoiding problems when delivering solutions or services to customers.

Query

A request for data or information from a database.

Query Optimization

The process of enhancing the performance of a database system by modifying query execution plans.

Queue

A collection of entities that are maintained in a sequence and can be modified by the addition of entities at one end and the removal from the other end.

REST (Representational State Transfer)

An architectural style for designing networked applications, often used in web services development.

Race Condition

A situation that occurs in a computing system when two or more processes or threads access shared data and they try to change it at the same time.

Recursion

A programming technique where a function calls itself in order to solve a problem.

Refactoring

The process of restructuring existing computer code without changing its external behavior to improve its readability and reduce its complexity.

Regression Testing

A type of software testing that ensures that previously developed and tested software still performs correctly after it was changed or interfaced with other software.

Repository

A central location where data is stored and managed.

Runtime

The period during which a software program is running or being executed, as opposed to other phases like compilation or linking.

SDK (Software Development Kit)

A collection of software tools and libraries designed to help developers create applications on specific platforms.

Scalability

The capability of a system, network, or process to handle a growing amount of work, or its potential to be enlarged to accommodate that growth.

Singleton Pattern

A design pattern that restricts the instantiation of a class to one single instance.

Software Development Life Cycle (SDLC)

A process for planning, creating, testing, and deploying an information system.

Software as a Service (SaaS)

A software distribution model in which a service provider hosts applications and makes them available to customers over the Internet.

Source Code

The fundamental code that creates a program, which can be read and modified by programmers.

Stack

An abstract data type that serves as a collection of elements, with two principal operations: push, which adds an element to the collection, and pop, which removes the most recently added element.

Test-Driven Development

A software development process that relies on the repetition of a very short development cycle: requirements are turned into very specific test cases, then the software is improved to pass the new tests.

Thread

The smallest sequence of programmed instructions that can be managed independently by a scheduler, which is typically a part of the operating system.

Transaction

A sequence of operations performed as a single logical unit of work, often used in the context of database operations.

Tuple

An ordered list of elements, which may be of different types, used in programming to store a collection of items.

UML (Unified Modeling Language)

A standardized modeling language consisting of an integrated set of diagrams, used to specify, visualize, construct, and document the artifacts of a software system.

Unit Testing

The practice of testing the smallest pieces of code, typically individual functions or methods, in isolation from the rest of the program.

Validation

The process of checking if something satisfies a certain criterion or meets a certain requirement.

Variable

A storage location paired with an associated symbolic name, which contains some known or unknown quantity of information referred to as a value.

Version Control

A system that records changes to a file or set of files over time so that specific versions can be recalled later.

Virtual Machine

A software emulation of a physical computer that can execute programs like a real computer.

Web Service

A software service used to communicate between two electronic devices over the web.

XML (eXtensible Markup Language)

A markup language that defines a set of rules for encoding documents in a format that is both human-readable and machine-readable.

XSS (Cross-Site Scripting)

A security vulnerability typically found in web applications that allows attackers to inject client-side scripts into web pages viewed by other users.

YAML (YAML Ain't Markup Language)

A human-readable data serialization standard that can be used in conjunction with all programming languages and is often used to write configuration files.