A well-defined, step-by-step process.
Information which can be perfectly represented only by continuous data.
Application layer
The protocol underneath the transport layer which communicates the actual information. HTTP is the most famous example.
Assembly language
A human-readable version of machine code, used whenever programmers want to write CPU instructions by hand. An assembler program translates assembly into machine code.
A popular shell/scripting language.
Basic input/output system
Simple programs stored in the motherboard which initiate other hardware and prepare the computer to run more complicated programs.
Binary blob
A machine code program, especially when that program’s source code was in a different language and was compiled to machine code.
A binary digit.
Short for bootstrap
When a simpler program is used to run a more complicated program. The most common example is a boot loader running a kernel when a computer first turns on.
To turn on a computer and run the essential OS programs.
Boot loader
A simple program that simply runs a more complicated program, such as a kernel.
Eight bits.
An old, but wildly popular compiled procedural programming language.
Central processing unit
The heart of a modern computer, which reads program instructions and performs computations using the data in its registers
Certificate authority
A trustworthy, neutral third party which verifies others’ identities in order to pass that trust on to users (using inherited trust).
A function that accepts any number of bytes as input and outputs a fixed number of bytes as output.
Sometimes called a “code” by the layperson.
A data format which can only be decoded/encoded (decrypted/encrypted) using a key.
Encrypted data produced by using a cipher on some plaintext.
A computer in a network that connects to a server to receive information
A program that connects to a server
Command line
A text interface for a human to type commands for a computer. Often synonymous with shell.
A program that translates a programming language into another (usually simpler) programming language.
A function that can be evaluated using an algorithm.
Describes data which can only be measured.
Core dump
A log of the CPU’s memory and instructions at the time a program failed. Used by programmers to find the cause of the failure.
The study of ciphers for the purpose of extracting key or plaintext from ciphertext
Fact. Truth. Can be interpreted to produce information.
The process of producing plaintext from ciphertext (usually using the key).
Denial of service
Deliberately flooding a web server with so many requests that other people cannot practically use it
The output of a hash function
Information which can be perfectly represented using discrete data.
In a file system, a special type of file that contains no actual data but instead contains a list of other files for the purpose of organization.
Describes data which can be counted.
The program instructions for interacting with a specific type of computer peripheral.
The process of producing ciphertext from plaintext.
For a function, to determine its output given input.
Exit code
The number that a program sends to the kernel when it finishes running. Usually indicates whether the program finished successfully.
A chunk of data in a file system, usually including metadata about the file such as a name and a record of when the file was created or modified.
File path
A sequence of file names describing the location of a particular file in a file system. Can be absolute (relative to the root of the file system) or relative (relative to the working directory).
File system
A format for organizing data on a computer into chunks called files. Most commonly organizes files into a hierarchy of file directories.
A description of how bytes are grouped together and what certain bytes or byte values mean.
Software which is completely free but not open source.
A relation between input and output, where each input has at most one output.
Graphics processing unit
The component of a computer dedicated to computing the images displayed on the monitor.
The physical components of a computer.
Hard disk drive
The computer component for storing large amounts of data, even while the computer is off. Performs the same function as an SSD.
A function which takes an arbitrary number of bytes as input and outputs a fixed numbers of bytes
The output of a hash function
Hypertext markup language
The textual language that describes the contents of a web page
Hypertext transfer protocol
An application protocol which allows transmission of web pages and multimedia
Hypertext transfer protocol secure
The practice of wrapping the HTTP protocol in an additional layer of TLS.
Meaning. Can be encoded/stored as data using an appropriate format.
Inherited trust
The idea that if Alice trusts Bob and Bob trusts Charlie, then Alice should trust Charlie. Used by HTTPS to trust websites via certificate authorities.
The general term for when a computer reads data from or writes data to its peripherals
The program instructions for the kernel for interacting with a general type of computer peripheral. A more abstract way of running the driver instructions.
Internet layer
The protocol in charge of getting data from one computer to another. In most cases, this is the Internet protocol (IP)
A program which reads program instructions and simulates the result of performing those instructions. Similar in many way to a VM.
IP address
A number uniquely representing a computer on a network for use with the Internet protocol. Most commonly 4 bytes long, though newer addresses have 16 bytes.
The main program run by a computer that manages the memory management and scheduling of other programs and which coordinates I/O usage through interfaces.
For ciphers, the piece of data used to encrypt/decrypt the plaintext.
A protocol that allows for transmission of arbitrary data.
Machine code
The binary instructions understood by the CPU.
Malicious software
Software that does something bad to your computer
Memory management
Partitioning a computer’s memory into separate segments so that different parts of memory can be used for different tasks simultaneously
The screen of a computer, which displays images using pixels.
The computer component that all other components connect to. Includes the BIOS and allows different components to communicate.
Network interface controller
The component of a computer dedicated to sending/receiving signals over a network. Often included as a part of the motherboard.
Four bits.
Half of a byte.
Object file
Assembled machine code which is not a complete program. A link editor turns object files into a working program.
Open source
Used to describe software that is developed transparently in the public, often with community support.
Operating system
A collection of programs that make a computer usable. These programs almost always include a kernel and boot loader.
A format that wraps other formats, allowing additional information to be attached to the contained data.
See “file path”
A computer network where the computers act as both clients and servers, sharing data amongst themselves rather than relying on a central server
Peripheral component interconnect express
The standardized connection used by complex computer components such as the GPU.
A (small) square of solid color. Used to represent images digitally as on a monitor.
The plain old data which ciphers protect. Produced by decrypting ciphertext.
Procedural programming
A programming paradigm whereby a program is broken down into procedures where each procedure is a list of steps and procedures can run other procedures.
An algorithm that is read and performed by a computer.
Defines rules for exchanging messages between computers, including data formats that will be used.
The process of inputting a program into a computer for it to read.
Programming paradigm
A general way of breaking down problems such that they can be solved by a computer program.
Public-key cipher
A cipher that uses different keys for encrypting and decrypting (so one key can be made public).
Psuedorandom numbers
Numbers that “look” random and unpredictable, but which are actually produced in a non-random way.
Psuedorandom number generator
A function which can be used to produce psuedorandom numbers.
Random access memory
The computer component that stores most of the information needed while the computer is running. Larger and slower than the CPU cache, but smaller and faster than the hard drive.
Read evaluate print loop
Describes any program that first reads input from the user, performs some calculation using that input, prints the result of the calculation, and then loops back to the beginning to read more input.
Memory used by the CPU for performing calculations. Most CPUs have a variety of registers of different sizes, where different registers are specialized to certain computations.
Reverse engineering
The process of recovering source code (or something similar) from a binary blob.
A relatively young scripting language which is popular among web developers for its simplicity and dynamism.
Salt (password)
The practice of adding random information to a password prior to hashing so that duplicate passwords still have different hashes.
Deciding in what order program instructions should be run when multiple programs are running simultaneously
Scripting language
A programming language which is designed to be used with an interpreter. Sometimes called an “interpreted language”.
Secure (encryption)
A decryption key is secure if it would take so long to guess the key (using a computer) that the plaintext would be worthless by the time it is recovered.
Segmentation fault
An error that indicates that the kernel noticed a program trying to access memory outside of its assigned segment, causing the kernel to immediately stop the program.
A computer in a network that waits for clients to connect in order to give them information
Software which is free but limited in some way until you pay for the “full version”.
A program which runs in a loop, providing an interface for running other programs with the kernel. Usually the first program that runs when a user logs in to an OS.
A program or programs. Usually used to refer to the program along with any additional data that is needed for regular use of the program (such as documentation or example input).
Sound card
The component of a computer dedicated to computing the audio signals sent to the speakers. Often included as a part of the motherboard in simpler computers.
Source code
The original program code with which a program was developed, especially when that code is later compiled into a different language.
Solid state drive
A modern alternative to an HDD which has no moving parts, is smaller, and uses less electricity.
Stream cipher
A cipher that can encrypt/decrypt each bit of data independently of the others.
Symmetric-key cipher
A cipher that uses the same key for encrypting and decrypting.
Formerly a special device for entering commands for a computer and reading output, now synonymous with a shell.
Transport layer
The protocol in charge of packaging data for transmission and unpacking it afterwards. TCP and UDP are protocols that are often used for this layer.
Transport layer security
An application protocol which both verifies the identities of the communicating parties and encrypts the data to prevent eavesdropping.
Turing complete
The ability for a machine to simulate a Turing machine (and thus perform any calculation). A machine is a computer if and only if it is Turing complete.
Turing machine
A simple, theoretical computer.
Universal serial bus
The standardized connection used by many simple computer peripherals such as mice, keyboards, webcams, etc.
Virtual machine
A program that simulates running a real computer.
Working directory
In a shell, the directory where all relative file paths are looked up