Sub-procedure Local variables
Parameters Return statement
Abstraction Modularity
Code reuse Debugging

 

Variables that are only accessible within a sub-procedure. A named block of code that performs a specific task within a larger program.
A statement that allows a sub-procedure to return a value to the calling code. Inputs that a sub-procedure can receive to customize its behavior.
The use of sub-procedures to break a program down into smaller, self-contained parts. The process of breaking down a problem into smaller, more manageable parts.
The process of identifying and fixing errors in code. The practice of using sub-procedures to solve common problems in multiple parts of a program.

 

Top-down design Hierarchy chart
Flowchart Pseudocode
Decision Problem solving
Identify Solution

 

A visual representation of a program's structure that shows the relationships between the sub-procedures. A problem-solving approach that involves breaking a problem down into smaller parts and solving them individually.
A high-level description of a program that uses a mixture of natural language and basic programming constructs. A diagram that shows how a program will execute, including the use of sub-procedures.
The process of finding solutions to difficult or complex issues. A choice or judgment made after consideration of various alternatives.
A method or process for resolving a problem or difficulty. To recognize, distinguish, or discern what something is.

 

Specified problem IB Computer Science course
Importance Problem
Alternative Consideration
Judgment Process

 

A program of study that covers computer science concepts and principles, offered by the International Baccalaureate Organization. A particular problem that has been clearly defined or designated.
A matter or situation regarded as unwelcome or harmful and needing to be dealt with and overcome. The quality of being significant or valuable.
Thoughtful and sympathetic regard or respect. One of two or more available possibilities or courses of action.
A series of actions or steps taken in order to achieve a particular end. The ability to make considered decisions or come to sensible conclusions.

 

System Components
Decisions Conditions
Logic Algorithms
Flowcharts Interactivity

 

Parts of the system that work together to achieve the overall function of the system. A collection of components that work together to achieve a particular function or set of functions.
Factors that influence the decisions made by the system to achieve its desired function or outcome. Choices made by the system to achieve its desired function or outcome.
A set of instructions used by the system to achieve its desired function or outcome. The reasoning behind the decisions made by the system.
The ability of the system to respond to user input or changes in the system's conditions. A visual representation of the steps taken by the system to achieve its desired function or outcome.

 

Feedback Efficiency
Reliability Usability
Logical Rule Deduction
Premise Conclusion

 

The amount of resources used by the system to achieve its desired function or outcome. Information provided by the system to the user or other components of the system to improve its overall function or outcome.
The ease with which the user can interact with and understand the system. The ability of the system to consistently achieve its desired function or outcome.
The process of using logical rules to draw a conclusion from a set of premises. A statement or rule that follows logically from a set of premises and can be used to reach a conclusion.
A statement that is reached after applying logical rules to a set of premises. A statement or assumption that is used as the basis for drawing a conclusion in a logical argument.

 

Truth Value Logical Connective
Negation Conjunction
Disjunction Conditional
Biconditional Modus Ponens

 

A word or phrase that connects two or more statements in logical reasoning. The truth or falsity of a statement or proposition.
A logical connective that joins two or more statements with the word 'and'. The opposite or negation of a statement or proposition.
A logical connective that joins two statements in a way that the first implies the second. A logical connective that joins two or more statements with the word 'or'.
A rule of inference that allows one to infer the consequent of a conditional statement from the antecedent. A logical connective that joins two statements in such a way that each implies the other.

 

Decision-making Situations requiring decision-making
Factors involved in decision-making Consequences of decisions
Decision-making strategies Hypothetical scenarios
Trade-offs Risk assessment

 

