Algorithms & Software Development โ€” File 4 of 5

Searching, sorting, Big O notation ยท SDLC, testing, UI design ยท 108 terms

Click a topic above to jump straight in โ†‘

๐Ÿ” Algorithms, Searching, Sorting & Complexity

Search and sort algorithms, Big O notation, and trace tables.

7

๐Ÿ“ Algorithm Basics

Algorithm CORE

A finite, ordered set of unambiguous steps for solving a problem or performing a task.

A recipe: finite number of steps, in a specific order, clear instructions (not "add some flour" โ€” "add 200g flour"). Algorithms must terminate (no infinite loops) and be precise.

Pseudocode CORE

A language-independent way of describing an algorithm using structured plain English/code-like notation.

Like writing instructions in plain English but in the style of code. Not actual Python, not just a sentence โ€” somewhere in between. Used to plan algorithms before coding them.

Flowchart CORE

A diagram that represents an algorithm using symbols and arrows to show flow of control.

Trace Table CORE

A table used to follow the values of variables step by step as an algorithm/program runs.

Very common in Sections A and B. For each step, record the value of each relevant variable. Show every change, even tiny ones.

๐Ÿ”Ž Searching Algorithms

Linear Search CORE

A search algorithm that checks items one by one until the target is found or the list ends.

Looking for your keys by checking every pocket, every drawer, one by one. No shortcut โ€” just check everything in order until you find it.

Binary Search CORE

A search algorithm for sorted data that repeatedly compares the target with the middle item and discards half of the remaining list.

Looking up a word in a dictionary. You open it in the middle โ€” if your word comes before that page, you tear off the right half. Repeat. Much faster than checking page by page.

Binary search requires data to be sorted first. Complexity: O(log n).

Search Key CORE

The value being searched for in a search algorithm. Also called target or search value.

๐Ÿ“Š Sorting Algorithms

Linear Search
O(n)
Worst case: check every item
Binary Search
O(log n)
Halves the search space each step
Bubble Sort
O(nยฒ)
Adjacent comparisons & swaps
Selection Sort
O(nยฒ)
Find smallest each pass
Quicksort (best)
O(n log n)
Good pivot divides evenly
Quicksort (worst)
O(nยฒ)
Bad pivot (sorted list)
Sorting Algorithm CORE

An algorithm that rearranges data into a specified order such as ascending or descending.

Bubble Sort CORE

A simple sorting algorithm that repeatedly compares adjacent items and swaps them if they are in the wrong order.

Like bubbles rising in water โ€” heavier values sink, lighter values bubble up. After each full pass through the list, the largest unsorted item has "bubbled" to its correct position at the end.

Selection Sort CORE

A sorting algorithm that repeatedly selects the smallest remaining item and moves/swaps it into its correct position.

Arranging a hand of cards by repeatedly finding the lowest card and placing it in the leftmost unsorted position.

Insertion Sort USEFUL

A sorting algorithm that builds a sorted section by inserting each next item into its correct position within the already-sorted part.

How most people sort a hand of playing cards โ€” you pick up each new card and slot it into the right place among the cards you're already holding.

Quicksort CORE

A divide-and-conquer sorting algorithm that partitions a list around a pivot and recursively sorts the sub-lists.

Choose a middle value (pivot), put everything smaller on the left, everything larger on the right. Then repeat the process on each side. Divide and conquer.

Pivot CORE

The selected value used by quicksort to partition the list into lower and higher/equal values. A bad pivot choice can make quicksort inefficient.

Partition CORE

Dividing a list into sub-lists based on comparison with a pivot during quicksort.

โฑ๏ธ Time Complexity & Big O

Time Complexity CORE

A way of describing how the time/number of operations needed by an algorithm grows as input size grows.

Big O Notation CORE

A notation for describing the growth rate of an algorithm's time or space requirements as input size increases.

