Technology Fundamentals Terms

Core concepts of modern technology.

API
An Application Programming Interface (API) is a set of rules, protocols, and tools that allows different software applications to communicate with each other. It defines the methods and data formats that applications can use to request and exchange information.
SDK
A Software Development Kit (SDK) is a collection of software development tools in one installable package. They facilitate the creation of applications by having a compiler, debugger and sometimes a software framework.
Open Source
Open-source software (OSS) is computer software that is released under a license in which the copyright holder grants users the rights to use, study, change, and distribute the software and its source code to anyone and for any purpose.
Algorithm
An algorithm is a finite sequence of well-defined, computer-implementable instructions, typically to solve a class of problems or to perform a computation. It is a step-by-step procedure for calculations.
Cloud
In the simplest terms, "the cloud" refers to servers that are accessed over the Internet, and the software and databases that run on those servers. Cloud servers are located in data centers all over the world.
Data Structure
A data structure is a particular way of organizing, processing, retrieving, and storing data in a computer so that it can be used efficiently. Different kinds of data structures are suited to different kinds of applications.
Framework
A software framework provides a standard way to build and deploy applications. It is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate development of software applications, products and solutions.
Library
In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include pre-written code, subroutines, classes, values or type specifications.
Cache
A cache is a hardware or software component that stores data so that future requests for that data can be served faster. The data stored in a cache might be the result of an earlier computation or a copy of data stored elsewhere.
Scalability
Scalability is the property of a system to handle a growing amount of work by adding resources to the system. In an economic context, a scalable business model implies that a company can increase sales given increased resources.
Virtualization
Virtualization is the act of creating a virtual (rather than actual) version of something, including virtual computer hardware platforms, storage devices, and computer network resources.
Firmware
Firmware is a specific class of computer software that provides low-level control for a device's specific hardware. It can be thought of as "software for hardware."
Proprietary Software
Proprietary software, also known as closed-source software, is software that is owned by an individual or a company. It has restrictions on its use, modification, and copying. The source code is almost always kept secret.
Big O Notation
Big O notation is a mathematical notation that describes the limiting behavior of a function when the argument tends towards a particular value or infinity. In computer science, it is used to classify algorithms according to how their run time or space requirements grow as the input size grows.
Interpreter
An interpreter is a computer program that directly executes, i.e., performs, instructions written in a programming or scripting language, without requiring them previously to have been compiled into a machine language program.
Endpoint
In the context of APIs, an endpoint is one end of a communication channel. It refers to a specific URL where an API or a web service can be accessed by a client application.
Throughput
Throughput is the actual rate at which information is transferred. It is the amount of data that is successfully sent and received over a communication link in a given period of time.
Redundancy
In engineering, redundancy is the duplication of critical components or functions of a system with the intention of increasing reliability of the system, usually in the form of a backup or fail-safe.
High Availability
High availability is a characteristic of a system which aims to ensure an agreed level of operational performance, usually uptime, for a higher than normal period. It is achieved by eliminating single points of failure through redundancy.
Binary
Binary is a base-2 number system that uses only two symbols: typically 0 and 1. It is the most fundamental language of computers, as all computer data is ultimately represented as a series of binary digits, or bits.
Bit
A bit (short for binary digit) is the smallest unit of data in a computer. A bit has a single binary value, either 0 or 1.
Byte
A byte is a unit of digital information that most commonly consists of eight bits. Historically, the byte was the number of bits used to encode a single character of text in a computer.
Boolean
A Boolean is a data type that has one of two possible values, typically denoted as true or false. It is named after George Boole, who first defined an algebraic system of logic in the mid-19th century.
Character Encoding
Character encoding is a system that pairs a sequence of characters from a given set with something else, such as a sequence of natural numbers, octets, or electrical pulses, in order to facilitate the storage of text in computers and the transmission of text through telecommunication networks.
ASCII
ASCII (American Standard Code for Information Interchange) is a character encoding standard for electronic communication. It represents 128 specified characters—the numbers 0-9, the letters a-z and A-Z, some basic punctuation symbols, and control codes.
Unicode
Unicode is an international character encoding standard that provides a unique number for every character, no matter what the platform, no matter what the program, no matter what the language.
UTF-8
UTF-8 is a variable-width character encoding used for electronic communication. It is the dominant character encoding for the World Wide Web, accounting for over 98% of all web pages.
Abstraction
Abstraction is the process of hiding the complex reality while exposing only the essential parts. It involves simplifying complex systems by modeling classes, objects, and behaviors appropriate to the context, while hiding the implementation details.
Encapsulation
In object-oriented programming (OOP), encapsulation refers to the bundling of data (attributes) with the methods (functions) that operate on that data. It also involves restricting direct access to some of an object's components.
Garbage Collection
Garbage collection (GC) is a form of automatic memory management. The garbage collector attempts to reclaim memory that was allocated by the program, but is no longer referenced; such memory is called garbage.
Memory Leak
A memory leak is a type of resource leak that occurs when a computer program incorrectly manages memory allocations in such a way that memory which is no longer needed is not released. In object-oriented programming, a memory leak may happen when an object is stored in memory but cannot be accessed by the running code.
Stack
In computer science, a stack is an abstract data type that serves as a collection of elements, with two main principal operations: Push, which adds an element to the collection, and Pop, which removes the most recently added element that was not yet removed. This is known as a Last-In, First-Out (LIFO) data structure.
Queue
A queue is an abstract data structure, somewhat similar to a stack. Unlike a stack, a queue is open at both its ends. One end is always used to insert data (enqueue) and the other is used to remove data (dequeue). A queue follows the First-In, First-Out (FIFO) methodology.
Heap
In computer science, a heap is a specialized tree-based data structure which is an almost complete tree that satisfies the heap property. In a max heap, for any given node C, if P is a parent node of C, then the key (the value) of P is greater than or equal to the key of C. In a min heap, the key of P is less than or equal to the key of C.
Tree
A tree is a widely used abstract data type that simulates a hierarchical tree structure, with a root value and subtrees of children with a parent node, represented as a set of linked nodes.
Graph
A graph is an abstract data type that is meant to implement the undirected graph and directed graph concepts from the field of graph theory. A graph data structure consists of a finite (and possibly mutable) set of vertices (also called nodes or points), together with a set of unordered pairs of these vertices for an undirected graph or a set of ordered pairs for a directed graph.
Linked List
A linked list is a linear collection of data elements whose order is not given by their physical placement in memory. Instead, each element points to the next. It is a data structure consisting of a collection of nodes which together represent a sequence.
Array
An array is a data structure consisting of a collection of elements (values or variables), each identified by at least one array index or key. An array is stored such that the position of each element can be computed from its index tuple by a mathematical formula.
Hash Table
A hash table (or hash map) is a data structure that implements an associative array abstract data type, a structure that can map keys to values. A hash table uses a hash function to compute an index, also called a hash code, into an array of buckets or slots, from which the desired value can be found.
Object-Oriented Programming
Object-Oriented Programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data in the form of fields (often known as attributes or properties), and code, in the form of procedures (often known as methods).
Functional Programming
Functional Programming (FP) is a programming paradigm where programs are constructed by applying and composing functions. It treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data.
Recursion
Recursion in computer science is a method of solving a problem where the solution depends on solutions to smaller instances of the same problem. This is achieved by having a function call itself.
Thread
A thread is the smallest sequence of programmed instructions that can be managed independently by a scheduler, which is typically a part of the operating system. Multiple threads can exist within a single process, executing concurrently and sharing resources such as memory.
Process
A process is an instance of a computer program that is being executed. It contains the program code and its current activity. A process may be made up of multiple threads of execution that execute instructions concurrently.
Concurrency
Concurrency is the ability of different parts or units of a program, algorithm, or problem to be executed out-of-order or in partial order, without affecting the final outcome. It is about dealing with lots of things at once.
Parallelism
Parallelism is the ability of a computer to perform multiple computations or execute processes simultaneously. It requires hardware with multiple processing units, such as a multi-core processor or multiple processors in a single computer.
Integer
An integer is a fundamental data type representing whole numbers, both positive and negative, including zero. It does not include fractions or decimal parts.
Float
A float, or floating-point number, is a data type that represents numbers with a fractional part. It uses a formulaic representation of a real number in a way that supports a wide range of values.
String
A string is a data type used to represent a sequence of characters. These characters can include letters, numbers, symbols, and spaces.
Object
An object is a data structure that contains data in the form of key-value pairs. The keys are typically strings (also called properties or attributes), and the values can be any data type, including other objects.
Class
In object-oriented programming, a class is a blueprint for creating objects. It defines a set of attributes (properties) and methods (functions) that the created objects will have.
Inheritance
Inheritance is a mechanism in object-oriented programming where a new class (subclass or child class) derives properties and behaviors (methods) from an existing class (superclass or parent class).
Polymorphism
Polymorphism is a concept in object-oriented programming that allows objects of different classes to be treated as objects of a common superclass. It means "many forms" and refers to the ability of a method or object to take on different forms.
Variable
A variable is a symbolic name or identifier associated with a value that is stored in memory. The value of a variable can be changed during the execution of a program.
Constant
A constant is a value that cannot be altered by the program during its execution. It is a fixed value.
Function
A function is a reusable block of code that performs a specific task. It can take inputs (called parameters or arguments) and can return an output value.
Parameter
A parameter is a variable in a function definition. When a function is called, the arguments are the data you pass into the function's parameters.
Argument
An argument is the actual value that is passed to a function when it is called. This value is assigned to the corresponding parameter in the function definition.
Return Value
A return value is the value that a function sends back to the part of the code that called it. After the function completes its task, the return value replaces the function call in the code.
Data Type
A data type is a classification of data which tells the compiler or interpreter how the programmer intends to use the data. It determines the possible values for that type, the operations that can be performed on values of that type, and the way values of that type are stored.
Cookie
An HTTP cookie (or web cookie, browser cookie) is a small piece of data sent from a website and stored on the user's computer by the user's web browser while the user is browsing.
Session
A session refers to a period of interaction between a user and a website or application. It allows the server to keep track of a user's state across multiple requests.
JSON
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write and easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language.
XML
XML (eXtensible Markup Language) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable.
YAML
YAML (YAML Ain't Markup Language) is a human-readable data-serialization language. It is commonly used for configuration files and in applications where data is being stored or transmitted.
Markup Language
A markup language is a system for annotating a document in a way that is syntactically distinguishable from the text. It uses tags to define the structure, formatting, or relationship between parts of a document.
Compiler
A compiler is a special program that translates a program written in a high-level programming language (like C++ or Java) into a lower-level language (like machine code) that the computer's processor can execute directly.
Debugger
A debugger is a computer program used to test and find bugs (errors) in other programs. It allows a programmer to run their code line-by-line, inspect the state of variables, and see exactly where something goes wrong.
IDE
An Integrated Development Environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools, and a debugger.
Version Control
Version control, also known as source control, is the practice of tracking and managing changes to software code. Version control systems are software tools that help software teams manage changes to source code over time.
Git
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Repository
In version control, a repository is a data structure that stores metadata for a set of files or directory structure. It contains the complete history of all changes ever made to the files.
Command Line Interface
A Command-Line Interface (CLI) is a text-based interface used to view, handle, and manipulate files and operating systems. It takes in commands from the user in the form of text and converts them into functions that the operating system can perform.
Graphical User Interface
A Graphical User Interface (GUI) is a type of user interface that allows users to interact with electronic devices through graphical icons and visual indicators such as secondary notation, instead of text-based user interfaces, typed command labels or text navigation.
Scripting Language
A scripting language is a programming language that is used to manipulate, customize, and automate the facilities of an existing system. They are usually interpreted rather than compiled.
Driver
A driver is a computer program that operates or controls a particular type of device that is attached to a computer. It acts as a translator between the hardware device and the operating system or applications that use it.
BIOS
BIOS (Basic Input/Output System) is firmware used to perform hardware initialization during the booting process (power-on startup) on IBM PC compatible computers.
UEFI
UEFI (Unified Extensible Firmware Interface) is a modern specification for the software interface between an operating system and platform firmware. It is the successor to the traditional BIOS.
Booting
Booting (or booting up) is the process of starting a computer. It can be initiated by a hardware event like a button press, or a software command. After it is switched on, a computer's central processing unit (CPU) has no software in its main memory, so some process must load software into memory before it can be executed.
Virtual Machine
A Virtual Machine (VM) is a software-based emulation of a physical computer. It has its own virtual CPU, memory, hard drive, and network interface, and runs its own operating system and applications.
Containerization
Containerization is a lightweight alternative to full machine virtualization that involves encapsulating an application in a "container" with its own operating environment. Unlike VMs, containers share the host system’s kernel.
Docker
Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. It does this by using containerization.
Kubernetes
Kubernetes is an open-source container orchestration system for automating software deployment, scaling, and management. Originally designed by Google, the project is now maintained by the Cloud Native Computing Foundation.
Serverless
Serverless computing is a cloud computing execution model in which the cloud provider runs the server, and dynamically manages the allocation of machine resources. Pricing is based on the actual amount of resources consumed by an application, rather than on pre-purchased units of capacity. It is a form of utility computing.
Load Balancer
A load balancer is a device or software that acts as a "traffic cop" sitting in front of your servers. It distributes network or application traffic across a number of servers.
Failover
Failover is the process of automatically switching to a redundant or standby computer server, system, hardware component or network upon the failure or abnormal termination of the previously active application, server, system, hardware component, or network.
Authentication
Authentication is the process of verifying the identity of a user or process. It answers the question, "Are you who you say you are?".
Authorization
Authorization is the process of specifying access rights/privileges to resources. It determines what a user is allowed to do after they have been successfully authenticated.
Metadata
Metadata is "data that provides information about other data". In short, it is data about data.
Stack Overflow
In software, a stack overflow is a bug that occurs when the call stack, which is used to store information about the active subroutines (functions) in a program, grows beyond the memory reserved for it.
Call Stack
In computer science, a call stack is a stack data structure that stores information about the active subroutines (functions) of a computer program. It is used to keep track of the point to which each active subroutine should return control when it finishes executing.
Legacy System
A legacy system refers to an outdated computing software and/or hardware that is still in use. The system still meets the needs it was originally designed for, but may be unstable, difficult to maintain, and incompatible with modern equivalents.
Technical Debt
Technical debt is a concept in software development that reflects the implied cost of rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer.
Refactoring
Code refactoring is the process of restructuring existing computer code—changing the factoring—without changing its external behavior. Refactoring is intended to improve nonfunctional attributes of the software, such as code readability, complexity, maintainability, and extensibility.