Various situations in computer science where decisions need to be made, such as selecting an algorithm, designing a user interface, or choosing a programming language. The process of making choices or decisions, especially in computer science contexts where it involves selecting from various possible courses of action based on available information and resources.
The impact of decisions made on a project, such as success or failure, efficiency, user satisfaction, or financial outcomes. Different factors that might influence the decision-making process, such as available resources, time constraints, user needs, or technical requirements.
Imaginary situations or problems that are used to illustrate decision-making strategies and test their effectiveness. Various methods or approaches that can be used to facilitate the decision-making process, such as decision trees, cost-benefit analysis, or heuristics.
Evaluating different factors involved in a decision to determine the likelihood and impact of potential risks and hazards, especially in high-stakes technological environments such as aviation, healthcare, or finance. The process of sacrificing one feature or quality in order to gain another when making decisions in computer science contexts, such as functionality vs. usability, performance vs. security, or simplicity vs. flexibility.

 

Optimization Algorithmic decision-making
Human-centered design Ethical considerations
Inputs Outputs
Solution Problem

 

The use of algorithms, data analysis, or machine learning to make decisions or recommendations in various fields such as finance, healthcare, education, or transportation, often with limited or no human involvement or oversight. The process of maximizing performance, efficiency, or effectiveness of a system or algorithm by selecting the best possible combination of inputs, parameters, or processes, often through automated or algorithmic means.
The principles, values, and standards that guide decision-making in computer science contexts, such as privacy, security, fairness, transparency, and accountability, especially in cases where they conflict or compete with one another. A design approach that focuses on understanding the needs, behaviors, and preferences of users, and incorporating them into the design process to create more effective, usable, and satisfying products and services.
The results or responses produced by a program, function or system after processing the given input data or information. The data or information that is provided to a program, function or system in order to accomplish a task.
An issue or task that requires a solution or resolution. A program, function or system designed to solve a specific problem or accomplish a task.

 

Data Parameters
Function Algorithm
Variable Output Format
Syntax Data Types

 

Variables or values that are used to provide inputs to a program, function or system. Facts, figures or information that can be processed, analyzed, and used for decision making or to provide insights.
A step-by-step process or procedure designed to solve a specific problem or accomplish a task. A predefined or user-defined sequence of instructions or code that performs a specific task or operation.
The structure or form in which the results or responses produced by a program, function or system are presented or displayed. A named data item or memory location used to store and manipulate data values within a program.
The classification or categorization of data values based on their characteristics, such as numeric, string, boolean, etc. The rules governing the structure and organization of programming languages or code.

 

Pre-conditions Assertion
Input validation Boundary conditions
Pre-conditions vs post-conditions Error handling
Debugging Test cases

 

A statement that must be true at a particular point in the execution of a program. The conditions that must be satisfied before a function or method is executed.
Conditions that occur at the limits of a program's range of inputs or outputs. The process of ensuring that the data entered into a system or program is valid and correct.
The process of detecting, reporting, and correcting errors in a program. Pre-conditions check for the correct input or conditions before executing a function, post-conditions check for the expected output or end conditions after executing a function.
A set of inputs, execution conditions, and expected outcomes used to test a program or function. The process of identifying and fixing errors in code.

 

Code reuse Logical errors
Syntax errors Runtime errors
Pre-Condition Post-Condition
Problem Unit Software Development

 

Errors that occur when the program logic does not behave as intended. The practice of using existing code in new programs or applications.
Errors that occur when a program crashes or terminates unexpectedly during execution. Errors that occur when a program violates the rules of a programming language.
A condition that must be true after a program has executed. A condition that must be true before a program commences its execution.
The process of designing, creating, testing and maintaining all kinds of software related solutions. A specific problem or task that needs to be solved or completed using programming concepts.

 

Programming Specification
Invariant Formal Specification
Test Case Boundary Condition
Requirement Verification

 

A detailed description of the behavior of a program or system, including the inputs, outputs, and any other relevant details. The process of creating instructions to be executed by a computer in order to solve a particular problem or perform a particular task.
A precise, unambiguous description of the behavior of a program or system, typically written using a mathematical notation. A condition that must always be true throughout the execution of a program.
A condition that occurs at the edge of the input domain for a program or function. Boundary conditions are important to test since they can often reveal bugs that might not otherwise be discovered. A specific input to a program or system, along with the expected output. Test cases are used to verify that the program behaves correctly under various conditions.
The process of checking that a program or system meets its stated requirements or specifications. Verification is typically performed by testing, inspection, or analysis. A statement of what a program or system must do in order to be considered correct or complete. Requirements can come from a variety of sources, such as users, customers, or regulatory agencies.

 