O(1)
Constant Time
Same speed regardless of input. Accessing list[5].
O(log n)
Logarithmic
Halves problem each step. Binary search.
O(n)
Linear Time
Grows with input. Linear search.
O(n log n)
Linearithmic
Efficient sorts like quicksort (best case).
O(nยฒ)
Quadratic
Nested loops. Bubble sort, selection sort.
O(1) โ€” Constant Time CORE

The running time does not grow with input size. Example: accessing a list item by index.

O(log n) โ€” Logarithmic Time CORE

Work grows slowly because the problem is repeatedly reduced by a factor โ€” such as halving in binary search.

O(n) โ€” Linear Time CORE

Work grows in proportion to the number of input items. Example: linear search worst case.

O(nยฒ) โ€” Quadratic Time CORE

Work grows roughly with the square of input size, often from nested comparisons. Example: bubble sort.

O(n log n) โ€” Linearithmic Time USEFUL

Common efficient sorting complexity where the list is divided and each level processes all items. Example: quicksort best case / merge sort.

Best Case CORE

The input situation where an algorithm performs as efficiently as possible.

Worst Case CORE

The input situation where an algorithm performs the maximum expected amount of work. Used most often for complexity analysis.

Efficiency CORE

How well an algorithm or system uses resources such as time, memory, CPU or energy.

๐Ÿ› ๏ธ Software Development & Testing

SDLC models, design, team roles, testing types, and user interfaces.

8

๐Ÿ”„ Development Process

Software Development Life Cycle (SDLC) CORE

A structured process for planning, designing, implementing, testing, deploying and maintaining software.

Waterfall / Staged Model CORE

A software development process where phases are completed in sequence before moving to the next phase.

Like building a house: you must lay the foundation before the walls, walls before the roof. You can't go back easily. Structured but inflexible.

Agile / Iterative Model CORE

A flexible software development approach that builds software in repeated cycles/iterations, often with regular feedback.

Like sculpting clay โ€” you build a rough shape first, then keep refining based on feedback. Requirements can change as you go. Good when you're not sure exactly what you need at the start.

Sprint USEFUL

A short, fixed period of work in agile development during which a team completes planned tasks.

Stakeholder CORE

Any person or group affected by or interested in a system, such as client, user, manager or developer.

Client CORE

The person or organisation requesting or paying for the software/system. Do not confuse with web client.

End User CORE

The person who will actually use the finished system. Important in user-centred design.

Requirement CORE

A statement of what a system must do or how it must perform. Divided into functional and non-functional.

Functional Requirement CORE

A requirement describing what the system must do, such as "calculate totals" or "save user records."

Non-Functional Requirement CORE

A requirement describing how well the system should perform, such as usability, speed, reliability, security or accessibility.

Functional = what it does. Non-functional = how well it does it.

๐Ÿ‘ฅ Team Roles

Project Manager CORE

Role responsible for planning, resourcing, scheduling, monitoring progress and communication.

Business Analyst CORE

Role that investigates the problem, gathers stakeholder requirements and documents what the system should do.

Designer CORE

Role that plans how the system will work/look, using tools such as flowcharts, pseudocode, wireframes and database design.

Software Developer / Programmer CORE

Role that writes, tests, debugs and modifies program code.

Software Tester CORE

Role that tests software, records results and helps find faults before release.

System Architect USEFUL

Role that defines the overall structure, components, protocols and technology stack of a system.

UI/UX Designer USEFUL

Role focused on creating a usable, accessible and pleasant user interface/user experience.

๐ŸŽจ Design & UI

Wireframe CORE

A low-fidelity sketch/diagram showing the layout and structure of a webpage or interface โ€” no real content or full styling.

An architect's rough floor plan before the detailed blueprints. Shows where rooms go, not what colour the walls are.

Prototype CORE

A simplified working or partly working version of a system used for testing, demonstration or feedback. Higher fidelity than a wireframe.

User-Centred Design CORE

Designing a system around the needs, goals, abilities and feedback of its users.

User Interface (UI) CORE

The means by which a user interacts with a computer system and receives output from it.

User Experience (UX) CORE

The overall experience a user has while using a system, including ease, efficiency, satisfaction and accessibility.

