| Subprogram | Function |
| Procedure | Return Statement |
| Call Statement | Modularity |
| Reusability | Maintainability |
| A named section of code that performs a specific task and returns a value when executed. | A program module that performs a specific task within a larger program. |
| A command in a subprogram that specifies the value sent back to the main program after execution | A callable code block within a program that performs a specific task without returning a value. |
| The principle of breaking down a program into smaller, manageable sections. | A command in a program that activates a subprogram allowing it to run and perform its tasks. |
| The ease with which modifications can be made to a codebase. | The ability to use existing code in multiple programs or contexts. |
| Abstraction | Testing |
| Readability | Efficiency |
| Data Abstraction | Abstract Data Type |
| Abstraction Layer | Procedural Abstraction |
| The process of running software to find and locate defects or errors in its behavior. | The reduction of complexity by hiding implementation details. |
| The ability to execute tasks with optimal resource usage. | The ease with which humans can interpret and comprehend the structure and logic of code. |
| A data type that specifies only the functionality and not the specific way it is implemented. | A method of hiding complex data details by providing a simplified, high-level interface for interaction. |
| A method that hides detailed steps of a process, showing only necessary information to use it effectively. | A simplified interface is provided to hide the complexity of lower-level components. |
| Class | Object |
| Encapsulation | Inheritance |
| Polymorphism | |
| An instance of a class that contains both data and methods. | A blueprint for creating objects that encapsulates data and behavior. |
| A mechanism to create a new class using properties and behaviors of an existing class. | The bundling of data and methods that operate on that data within a single unit. |
| The ability to present the same interface for different underlying data types. | |