- 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
- 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
- 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
- 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
- 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
- A program that translates a programming language into another (usually simpler)
- 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
- 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
- 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
- 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
- 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
- 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
- The main program run by a computer that manages the memory management and
scheduling of other programs and which coordinates I/O usage through
- 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
- A (small) square of solid color. Used to represent images digitally as on a
- 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
- 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
- Reverse engineering
- The process of recovering source code (or something similar) from a binary
- 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
- A computer in a network that waits for clients to connect in order to give
- Software which is free but limited in some way until you pay for the “full
- 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
- 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
- Stream cipher
- A cipher that can encrypt/decrypt each bit of data independently of the
- 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