Graphical User Interface (GUI) CORE

An interface using visual elements such as windows, icons, menus and pointers/touch. WIMP is associated with GUI.

Command Line Interface (CLI) CORE

A text-based interface where users type commands to interact with the system. Requires knowledge of commands.

Menu-Driven Interface CORE

An interface where users choose from displayed options/menus. Common in kiosks and ATMs.

Touch Interface USEFUL

An interface where users interact by touching a screen. Common in smartphones and kiosks.

Voice User Interface (VUI) USEFUL

An interface where users interact using spoken commands. Used in smart speakers and voice assistants.

Universal Design CORE

Designing products/environments to be usable by as many people as possible without needing special adaptation.

Know the principles: equitable use, flexibility in use, simple & intuitive, perceptible information, tolerance for error, low physical effort, size and space.

Accessibility CORE

Designing systems so people with different needs/abilities can use them effectively.

Examples: screen readers for visually impaired, high contrast modes, keyboard navigation for those who can't use a mouse.

Assistive Technology CORE

Technology that helps a person with a disability or additional need to use a computer/system. Examples: screen reader, braille display, voice recognition.

Adaptive Technology USEFUL

Technology that is modified or configured to suit an individual user's needs.

๐Ÿงช Testing

Test Case CORE

A specific input/action and expected result used to check whether code or a system works correctly.

Unit Testing CORE

Testing small individual units/components/functions of code, usually by the developer.

Integration Testing USEFUL

Testing that multiple components work correctly together.

System Testing CORE

Testing the whole system to check whether it works as intended under realistic conditions.

Functional Testing CORE

Testing whether system features meet their functional requirements from the user's perspective.

Non-Functional Testing CORE

Testing qualities such as performance, usability, reliability, security, compatibility or scalability.

2023 exam: distinction between functional and non-functional testing. Know the difference!

Regression Testing CORE

Retesting existing functionality after changes to ensure new changes did not break working code.

After renovating your kitchen, you check that the living room still works โ€” the renovation shouldn't have broken anything elsewhere.

Black-Box Testing USEFUL

Testing based on inputs and expected outputs without knowing internal code structure.

White-Box Testing USEFUL

Testing with knowledge of the internal code/logic, often to cover execution paths.

Documentation CORE

Written/visual material explaining code, design, testing, use or development of a system.

Version Control USEFUL

A system for tracking changes to files/code over time, allowing collaboration and recovery of previous versions.

Like Google Docs' version history โ€” you can see who changed what and when, and roll back to an earlier version if something goes wrong. Git is the most common version control system.

๐Ÿ› ๏ธ Software Development & Testing

SDLC models, design, team roles, testing types, and user interfaces.

8

๐Ÿ”„ Development Process

Software Development Life Cycle (SDLC) CORE

A structured process for planning, designing, implementing, testing, deploying and maintaining software.

Waterfall / Staged Model CORE

A software development process where phases are completed in sequence before moving to the next phase.

Like building a house: you must lay the foundation before the walls, walls before the roof. You can't go back easily. Structured but inflexible.

Agile / Iterative Model CORE

A flexible software development approach that builds software in repeated cycles/iterations, often with regular feedback.

Like sculpting clay โ€” you build a rough shape first, then keep refining based on feedback. Requirements can change as you go. Good when you're not sure exactly what you need at the start.

Sprint USEFUL

A short, fixed period of work in agile development during which a team completes planned tasks.

Stakeholder CORE

Any person or group affected by or interested in a system, such as client, user, manager or developer.

Client CORE

The person or organisation requesting or paying for the software/system. Do not confuse with web client.

End User CORE

The person who will actually use the finished system. Important in user-centred design.

Requirement CORE

A statement of what a system must do or how it must perform. Divided into functional and non-functional.

Functional Requirement CORE

A requirement describing what the system must do, such as "calculate totals" or "save user records."

Non-Functional Requirement CORE

A requirement describing how well the system should perform, such as usability, speed, reliability, security or accessibility.