Exception Exception Handling
Try-Catch Block Throw
Checked Exception Unchecked Exception
Finally Block Stack Trace

 

The process of anticipating, detecting, and resolving exceptions in a program. An unexpected event that occurs during program execution and disrupts the normal flow of the program.
A statement used to explicitly throw an exception in a program. A programming construct used for handling exceptions. The 'try' block contains the code that could potentially generate an exception, while the 'catch' block contains the code that executes when an exception is caught.
An exception that need not be declared or caught in a program, as it cannot be anticipated at compile time. An exception that must be declared or caught in a program, as it can be anticipated at compile time.
The list of calls made to functions within a program, along with any exceptions that were caught during the course of their execution. A block of code that executes regardless of whether an exception is thrown or caught in a program.

 

Exception Hierarchy RuntimeException
ArithmeticException NullPointerException
Concurrent processing Parallel processing
Concurrency Deadlock

 

A class of unchecked exceptions that may be thrown by the Java Virtual Machine or by a program at runtime. The ordering of exceptions in Java, such that some exceptions are subclasses of others.
A subclass of RuntimeException that may be thrown when a program attempts to access a null reference. A subclass of RuntimeException that may be thrown when an arithmetic operation produces an overflow or underflow.
A computing technique where multiple processors or cores are used to process data simultaneously, resulting in faster and more efficient processing. A type of computing where multiple processes are executed simultaneously, resulting in faster and more efficient processing.
A situation where two or more processes are unable to continue executing because they are waiting for a resource held by another process. The ability of different parts of a program to run simultaneously.

 

Race condition Critical section
Mutex Semaphore
Thread Process
Multithreading Multiprocessing

 

The part of a program that accesses shared resources and needs to be executed atomically. A situation that arises when two or more processes access shared data and the outcome depends on the order in which the access occurs.
A synchronization primitive that is used to control access to a shared resource, especially in a multi-process or multi-threaded program. A synchronization primitive that is used to prevent multiple processes from accessing a shared resource simultaneously.
The instance of a program that is being executed; multiple processes can run concurrently on a single machine. A unit of execution within a program; many threads can run concurrently within a program.
The ability of a program or operating system to use multiple CPUs or cores for processing tasks. The ability of a program to execute multiple threads concurrently.

 

Abstraction Abstract Data Type
Encapsulation Polymorphism
Inheritance Function
Procedure Class

 

A data type that is defined by its behavior and not by its implementation. A technique in computer science where complex ideas are represented by simpler concepts or models.
The ability of an object to take on many forms or have many behaviors. A technique where data is hidden and can only be accessed through certain methods.
A block of code that performs a specific task and can be reused throughout the program. A mechanism where one object acquires all the properties and behaviors of another object of a different type.
A blueprint for creating objects that defines a set of attributes and methods that the objects will have. A block of code that performs a specific task but does not return a value.

 

Object Attribute
Method Variable
Linear search algorithm Binary search algorithm
Selection sort Bubble sort

 

A characteristic of an object that defines its state. An instance of a class that has its own values for the attributes defined in the class and can call its own methods.
A storage location in memory that holds a value of a specific type. A function that is defined in a class and can only be called on objects of that class.
A searching algorithm that divides the list of elements into halves, and checks which half the element may be in until the target value is found. A searching algorithm that traverses a list of elements from start to end, comparing each element with the target value until a match is found.
A sorting algorithm that repeatedly swaps adjacent elements if they are in the wrong order. A sorting algorithm that repeatedly selects the smallest element from the unsorted portion of the list and moves it to the front of the sorted portion.

 

Insertion sort Merge sort
Quick sort Radix sort
Heap sort Shell sort
Counting sort Bucket sort

 

