1/62
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
Object (Definition)
A self-contained unit of code combining data and functionality in a single independent unit.
Object (Runtime & Real-world)
Exists in memory during runtime with own data; e.g., a specific car with its color.
Class
A blueprint or template used to create objects, defining variables and methods.
Encapsulation
Bundling attributes and methods in a class, controlling access using public and private.
Encapsulation (Purpose)
Protects variables from being changed by outside code.
Abstraction
Simplifying complex systems by hiding implementation details and exposing only what is necessary.
Abstraction Example
Driving a car using the accelerator without knowing how the engine accelerates.
Inheritance
When a subclass takes on variables and methods of a parent class.
Inheritance (Purpose & Example)
Ensures code reusability; e.g., SportsCar and Truck inheriting speed from a base Vehicle.
Generalisation
Identifying shared features across specific things and combining them into a reusable solution.
Generalisation Example
Grouping shared traits of lions and tigers into one generalized Animal class.
Polymorphism
Different classes using the exact same method name to perform completely different actions.
Polymorphism Example
A TakeScreenshot class and a MuteMicrophone class both executing their unique tasks via Execute().
Procedural programming
A step by step method that breaks down the program into reusable routines which are called subprograms or functions.
Object oriented programming
A programming paradigm organised around objects and their associated behaviours (methods) rather than sequential logic.
Procedural Programming - Linear Execution
The computer processes code sequentially from the first line down to the last line.
OOP - Blueprints
Classes act as the master blueprints that dictate how every object behaves and handles data.
Procedural Programming - Function Driven
Code is grouped into reusable blocks called procedures, routines, or functions.
Procedural Programming - Design Approach
Uses a top-down design, breaking one big task into smaller steps.
OOP - Object Creation
You can create one master blueprint (class) and instantly pump out hundreds of unique versions (objects).
Procedural Programming - Shared State
Programs rely heavily on global variables that any function can see and change.
OOP - Design Approach
Uses a bottom-up design, making individual pieces first and linking them.
Task definition
A clear explanation of an issue or challenge summing up what you want to change.
Top-down approach
Breaking a complex algorithm down into smaller units called modules.
Bottom-up approach (OOP)
Creating basic classes and objects first, then combining them into larger systems.
Facade pattern
Hides system complexities and provides a single, simplified interface to the client.
Abstraction vs. Facade Pattern
Abstraction hides details of one object; Facade provides a simplified interface to many subsystems.
Agility
The ability of a program to adapt to changing requirements without major changes.
Message-passing
A behaviour in OOP where objects communicate by sending data rather than accessing each other's code.
Message-passing example
Collision is triggered by the player when touched by the lava, it passes a function in the player's object to kill the player
Code optimisation
Modifying code so programs run faster and use less memory.
Python Optimisation: Built-in Functions
Use functions like sum() or max() which run on highly optimized, compiled C code.
Python Optimisation: Generators
Use parentheses () instead of brackets [] to process large datasets one item at a time.
Python Optimisation: String Concatenation
Use "".join(list) instead of looping with += to avoid recreating strings in memory.
Collaborative code development
When a team of programmers work together to build software.
Consistency
When the rules of the program stay the same throughout when writing the code.
Consistency (Formatting)
Standardizing parentheses and spacing so the code looks written by a single person.
Consistency (Naming Conventions)
Developers using intrinsic, meaningful names for their variables.
Consistency (Design Pattern)
Using a standard structure for the overall organization of the code.
Code commenting
Adding notes to sections of your code, explaining its meaning and intent.
Version control
A management system that allows access to a complete history of your process.
Feedback
The ongoing process of getting project feedback to fix mistakes immediately.
Clear and uncluttered mainline
Keeping the main starting section of code short and simple by using subroutines.
One logical task per subroutine
Designing each subroutine to perform only one job for readability and reusability.
Stub
A placeholder dummy code returning hardcoded data used during software testing.
Stub (Dependencies)
Eliminates dependencies, allowing testing before external systems or team code are finished.
Stub (Speed)
Increases speed by returning hardcoded data instantly instead of making slow network calls.
Stub (Predictability)
Guarantees reliable test results by always returning the exact same data.
Stub (Edge Cases)
Simulates rare scenarios like server crashes or network timeouts to test error handling.
Data Structures
Creating specific data formats like lists or dictionaries to process information.
Control Structures
Altering logic flow or data organization using loops or conditional statements.
Data & Control Structures Example
Netflix loading a show list (data structure) and looping to draw thumbnails (control structure).
Ease of maintenance
How easily software can be updated, repaired, and expanded over time.
Regular backup
An automated process of saving code copies to prevent work loss from bugs.
Unit Testing
Testing one small, individual piece of code in isolation to ensure it works correctly.
Subsystem Testing
Integration testing verifying the behavior and interaction between multiple components within a subsystem.
System Testing
Testing the entire completed application from start to finish to validate overall functionality.
White Box Testing
Testing technique requiring full knowledge of internal code to test syntax, logic, or runtime errors.
Black Box Testing
Testing technique where inputs and outputs are known, requiring no coding experience.
Grey Box Testing
Testing technique where the tester has partial knowledge of internal code, structures, or architecture.
Quality Assurance
Ongoing process of testing and checking software to ensure reliability and meet design requirements.
Alpha Testing
Testing performed by developers in a controlled environment to check for core functionality.
Beta Testing
Testing performed by real users in their own environment to gather feedback on reliability.