{
 "source": "https://peabody.kids/flashcards/tp-ap-computer-science",
 "id": "tp-ap-computer-science",
 "title": "AP Computer Science Key Terms",
 "category": "test-prep",
 "subject": "AP Computer Science",
 "levels": [
  "9-12",
  "college"
 ],
 "description": "Programming, data, algorithms, networks and the impact of computing.",
 "tags": [
  "ap",
  "computer-science"
 ],
 "frontLabel": "Term",
 "backLabel": "Meaning",
 "cards": [
  [
   "Algorithm",
   "A finite set of steps to solve a problem"
  ],
  [
   "Sequencing",
   "Running statements in order"
  ],
  [
   "Selection",
   "Choosing which code runs based on a condition"
  ],
  [
   "Iteration",
   "Repeating a block of code"
  ],
  [
   "Variable",
   "A named place that stores a value"
  ],
  [
   "Data type",
   "The kind of value, such as integer, string or boolean"
  ],
  [
   "Boolean",
   "A value that is true or false"
  ],
  [
   "String",
   "A sequence of characters"
  ],
  [
   "Integer overflow",
   "A result too big for the number of bits available"
  ],
  [
   "Round-off error",
   "Small error from limited precision in storing real numbers"
  ],
  [
   "Function",
   "A named block of code that can be called"
  ],
  [
   "Procedure",
   "A named group of instructions, possibly with parameters"
  ],
  [
   "Parameter",
   "A variable in a function definition that receives a value"
  ],
  [
   "Argument",
   "The actual value passed to a function"
  ],
  [
   "Return value",
   "The value a function sends back"
  ],
  [
   "Library",
   "A collection of prewritten code"
  ],
  [
   "API",
   "A set of rules for how software components interact"
  ],
  [
   "Abstraction",
   "Hiding detail to manage complexity"
  ],
  [
   "Modularity",
   "Dividing a program into independent parts"
  ],
  [
   "Class",
   "A blueprint for creating objects"
  ],
  [
   "Object",
   "An instance of a class with state and behavior"
  ],
  [
   "Instance variable",
   "Data stored inside an object"
  ],
  [
   "Constructor",
   "Code that initializes a new object"
  ],
  [
   "Method",
   "A function belonging to a class"
  ],
  [
   "Encapsulation",
   "Keeping data private and exposing it through methods"
  ],
  [
   "Inheritance",
   "A subclass reuses and extends a superclass"
  ],
  [
   "Polymorphism",
   "The same method call behaves differently depending on the object"
  ],
  [
   "Overloading",
   "Methods with the same name but different parameters"
  ],
  [
   "Overriding",
   "A subclass provides its own version of a superclass method"
  ],
  [
   "Static method",
   "A method belonging to the class, not an object"
  ],
  [
   "Array",
   "A fixed-size, ordered collection of items"
  ],
  [
   "ArrayList",
   "A resizable list in Java"
  ],
  [
   "List",
   "An ordered collection of elements"
  ],
  [
   "Index",
   "The position of an item, usually starting at 0"
  ],
  [
   "2D array",
   "An array of arrays, like a grid"
  ],
  [
   "Traversal",
   "Visiting each element of a data structure"
  ],
  [
   "For loop",
   "A loop with a counter and a stopping condition"
  ],
  [
   "While loop",
   "A loop that repeats while a condition is true"
  ],
  [
   "Infinite loop",
   "A loop that never ends"
  ],
  [
   "Nested loop",
   "A loop inside another loop"
  ],
  [
   "Off-by-one error",
   "A bug from a loop going one step too far or too short"
  ],
  [
   "Compound condition",
   "Conditions joined with AND, OR or NOT"
  ],
  [
   "De Morgan's laws",
   "NOT (A and B) equals (NOT A) or (NOT B)"
  ],
  [
   "Short-circuit evaluation",
   "Stopping evaluation once the result is known"
  ],
  [
   "Recursion",
   "A method that calls itself"
  ],
  [
   "Base case",
   "The condition that stops recursion"
  ],
  [
   "Linear search",
   "Checking each element in order"
  ],
  [
   "Binary search",
   "Repeatedly halving a sorted list"
  ],
  [
   "Selection sort",
   "Repeatedly selecting the smallest remaining item"
  ],
  [
   "Insertion sort",
   "Placing each item into its sorted position"
  ],
  [
   "Merge sort",
   "Dividing in half, sorting each, and merging"
  ],
  [
   "Algorithm efficiency",
   "How the work grows with input size"
  ],
  [
   "Big-O notation",
   "Describes how running time grows as input grows"
  ],
  [
   "Reasonable time",
   "Polynomial time or better"
  ],
  [
   "Unreasonable time",
   "Exponential or worse growth"
  ],
  [
   "Heuristic",
   "An approach that finds a good-enough answer when exact solutions are too slow"
  ],
  [
   "Undecidable problem",
   "A problem no algorithm can solve for all cases"
  ],
  [
   "Parallel computing",
   "Running parts of a task at the same time"
  ],
  [
   "Bit",
   "A binary digit, 0 or 1"
  ],
  [
   "Byte",
   "Eight bits"
  ],
  [
   "Binary",
   "Base-2 number system"
  ],
  [
   "Hexadecimal",
   "Base-16 number system"
  ],
  [
   "Lossless compression",
   "Reduces size without losing any data"
  ],
  [
   "Lossy compression",
   "Reduces size by discarding some data"
  ],
  [
   "Metadata",
   "Data that describes other data"
  ],
  [
   "Data cleaning",
   "Fixing or removing incorrect data"
  ],
  [
   "Big data",
   "Datasets too large for ordinary processing"
  ],
  [
   "Internet",
   "A global network of networks"
  ],
  [
   "IP address",
   "A numeric address for a device on a network"
  ],
  [
   "DNS",
   "System that translates domain names to IP addresses"
  ],
  [
   "Packet",
   "A small unit of data sent across a network"
  ],
  [
   "TCP/IP",
   "Protocols that route and deliver data across the internet"
  ],
  [
   "Router",
   "Device that forwards packets between networks"
  ],
  [
   "Fault tolerance",
   "A network keeps working when parts fail"
  ],
  [
   "Bandwidth",
   "Maximum data a connection can carry per time"
  ],
  [
   "Latency",
   "Delay before data transfer begins"
  ],
  [
   "HTTP",
   "Protocol for the web"
  ],
  [
   "Encryption",
   "Scrambling data so only authorized parties can read it"
  ],
  [
   "Symmetric encryption",
   "One shared key encrypts and decrypts"
  ],
  [
   "Public-key encryption",
   "A public key encrypts; a private key decrypts"
  ],
  [
   "Phishing",
   "Tricking people into giving up private information"
  ],
  [
   "Malware",
   "Software designed to cause harm"
  ],
  [
   "Multifactor authentication",
   "Verifying identity with more than one kind of proof"
  ],
  [
   "Digital divide",
   "Unequal access to technology"
  ],
  [
   "Crowdsourcing",
   "Getting contributions from a large group of people online"
  ],
  [
   "Open source",
   "Software whose code is free to view and modify"
  ],
  [
   "Bias in algorithms",
   "Systematic unfairness in a program's results"
  ],
  [
   "Creative Commons",
   "Licenses that let creators share work with set permissions"
  ],
  [
   "Debugging",
   "Finding and fixing errors"
  ],
  [
   "Syntax error",
   "Code that breaks the language's rules"
  ],
  [
   "Logic error",
   "Code that runs but gives wrong results"
  ],
  [
   "Run-time error",
   "An error that happens while the program is running"
  ],
  [
   "Testing",
   "Running a program with chosen inputs to check behavior"
  ],
  [
   "Pseudocode",
   "Informal, language-independent description of an algorithm"
  ],
  [
   "Flowchart",
   "A diagram of an algorithm's steps"
  ],
  [
   "Event-driven programming",
   "Code that responds to user actions or messages"
  ],
  [
   "Simulation",
   "A program that models a real-world system"
  ]
 ]
}