A sorting algorithm that divides the list into two halves, recursively sorts each half, and then merges the sorted halves into a single sorted list. A sorting algorithm that builds the final sorted list one element at a time by inserting each element into its correct position.
A sorting algorithm that sorts integers by grouping them by each digit and sorting each group by that digit. A sorting algorithm that selects a pivot and partitions the elements into two groups, one with elements less than the pivot and the other with elements greater than the pivot, then recursively sorts each group.
A sorting algorithm that sorts elements that are far apart from each other first, then sorts the elements that are less far apart, and finally sorts the elements that are adjacent to each other. A sorting algorithm that builds a heap data structure from the list and repeatedly removes the maximum element and rebuilds the heap until all elements are sorted.
A sorting algorithm that divides the elements into several buckets, each of which is then sorted using another algorithm or by recursively applying the bucket sort. A sorting algorithm that counts the number of occurrences of each element and uses this information to place each element into its sorted position.

 

Pseudocode Algorithm
Syntax Conventions
Flowchart Variable
Control Structures Function

 

A step-by-step procedure or formula used to solve a problem. A high-level description of a computer program or algorithm that uses natural language statements and common programming terms.
The standard and commonly accepted ways of formatting and organizing code, including the use of indentation, comments, and naming conventions. The rules that govern the structure of programming languages, including the correct use of punctuation, keywords, and other elements.
A named storage location in a computer program that can hold a value that may change during the program's execution. A visual representation of the steps in an algorithm or program, often using diagrams or symbols, to aid in understanding and debugging.
A reusable block of code that performs a specific task, often with inputs and outputs. Statements or blocks of code that control the flow of execution in a program, including loops, conditionals, and exceptions.

 

Parameter Return Value
Comment Debugging
Algorithm efficiency Time complexity
Space complexity Big O notation

 

The output or result of a function or calculation, often used to assign a value to a variable or display information to the user. A value or variable that is passed into a function as input, to be used in computations or operations.
The process of identifying and fixing errors or bugs in a computer program, often using tools like print statements or software debuggers. Text within a program that explains or clarifies the code, but is not executed by the computer during runtime.
The amount of time taken for an algorithm to run based on the input size. The measure of how well an algorithm performs based on its use of computer resources such as time and memory.
A mathematical notation used to describe the upper bound of the time or space complexity of an algorithm. The amount of memory an algorithm requires to execute based on the input size.

 

Asymptotic analysis Best case scenario
Worst case scenario Average case scenario
Linear search Binary search
Selection sort Bubble sort

 

The scenario in which an algorithm performs at its best based on the input size. The analysis of the algorithm performance as the input size approaches infinity.
The scenario in which an algorithm performs on average based on a range of input sizes. The scenario in which an algorithm performs at its worst based on the input size.
An algorithm that searches for a specific value in a sorted list by repeatedly dividing the search interval in half. An algorithm that searches for a specific value in a list by checking each element one by one.
An algorithm that sorts a list by repeatedly swapping adjacent elements if they are in the wrong order. An algorithm that sorts a list by repeatedly finding the minimum element and swapping it with the first unsorted element.

 

Algorithm Input data
Step Run time
Efficiency Analyze
Determine Data unit

 

The data that is given to an algorithm as input. A set of instructions that solve a problem or perform a specific task in a finite amount of time.
The amount of time it takes for an algorithm to execute. A single operation or action that is performed by an algorithm.
To examine and evaluate the structure and performance of an algorithm. The ability of an algorithm to use the least amount of resources possible to solve a problem.
The smallest piece of data that an algorithm can process. To find out or calculate the number of times a step in an algorithm will be performed.

 

Complexity Asymptotic
Big O notation Time complexity
Fundamental operations Compound operations
Instruction set Instruction cycle

 

A way of analyzing the performance of an algorithm as the input size grows to infinity. A measure of the performance of an algorithm as the input size increases.
The amount of time it takes for an algorithm to run, as a function of the size of its input. A notation used to describe the complexity of an algorithm in terms of its worst-case performance.
Operations consisting of multiple fundamental operations, often resulting in more complex computations. Basic operations performed by a computer processor, such as arithmetic and logic operations.
The sequence of steps a processor goes through to fetch, decode, execute, and store an instruction. The collection of fundamental and compound operations that a computer processor can execute.

 