Functional = what it does. Non-functional = how well it does it.

๐Ÿ‘ฅ Team Roles

Project Manager CORE

Role responsible for planning, resourcing, scheduling, monitoring progress and communication.

Business Analyst CORE

Role that investigates the problem, gathers stakeholder requirements and documents what the system should do.

Designer CORE

Role that plans how the system will work/look, using tools such as flowcharts, pseudocode, wireframes and database design.

Software Developer / Programmer CORE

Role that writes, tests, debugs and modifies program code.

Software Tester CORE

Role that tests software, records results and helps find faults before release.

System Architect USEFUL

Role that defines the overall structure, components, protocols and technology stack of a system.

UI/UX Designer USEFUL

Role focused on creating a usable, accessible and pleasant user interface/user experience.

๐ŸŽจ Design & UI

Wireframe CORE

A low-fidelity sketch/diagram showing the layout and structure of a webpage or interface โ€” no real content or full styling.

An architect's rough floor plan before the detailed blueprints. Shows where rooms go, not what colour the walls are.

Prototype CORE

A simplified working or partly working version of a system used for testing, demonstration or feedback. Higher fidelity than a wireframe.

User-Centred Design CORE

Designing a system around the needs, goals, abilities and feedback of its users.

User Interface (UI) CORE

The means by which a user interacts with a computer system and receives output from it.

User Experience (UX) CORE

The overall experience a user has while using a system, including ease, efficiency, satisfaction and accessibility.

Graphical User Interface (GUI) CORE

An interface using visual elements such as windows, icons, menus and pointers/touch. WIMP is associated with GUI.

Command Line Interface (CLI) CORE

A text-based interface where users type commands to interact with the system. Requires knowledge of commands.

Menu-Driven Interface CORE

An interface where users choose from displayed options/menus. Common in kiosks and ATMs.

Touch Interface USEFUL

An interface where users interact by touching a screen. Common in smartphones and kiosks.

Voice User Interface (VUI) USEFUL

An interface where users interact using spoken commands. Used in smart speakers and voice assistants.

Universal Design CORE

Designing products/environments to be usable by as many people as possible without needing special adaptation.

Know the principles: equitable use, flexibility in use, simple & intuitive, perceptible information, tolerance for error, low physical effort, size and space.

Accessibility CORE

Designing systems so people with different needs/abilities can use them effectively.

Examples: screen readers for visually impaired, high contrast modes, keyboard navigation for those who can't use a mouse.

Assistive Technology CORE

Technology that helps a person with a disability or additional need to use a computer/system. Examples: screen reader, braille display, voice recognition.

Adaptive Technology USEFUL

Technology that is modified or configured to suit an individual user's needs.

๐Ÿงช Testing

Test Case CORE

A specific input/action and expected result used to check whether code or a system works correctly.

Unit Testing CORE

Testing small individual units/components/functions of code, usually by the developer.

Integration Testing USEFUL

Testing that multiple components work correctly together.

System Testing CORE

Testing the whole system to check whether it works as intended under realistic conditions.

Functional Testing CORE

Testing whether system features meet their functional requirements from the user's perspective.

Non-Functional Testing CORE

Testing qualities such as performance, usability, reliability, security, compatibility or scalability.

2023 exam: distinction between functional and non-functional testing. Know the difference!

Regression Testing CORE

Retesting existing functionality after changes to ensure new changes did not break working code.

After renovating your kitchen, you check that the living room still works โ€” the renovation shouldn't have broken anything elsewhere.

Black-Box Testing USEFUL

Testing based on inputs and expected outputs without knowing internal code structure.

White-Box Testing USEFUL

Testing with knowledge of the internal code/logic, often to cover execution paths.

Documentation CORE

Written/visual material explaining code, design, testing, use or development of a system.

Version Control USEFUL

A system for tracking changes to files/code over time, allowing collaboration and recovery of previous versions.

Like Google Docs' version history โ€” you can see who changed what and when, and roll back to an earlier version if something goes wrong. Git is the most common version control system.