AP Computer Science Principles
Accessibility
The extent to which a computer interface can be used by all people or is limited by individual characteristics.
Fidelity
The extent to which a copy is identical to the original.
Agregator
Stores a list of values built up over time and remembers separate individual values.
Fixed Variable
Stores a value that will not change over the course of the entire program.
Walker
Stores one item from a list at a time during iteration.
Most Recent Variable
Stores user input or stores information about a program's state that changes unpredictably.
Compression
Storing information using fewer bytes.
Association for Computing Machinery (ACM)
The leading professional organization for computing specialists.
State Diagram
Shows the ways that a program could progress from each state to other states.
Avatar
User's representation in a virtual reality.
Monte Carlo Simulation
Using a random number generator to observe the range of results that occur in a simulation that has random variability.
Calibration
Using pre-existing data to aid in validation of a model.
Scope
The scope of a variable is the portion of the program that will recognize the variable name, class, or function definition.
Targeted Advertising
Advertising delivered to a computer user based on advertiser's knowledge about the user.
Mutable
An object that is able to be changed after its creation. In Python includes lists and dictionaries. Strings, for example, are immutable, and a variable can only be assigned to a new value rather than changed in the same memory location.
Concatenation
Attaching two things side-by-side, frequently strings of text
Design Patterns
Broad strategies for designing software to solve a category of problems.
Call
Code telling the interpreter or compiler to execute a function or method defined elsewhere, replacing the call with a return value if applicable.
HTML
HyperText Markup Language is the most common language used for creating web pages.
Hypertext Transfer Protocol (HTTP)
HyperText Transfer Protocol allows for the passing of structured text from one node connected to the Internet to another.
Multi-line comment
Denoted by ''',these can generate docstrings and allow the programmer to leave notes in code that span several lines without having to type '#' at the beginning of each line.
MAC address
Each Wi-Fi and Ethernet card has a media access control address embedded in the hardware, represented as six two-digit hexadecimal numbers separated by colons, such as "34:5f:01:6d:33:ff".
Server-side web features
Features created by executing code on the server to create HTML, CSS, and JavaScript to be sent to the client, typically using a server-side language (such as PHP, Python, or Ruby on Rails) and a database (such as MySQL).
Hacking
Figuring out ways to use hardware and software that was unintended by the engineers who created it, usually used in the context of cybersecurity.
FTP
File Transfer Protocol uses a TCP-based network to pass files from host to host.
Metadata
Information about data, such as when, how, or by whom the data were collected or what software was used to manipulate the data.
History
Information stored by a browser about the web resources that it has requested.
Plaintext
Information that is readable without performing any cryptographic operations.
Accumulator
Maintains a running total.
Payload
Malware delivered by social engineering and/or by exploiting vulnerability in software.
Latency
Measure of delay in communication between two devices over a network.
Bandwidth
Measurement of the amount of data that can be transmitted through a network.
Turing Test
One method of determining the strength of artificial intelligence, in which a human tries to decide if the intelligence at the other end of a text chat is human.
Glass Box Testing
Process for evaluating the correctness or effectiveness of a piece of software while examining its algorithmic structure.
Instantiation
Process of creating an object, an instance of a class; creates space in memory for the new object and binds a name for the object with the object's data in memory.
Abstraction
Reduces information and detail to facilitate focus on relevant concepts. Involves looking at the bigger picture to better understand a concept.
Iterate
Repeating a step-by-step procedure several times; also used to refer to single execution of that repetitive procedure.
Absolute Path
Representation of the location of a resource on a hard disk with respect to the root or the location of a web resource using a full URL.
Data Abstraction
Representing or storing information with methods that separate layers of concerns so that the programmer can work with information while ignoring lower-level details about how the information is represented.
Open Data Movement
A movement to make raw data available to users in standardized formats so that third parties can create applications that link to the data for users to consume
Slicing
Selecting a portion of a collection.
Threads
Separate, independent tasks within a job.
GUI
A Graphical User Interface, currently the dominant method for designing human-computer interaction.
NIC
A Network Interface Card is a piece of hardware that allows a computer to connect to a network.
Script Kiddie
A black-hat "penetration tester" with limited computer science knowledge that uses instructions and tools from other people to exploit vulnerable computer systems.
Social Engineering
A broad category for techniques that aim to psychologically manipulate a person's trust to gain access to data or computing resources, usually by being tricked into clicking on a link, opening a file, or answering a question.
Certificate Authority
A business or organization that issues a digital certificate verifying that a given public key is owned by the entity named on the certificate.
Authenticate
A check to make sure that a computer or user is who/what it says it is.
Event Handler
A chunk of code that responds to actions performed by users or by other parts of the program.
Name Server
A computer dedicated to providing responses to requests for Domain Name information.
Compiler
A computer program created to read an entire program and convert it into a lower-level language and ultimately assembly language used by the processor.
Compound Conditional
A conditional with one or more logical operators used to incorporate several logical expressions.
Analog
A continuous method of representing information.
Third-party cookie
A cookie that is stored on a client computer by a domain other than the one that is currently requesting resources.
Anomaly
A data point or smaller pattern that does not follow the general pattern of a data set.
Tree
A data structure in which each node has exactly one parent, with the exception of the root node, which has no parent.
Web Index
A database that stores information about web content.
Model-View-Controller(MVC)
A design pattern for GUIs.
Observer
A design pattern in which agents subscribe to data updates.
Pinout
A diagram describing the function of each lead on an integrated circuit's casing.
SSL Certificate
A digital document used to verify the authenticity of a server or public key
Standard Position
A direction pointing to the right is 0 degrees; directions up and to the right are between 0 and 90 degrees.
Clone
A duplicate copy.
Steganography
A field within cryptography; uses images to hide data.
External Style Sheet
A file containing only CSS code that may be referenced by many HTML files.
Relative Filename
A filename and a path for getting to the file's directory, starting from the current working directory.
Vulnerability
A flaw in software, including a website, a protocol, an operating system, programming languages, or hardware drivers, that allows unexpected input to gain unintended access to computing resources or to deny service to legitimate users.
Repository
A folder containing subfolders with files for a project.
Directory
A folder in a file system.
Flow Chart
A graphic organizer that can be used to show the procedural pathways within a program.
Sprite
A graphics object that can be moved on top of or behind a background.
Computer System Design
A group of computing careers focusing on the creation and maintenance of networks and computer hardware.
Computer and Information Technology
A group of computing careers focusing on the use of computers to store and manipulate data.
Block of Code
A group of program statements that are grouped together, denoted by indentation in Python.
Domain Name System (DNS)
A hierarchical system for naming resources on the Internet
Relative Frequencies
A measure of the rate at which characters are used in a document or language with respect to each other.
Constructor
A method for creating an object in a class.
Brute Force
A method for determining a solution to a problem by sequentially testing all possible solutions.
Substitution Cipher
A method of encryption and decryption in which each letter in the alphabet is replaced by another.
Exploit
A method to take advantage of vulnerability by delivering input to gain unintended access or deny service.
Read-Execute-Print loop (REPL)
A read-execute-print loop repeats the process of obtaining one instruction, executing it, and printing the output.
Graphics Processing Unit (GPU)
A set of processors on a video card in a computer performing data parallel calculations to render objects (windows, etc.) on screen.
Ethernet
A set of protocols and computer networking technologies used for sending data over copper or glass fiber-optic cables.
Virtual Reality (VR)
A simulated environment typically featuring some subset of what humans consider "real".
Digits
A single number (0-9) used to represent numeric quantities in base 10.
Instance
A single object of a particular class.
Bit
A single unit of binary consisting of only one place whose value can be 0 or 1.
Impression
A single viewing of an ad.
Tracer Route
A skeletal development of a program that ensures the development team has figured how to make the layers talk to each other.
Prompt
A small amount of output that indicates a command line interface (CLI) is ready to accept another command, commonly some information about the user, the machine, the time, the version control branch, and/or the current working directory, plus a dollar sign or other specific punctuation mark.
Web Crawler
A softbot responsible for following hyperlinks throughout the Internet to provide information for the creation of a web index.
Test-Driven Design
A software development process in which developers first create a test suite and then create the code to satisfy the test suite, e.g., Xtreme Programming.
Test Suite
A software package designed to evaluate the correctness or effectiveness of another software solution.
Docstring
A special comment located at the beginning of a program or the beginning of a function that is used to automatically create help documentation.
Object
A specific instance of a class with a specific set of values for its own attributes that is able to execute any methods defined in its class.
Type
A specific meaning for data, such as a character, an integer, or a true or false value, usually limiting the values allowed for the data.
Distribution
A specific version of a software application or operating system that collects a consistent set of versions of component pieces.
Text Editor
A text editor such as Notepad++ displays raw text without formatting for fonts, tables, and the like.
Function Name
A unique identifier given to the function when it is defined and used again whenever the function is called.
Parameter
A value used in a model.
Global variable
A variable that can be used in any part of the program.
Stepper
A variable that counts in an arithmetic sequence, usually counting by ones starting at 0 or 1.
Local Scope
A variable with a scope that is limited; in Python, a local scope is created by the def and class keywords, and the scope is the block of code they create.
Register
A very tiny part of the processor microchip that stores bits of data, typically 32 or 64 bits in modern computers.
Client Application
A program that makes use of another piece of software or set of data; for web interactions, the web browser is usually the client application.
Iterable
A property of collections that are used to provide elements one at a time and in sequence.
Handshake
A protocol for the beginning of an interaction.
Method
A set of instructions grouped together to do something to or with an object.
Script
A set of instructions. In Scratch a script is a single stack of blocks belonging to one sprite or to the stage.
Type Casting
Converting data from one type to another, e.g., from string to int, potentially losing information.
Interpreter
Converts a program written in a higher level language into a lower level language and executes it, beginning execution before converting the entire program.
Command Line Interface (CLI)
An interface that accepts text commands at a prompt, usually for immediate execution with immediate display of output.
Selector
A CSS expression that selects specific elements from an HTML document,usually by the element's tag, id, or class.
Event
A "trigger" from the user or from a program that causes a specific part of the program to execute.
JavaScript
A client-side scripting language used to write programs that are embedded in web pages, often to make a web page more interactive.
UTF-8
A coding system for storing characters in bits, extending the 8-bit ASCII coding system to include international characters by sometimes using more than 8 bits.
Library
A collection of modules.
Shell
A command line interface to the operating system.
Commit
A commit is a checkpoint in the development of a project.
Palette
A limited set of colors.
Traceback
A list of function calls that were made before an exception stopped the program.
Sprint Task List
A list of small specific tasks to be completed during the current sprint in the scrum method of software development.
Client-machine
A machine running a client application.
File System
A major part of an operating system, the file system keeps track of the location, name, and type of data stored in various long-term memory, and can include keeping track of other metadata, such as creation and revision dates or which users have the right to read and write to the data storage.
Tuple
A native type in Python that can store a collection but cannot assign new values to individual elements.
Float
A native type representing rational numbers to limited precision.
Int
A native type representing the integers, which are positive whole numbers and their opposites.
Loopback Device
A network interface card (NIC), defined virtually by software, that accepts outgoing packets only to echo the packets back to the operating system as though they had been received by the NIC.
Element
A node in an HTML document; for example, Hello is a paragraph element, indicated by the opening and closing p tags.
Object-oriented
A paradigm for programming in which code describes a class with methods, including a method for creating an object in the class.
System Administrator
A person who is responsible for managing computers, networks, servers, and other computing resources for an organization or group.
Bookmark
A piece of data used by a browser to allow the user to return quickly to a previously visited site.
Browser
A piece of software that renders web pages and allows users to view resources on a network.
Scrum Poker
A planning tool used to estimate time and value of tasks and avoid anchoring.
Product Backlog
A prioritized list of user stories, showing both short- and long-term goals of a software development team.
Algorithmic Problem
A problem with an algorithmic solution, stated broadly so that it applies to all equivalent situations.
Analog-to-Digital Conversion
A process of converting continuous information into discrete data; some information is typically lost.
Bounding box
A rectangle that encloses part of an image.
Bounding Box
A rectangle that tightly encloses a 2D space shape or image.
Frame
A rectangular portion of the screen in a web browser.
Hyperlink
A reference from one document to another document or resource.
dotted decimal notation
A representation of numerical data in which groups of base-10 numbers are separated by dots.
Query
A request for information.
Browser Tab
A separate viewing pane within a browser window, many of which may be open at once, allowing a user to switch quickly between web pages.
Button
A standard GUI widget that responds to mouse-clicking events.
Slider
A standard GUI widget that responds to mouse-dragging events in one direction.
ASCII Code
A standard code for representing text characters using one byte. Generally replaced by UTF-8 or UTF-16 to support international languages.
Widget
A standard component of a GUI.
Algorithm
A step-by-step procedure, like a recipe, but often involving decisions.
Feature Detection
A strategy in web design to check whether a browser implements a feature of JavaScript before using the feature.
Ciphertext
A string of text that has been converted to a secure form using encryption.
Null String
A string that contains no characters.
Simulation and Modeling
A subfield of computer science concerned with describing natural phenomena using models composed of algorithms and equations and observing the behavior of these models in simulations.
Crowd Sourcing
A subfield of computer science that attempts to solve problems by using the ability of many humans to solve small subproblems and then using computers to combine those solutions into some meaningful results.
Fault-Tolerant
A system designed to work when components fail.
Generalization
Abstracting knowledge or a solution to apply to a wider range of questions or problems.
Loop
Algorithmic structure for performing the instructions multiple times, with each pass through the loop called an iteration.Usually controlled by a condition evaluated with each iteration.
API (Application Programming Interface)
An Application Programming Interface is a way programmers share their code with other programmers. In object-oriented libraries, an API specifies the methods of each class.
Class
An abstraction defining a type of object, with methods (instructions that can be executed) and attributes (variables to store data).
Protocol
An agreed-upon method for conducting a communication.
Standardization
An agreement among software and/or hardware developers to use a shared design specifying aspects of a component, protocol, or language.
Searching a List
An algorithmic pattern with well-known solutions, including sorting followed by binary search.
Sorting a List
An algorithmic problem with well-known solutions, including insertion sort, bubble sort, and merge sort.
Central Angle
An angle with its vertex at the center of a circle.
Parent
An element in a tree data structure that is the immediate ancestor of another element.
Child
An element in a tree data structure that is the immediate descendant of another element.
Node
An element in a tree.
Module
An encapsulated collection of one or more related classes, each with its own methods and attributes.
Exception
An error or other message raised by the interpreter or compiler to indicate a special circumstance that should be handled by an exception handler. If an exception is not handled, the program will stop and report the error.
Handler
An event such as mouse input in a graphical user interface, or such as an error or exceptions, triggers the execution of an event handler or exception handler.
Catch
An exception (or error) caught by lines of code if it is handled instead of being passed to parent programs. If an exception is not caught, the operating system catches it.
Relative Path
An expression of the path to a resource on a computer with respect to the current working directory.
Home Directory
An operating system usually gives each user a directory where the user has privileges to read and write data, which includes privileges to create, edit, and delete files.
Patch
An update to software that repairs one or more bugs, often including security vulnerabilities.
WYSIWIG
Any content editor that shows how the final product will look as the user makes modifications.
Opaque
Cannot be seen through; the opposite of transparent.
CSS
Cascading Style Sheets contain hierarchical information about how the content of a web page will be rendered in a browser.
Edge/Link
Connection between two nodes in a graph.
Cache
Data storage built into a hardware component or computer system to improve speeds by providing memory closer to the point of use.
Big Data
Data that are beyond the resources of one computer to store, especially intensive to analyze, or difficult to reconcile among complementary data sets.
State
Data that describes everything about how a program exists at a given time; a snapshot of a program.
Inputs
Data that is used by a program.
Digital
Data which can only take on discrete values. Opposite of analog.
Attribute
Data associated with an object.
Variable Roles
Describe why a variable is being used in a program.
Lossy
Describes a method of compression in which data is lost in a way that cannot be recovered from the compressed data.
Time Complexity
Describes how much more time an algorithm will need if provided a longer string of input, emphasizing the worst-case scenario and the limiting trend when the input string is long.
Paginating
Dividing content into separate pages so that content does not scroll off screen.
Top Level Domain
Domains (including .net, .org, .com, .mil. and the set .xx country codes) at the end of a domain name are the highest level of the domain name hierarchy.
Byte
Eight bits, able to represent 256 distinct values. Abbreviated "b".
Validate
Ensure that the values stored in variables are of the correct type and/or within appropriate value ranges.
Boolean Expression
Evaluates to either true or false; used in the conditional of an if-structure.
ISP(Internet Service Providers)
Internet Service Providers make Internet access available to users.
hierarchical
Hierarchical design, in which a system is designed in a tree where each member is a child or a parent element, is a strategy for creating systems that will still work if they grow many times larger.
Procedure Definition
Identify a chunk of code that will be reusable anywhere else in the program by calling its name
Import
In Python import is a key word for using one module of code from inside another module.
Self Similar
In fractals, the notion that one part of a fractal will be similar to another part at a different location, magnification, or orientation.
Transient
In simulation, a state in which a model may seem stable for an amount of time before major changes occur.
Absolute Filename
Includes the entire directory pathway to get to the specified file, as opposed to the relative filename that is specified only from the current working directory.
Discrete
Jumping from one value to another without taking on all intermediate values. Opposite of continuous.
Encapsulation
Keeping details (like data and procedures) together in one part of a program so that programmers working on other parts of the program don't need to know about them.
Best so far
Keeps track of a record best or worst and updates when a new record best or worst has been reached.
KDD
Knowledge Discovery in Data (KDD) uses computational power to find patterns in large data sets.
Distributed Denial of Service (DDoS) Attack
Many computers collaborate to shut down a target, usually by keeping it busy or overwhelming it with incoming requests.
model
Mathematical constants, relationships, and algorithms used to describe something real. A model includes some patterns of the real thing and abstracts away other details.
Immutable
Not able to be changed after creation.
Pseudorandom
Numbers that are difficult to predict and created by a computer.
P and NP Problems
P problems can be solved in polynomial time; solutions to NP problems can be verified in polynomial time, but it is unknown if that implies they can be solved in polynomial time.
Alpha Channel
Part of a pixel's data that tells how opaque or transparent that color should appear when the graphics card calculates how to render the image on screen.
Bug
Part of a program that causes an error or undesired output.
Hard-Coding
Placing data or constant values directly in programming code.
User Stories
Plain-language description of a user's need for the software under development, usually phrased as "(who) wants to (do what within the software) so that they can (do what in real life)".
User-Stories
Plain-language description of a user's need for the software under development, usually phrased as "(who) wants to (do what within the software) so that they can (do what in real life)".
Denial of Service (DoS) Attack
Preventing a target from fulfilling its intended function, typically by keeping the target busy or causing it to crash.
Polynomial Time
Problems can be solved in polynomial time if the time for an algorithm to solve the problem increases as a power of the bytes of the input, and not exponentially with the length of the input.
Integrated Development Environment (IDE)
Provides a developer with a way to create a program, run the program, and debug the program all within one application.
Multiple Assignment
Python allows a programmer to assign values to several variables at once. This may be used to store a group of values returned by a function.
Reidentification
Reattaching personal identities to deidentified data, often because Big Data make anonymity unlikely.
Garbage Collection
Releases memory that was used for a variable's value once the variable is no longer to be used by a program.
SSH
Secure Shell is a network protocol for secure transfer of data between computers.
Pixel
Short for picture element; it is a single dot of color.
Compression Ratio
Summarizes the reduction in size of a file. Can be expressed two different ways, as follows. If more than 1, the compression ratio tells how many times bigger the original file is. If less than 1, the compression ratio tells the percentage by which the original file size has been reduced.
Assignment Operator
The '=' character causes the compiler or interpreter to evaluate to the expression on its right and store the result in the variable(s) on its left.
Conditional
The Boolean expression in an if-structure that is evaluated to determine which branch of code to execute.
ICANN
The Internet Corporation for Assigned Names and Numbers is responsible for governing the development of DNS policy.
IETF
The Internet Engineering Task Force develops and promotes Internet standards.
IPV4
The Internet Protocol version 4 is the dominant protocol for routing traffic on the Internet, specifying "to" and "from" addresses using a dotted decimal such as "122.45.255.0".
IPV6
The Internet Protocol version 6 provides a large number of new addresses to route Internet traffic, using "from" and "to" addresses written as colon-hexadecimal notation, such as "fe80::42:acff:feaa:1bf0".
Binary
The binary number system is base 2, using only bits 0 and 1.
Least Significant Bits
The bits that contribute the smallest amount to the overall value of a binary number, including the 1s place value.
Malware
The broadest category of software installed or intended to be installed on a target computer, with an intentional negative effect.
Base Case
The condition under which a recursive function returns without calling itself, thereby ending the recursive calls.
Op Code
The digital representation of an instruction that will be fetched, decoded, retrieved, and executed by the CPU.
Working Directory
The directory in the file system you are currently "in".
TCP/IP
The dominant set of protocols for the transfer of data over the Internet.
Outputs
The effect that a program has on its environment.
TCP Handshake
The protocol by which a client and server machine establish communication for the transfer of data.
Syntax
The grammar of a programming language, defining what specific sequences of characters are allowed, what they mean, and how they can be put together.
Comma Separated Value File (CSV)
The most widely readable form of data. A file format in which each line contains multiple values separated by a comma. There are many CSV standards. Most of them allow string values which can contain commas inside a quote.
Stochastic
The next state of a computational model cannot be determined ahead of time due to some element of randomness.
Deterministic
The next state of a computational model is completely determined by actions taken in this state.
Flops
The number of floating point operations per second that a computational device can perform. A typical measure of the power of a device to perform calculations.
Central Processing Unit (CPU, or core)
The part of the computer that executes one instruction at a time.
Memory
The parts of computer that can store data or instruction, including volatile memory (lost when the computer is turned off) and non-volatile memory (retained when the computer is turned off).
Moore's Law
The prediction of Gordon Moore that the number of transistors on integrated circuits doubles about every 18 months.
Operating System (OS)
The primary program running on a computer, the operating system controls which other programs can access memory, use input and output devices, or execute instructions on the processor. The primary OSes are the Windows family and the Unix family (including Mac OS and Linux) for desktops, and iOS, Android, and Windows for tablets and smartphones.
Decryption
The process of converting a ciphertext into plaintext.
Encryption
The process of converting plaintext to ciphertext.
Debugging
The process of figuring out why code doesn't behave as expected and eliminating bugs to make it work as desired.
Redundancy
The property of having many resources or components which all serve identical purposes.
Built-in function
The set of functions available to the programmer without the need to use any "import" or "include" statements.
Namespace
The set of variable and function names that have been reserved by the compiler/interpreter.
Sector
The shape bounded by an arc and two radii.
Cryptography
The study and use of techniques for securing communication.
Human-computer interaction (HCI)
The study of how humans give input to and receive output from a computer.
Worst-Case Running Time
The time that an algorithm will take to execute input of a given length if the input is specially chosen to take a long time. Includes only the time for the processor to complete the algorithm with this worst-case input, and does not include variation from the processor performing unrelated tasks.
TCP
The transmission control protocol puts IPpackets in sequence and checks for errors in transmission.
Native Type
The types of data built into a programming language, often faster and more efficient with resources.
Default Value
The value of an argument if the function is called without that actual argument.
Arguments
The values that the programmer provides in the function call.
Evaluate
To determine the result of an expression.
Decrement
To decrease, usually by 1; the opposite of increment.
Interpolate
To determine intermediate values between data points.
Execute
To run a program or a single instruction.
Emulate
To use software to mimic a piece of hardware.
Adware
Undesired software intended to advertise product to the user.
Spyware
Undesired software intended to collect information, including installed software, browsing history, or keystroke logging.
URL
Uniform Resource Locators are strings of characters that contain information about how to access a resource over the Internet.
Noise
Unintentional variation in data, contrasted with signal, which is the variation between one data set and another data set collected under intentionally different circumstances for comparison.
Continuous
Varying smoothly from one value to another. Opposite of discrete.
Recursion
When a function calls itself.
Short Circuit
When a logical expression's result is returned without evaluation of some part of the expression, increasing efficiency.
Task Parallel
When multiple processors have different instructions, contributing to a job by each completing separate threads.
Data Parallel
When multiple processors use the same instructions and apply them to subsets of the data.
Technical Debt
When the work of cleaning up and documenting code falls behind the writing of code.
Machine code
Zeros and ones that represent simple instructions executed by a processor.