Machine code Assembly language
Compiler Interpreter
Algorithm Flowchart
Pseudocode Cache

 

A low-level programming language that uses mnemonics to represent instructions, providing a more human-readable alternative to machine code. The binary representation of instructions that a processor can execute directly.
A program that executes high-level code directly, without translating it into machine code or assembly language. A program that translates high-level code into machine code or assembly language.
A graphical representation of an algorithm, using symbols and arrows to depict the sequence of operations. A step-by-step procedure for solving a problem, often expressed as a sequence of fundamental and/or compound operations.
A high-speed memory that stores frequently accessed data or instructions, to reduce the time required to fetch them from main memory or secondary storage. A human-readable language for expressing algorithms, using a syntax that resembles high-level programming languages but without enforcing strict rules.

 

Syntax Data Types
Variables Conditional Statements
Loops Functions
Objects Class

 

Categories that define what type of data can be stored and manipulated in a programming language, such as integers, floating point numbers, and strings. The set of rules that define the correct structure and formatting for statements and commands in a programming language.
Statements that allow a program to make decisions and execute certain actions based on certain conditions being met. Named storage locations in a program that store data values for later use.
Reusable blocks of code that perform a specific task and can be called by other parts of the program. Statements that allow a program to repeat a set of actions multiple times, either for a fixed number of iterations or until a certain condition is met.
A blueprint or template for creating objects that define the properties and behaviors that those objects will have. Instances of classes that contain data and methods for manipulating that data.

 

Inheritance Polymorphism
Debugging High-Level Language
Higher Level Languages Interpreted Language
Compiled Language Object-Oriented Programming

 

The ability of objects to take on multiple forms or behaviors based on their context or the type of object they are interacting with. The ability of objects to acquire properties and methods from parent objects, allowing for code reuse and modularity.
A programming language that is designed to be easy for humans to read and write, often using words and phrases that are similar to natural language. The process of identifying and fixing errors or bugs in a program.
A type of programming language where code is interpreted and executed by the computer, without the need for compilation. Programming languages that are closer to human language and easier to read and write than low-level languages, such as assembly or machine code.
A programming paradigm that focuses on the creation of objects that can interact with each other to perform certain tasks. A type of programming language where code is translated into machine language and executed directly by the computer after compilation.

 

Python Java
C++ JavaScript
PHP Ruby
Limitations Benefits

 

A high-level, object-oriented programming language that is widely used for developing desktop applications, web applications, and mobile apps. A high-level, interpreted programming language that is widely used for scripting, automation, web development, and scientific computing.
A high-level, interpreted programming language that is widely used for front-end and back-end web development, game development, and desktop applications. A high-level, object-oriented programming language that is widely used for developing system software, game engines, and complex applications.
A high-level, interpreted programming language that is widely used for web development, especially for building web applications with the Ruby on Rails framework. A high-level, server-side scripting language that is widely used for web development, especially for building dynamic websites and e-commerce platforms.
The advantages or strengths of using higher level programming languages, such as improved productivity, readability, portability, and flexibility. The weaknesses or disadvantages of low-level programming languages, such as poor readability, high complexity, and hardware dependency.

 

Translation Process Compiler
Interpreter Assembler
High-level Language Low-level Language
Source Code Object Code

 

A program that translates code written in a high-level language to machine code all at once, generally resulting in an executable file. The process of converting code written in a high-level language to machine executable form.
A program that translates assembly language code into machine code. A program that reads code written in a high-level language and immediately executes it.
A language that is designed to be easily understood by machines, typically represented in binary form. A language which is designed to be easily read and written by humans, and typically has a complex syntax and a large set of operations built-in.
The machine-readable code that results from compiling or otherwise translating source code. The human-readable code written in a high-level language before it is compiled or otherwise translated into machine code.

 

Linker Loader
Debugging Variable
Constant Operator
Object Data Type

 

A program that loads an executable file into memory so that it can be executed by a computer. A program that combines object code files into a single executable file that can run on a computer.
A named storage location in memory whose value can be changed during program execution. The process of finding and fixing errors or bugs in code.
A symbol that represents a specific operation to be performed on one or more operands. A named storage location in memory whose value cannot be changed during program execution.
A classification of data that specifies the type of operations that can be performed on it. An instance of a class that contains data and the operations that can be performed on that data.

 

Primitive Data Type Reference Data Type
Declaration Initialization
Arithmetic Operator Relational Operator
Logical Operator =

 

A data type that is used to refer to an object, rather than directly containing its data. A data type that is not an object, but a basic type that is built into the programming language.
The process of assigning an initial value to a variable. The process of defining a variable, specifying its data type and name.
An operator that compares the values of two operands, such as 'less than', 'greater than', and 'equal to'. An operator that performs mathematical calculations, such as addition, subtraction, multiplication, and division.
The assignment operator used to assign a value to a variable. An operator that performs logical operations, such as 'and', 'or', and 'not'.

 

. <
<= >
>= mod
div AND

 

The less than operator used to check if one value is less than another. The dot operator used to access a member of an object.
The greater than operator used to check if one value is greater than another. The less than or equal to operator used to check if one value is less than or equal to another.
The modulus operator used to get the remainder of a division operation. The greater than or equal to operator used to check if one value is greater than or equal to another.
The logical operator used to perform a logical AND operation. The integer division operator used to get the integer quotient of a division operation.

 

OR NOT
XOR

 

The logical operator used to perform a logical NOT operation. The logical operator used to perform a logical OR operation.
The logical operator used to perform a logical XOR operation.

 

Collection

 

A data structure that holds a group of elements, which could be of different data types.

 

List Set
Dictionary Stack
Queue Array
Linked List Data Structure

 

A collection that is unordered and does not allow duplicates. A collection that is ordered and allows duplicates. Every element in the list has an index.
An ordered collection where elements are added and removed from the top. It follows the Last-In-First-Out principle (LIFO). A collection that is unordered, but instead of having an index there is a key that can be used to access the elements.
A collection that is ordered and allows duplicates, but cannot change size. An ordered collection where elements are added to the back and removed from the front. It follows the First-In-First-Out principle (FIFO).
A way of organizing and storing data so that it can be accessed and modified efficiently. A collection that is ordered and allows duplicates. Every element is linked to the next element, and it can change size.

 

Sorting Searching
Data Retrieval Collection
Access Method Index
Key Iterator

 

The process of finding a particular element in a collection. The process of arranging elements in a collection in a particular order.
A data structure that holds a group of elements, which can be of different data types, and provides methods for accessing, adding, and removing elements from the collection. The process of accessing data from a collection or database.
A numerical value that represents the position of an element in a collection, starting from 0 for the first element. A way to retrieve or modify an element in a collection, such as using an index, a key, or an iterator.
An object that provides a way to traverse a collection and access its elements one by one, without knowing their specific positions or keys. A unique identifier that corresponds to an element in a collection, such as a string or a number.

 

Algorithm Pseudocode
Linear Search Binary Search
Sorting Selection Sort
Insertion Sort

 

A high-level language that uses a mix of natural language and programming constructs to describe the logic of an algorithm, without worrying about the specific syntax of a programming language. A set of steps or instructions for solving a specific problem, often expressed in pseudocode or a programming language.
A method for finding an element in a sorted collection by dividing the collection in half, comparing the target element to the middle element, and repeating the process on the half where the target element might be. A method for finding an element in a collection by checking each element in order, from the first to the last.
A sorting algorithm that repeatedly selects the smallest element from the unsorted part of the collection and puts it at the beginning of the sorted part. The process of arranging the elements in a collection in a specific order, such as ascending or descending, based on some criteria, such as the element's value or key.
A sorting algorithm that builds the sorted part of the collection one element at a time, by comparing each element to the elements in the sorted part and inserting it in the correct position.