Foundational Mathematical Concepts
From the Foundations of Computing curriculum
Foundational Mathematical Concepts
TL;DR
Understanding core math concepts like sets, functions, and logic is crucial because they're the language computers speak. These concepts help you precisely define problems and design solutions effectively. Mastering them will make your code more robust and your problem-solving skills much stronger.
1. The Mental Model
Think of these mathematical concepts as the basic building blocks and rules of reasoning. Just like you need to understand gravity to build a stable bridge, you need to understand these mathematical ideas to build stable, predictable software. They give you a way to describe relationships and operations clearly.
2. The Core Material
Computers are fundamentally logical machines. Everything they do, from adding numbers to displaying graphics, breaks down into basic operations rooted in mathematics. We'll look at the most foundational ideas you'll encounter.
Sets
A set is just a collection of distinct items, called elements. The order of the items doesn't matter, and each item appears only once. Think of it like a shopping list where you've deduplicated items and the order isn't important.
{apple, banana, orange}is a set.{1, 2, 3}is a set.{apple, apple, banana}is not a proper mathematical set; it's just{apple, banana}.
Common Set Operations:
- Union (∪): Combines all unique elements from two sets.
A = {1, 2}B = {2, 3}A ∪ B = {1, 2, 3}
- Intersection (∩): Finds elements common to both sets.
A = {1, 2}B = {2, 3}A ∩ B = {2}
- Difference (- or \ ): Finds elements in the first set but not in the second.
A = {1, 2}B = {2, 3}A - B = {1}
Functions (Mappings)

Photo by Shubham Dhage on Pexels
A function is a rule that assigns each input from one set (the domain) to exactly one output in another set (the codomain or range). It's like a vending machine: you put in a specific code (input), and you get exactly one specific item (output).
f(x) = x + 1is a function. Ifx = 2,f(x)is always3.- A function
ffrom setAto setBis writtenf: A → B.
Functions are everywhere in programming:
* A method calculate_total(price, quantity) is a function.
* A loop transforming a list creates a new list (a function mapping inputs to outputs).
Logic (Boolean Algebra)

Photo by Seraphfim Gallery on Pexels
Logic deals with statements that can be either true or false. In computing, this is vital because all decisions and control flow depend on evaluating conditions to be true or false.
Basic Logical Operators:
- AND (∧): True only if both statements are true.
A AND B.True AND TrueisTrueTrue AND FalseisFalse
- OR (∨): True if at least one statement is true.
A OR B.True OR FalseisTrueFalse OR FalseisFalse
- NOT (¬): Reverses the truth value.
NOT A.NOT TrueisFalseNOT FalseisTrue
These operators are the basis for if statements, while loops, and filtering data.
Here's how these concepts build on each other:
graph TD
A["Concepts: Sets, Functions, Logic"] --> B["Builds Understanding Of"]
B --> C["Data Structures (e.g., Lists, Trees as sets/relations)"]
B --> D["Algorithms (e.g., Sorting, Searching as functions/logic)"]
B --> E["Program Control Flow (e.g., if/else, loops as logic)"]
C --> F["Efficient Code Design"]
D --> F
E --> F
F --> G["Solving Complex Problems Reliably"]
Relations
A relation describes how elements in one set (or within the same set) are connected. It's a more general concept than a function. While a function requires each input to have exactly one output, a relation allows an input to have many outputs, or even no output.
- "Is a parent of" is a relation between people. One person can be a parent of multiple children.
- "Is greater than" is a relation between numbers (e.g.,
5 > 3).
3. Worked Example
Let's use Python to demonstrate set operations and a simple logical function.
Imagine you have two teams working on a project, and you want to know who is on both teams, who is on either team, and who is on Team A but not Team B.
# Define our sets (teams)
team_a = {"Alice", "Bob", "Charlie", "David"}
team_b = {"Charlie", "David", "Eve", "Frank"}
print(f"Team A: {team_a}")
print(f"Team B: {team_b}
")
# 1. Union: Who is on *either* Team A *or* Team B (or both)?
# All unique people involved across both teams
all_project_members = team_a.union(team_b)
print(f"All project members (Union): {all_project_members}")
# 2. Intersection: Who is on *both* Team A *and* Team B?
# People common to both teams
shared_members = team_a.intersection(team_b)
print(f"Shared members (Intersection): {shared_members}")
# 3. Difference: Who is on Team A *but not* Team B?
# People unique to Team A
only_on_team_a = team_a.difference(team_b)
print(f"Only on Team A (Difference): {only_on_team_a}
")
# Now, a function incorporating logic
def evaluate_project_status(member_count_a, member_count_b, deadline_approaching):
"""
Evaluates project status based on team sizes and deadline.
Returns True if urgent, False otherwise.
"""
# Logic: It's urgent if:
# 1. Either team is very small OR
# 2. The deadline is approaching AND combined team is not large
is_team_small = (member_count_a < 3) or (member_count_b < 3)
is_combined_team_not_large = (member_count_a + member_count_b < 6)
# Combining conditions with AND and OR logic
is_urgent = is_team_small or (deadline_approaching and is_combined_team_not_large)
return is_urgent
# Test the logic function
print("Project Status Evaluation:")
print(f"Status (Team A:3, Team B:3, Deadline:False): {evaluate_project_status(3, 3, False)}") # Should be False
print(f"Status (Team A:2, Team B:4, Deadline:False): {evaluate_project_status(2, 4, False)}") # is_team_small is True -> True
print(f"Status (Team A: Charlie, David, Eve; Team B: Eve, Frank - 3,2, True): {evaluate_project_status(3, 2, True)}") # is_team_small is True -> True
print(f"Status (Team A:3, Team B:2, Deadline:False): {evaluate_project_status(3, 2, False)}") # is_team_small is True -> True
print(f"Status (Team A:3, Team B:2, Deadline:True): {evaluate_project_status(3, 2, True)}") # is_team_small is True -> True
print(f"Status (Team A:5, Team B:0, Deadline:True): {evaluate_project_status(5, 0, True)}") # is_team_small is True -> True
print(f"Status (Team A:4, Team B:1, Deadline:True): {evaluate_project_status(4, 1, True)}") # is_team_small is True -> True
Output of the Python code:
Team A: {'Charlie', 'Alice', 'David', 'Bob'}
Team B: {'Charlie', 'Eve', 'David', 'Frank'}
All project members (Union): {'Alice', 'Bob', 'Frank', 'Eve', 'David', 'Charlie'}
Shared members (Intersection): {'Charlie', 'David'}
Only on Team A (Difference): {'Alice', 'Bob'}
Project Status Evaluation:
Status (Team A:3, Team B:3, Deadline:False): False
Status (Team A:2, Team B:4, Deadline:False): True
Status (Team A: Charlie, David, Eve; Team B: Eve, Frank - 3,2, True): True
Status (Team A:3, Team B:2, Deadline:False): True
Status (Team A:3, Team B:2, Deadline:True): True
Status (Team A:5, Team B:0, Deadline:True): True
Status (Team A:4, Team B:1, Deadline:True): True
4. Key Takeaways
- Sets are unordered collections of unique items, useful for managing distinct entities.
- Functions map each input to exactly one output, creating predictable transformations.
- Logic (Boolean algebra) uses True/False values and operators (
AND,OR,NOT) to make decisions. - Relations describe connections between elements, often more general than functions.
- These concepts provide a precise language for describing computational problems and solutions.
- Understanding these mathematical foundations improves your ability to design robust algorithms and data structures.
- Many programming language features (like Python's
settype orif/elsestatements) directly implement these mathematical ideas.
Common Mistakes to Avoid:
* Confusing sets with lists: Remember sets are unordered and have no duplicate elements, unlike lists.
* Assuming a relation is always a function: A function is a specific type of relation.
* Misunderstanding the order of operations in logical expressions (e.g., AND often evaluates before OR).
* Forgetting that computers use binary logic (True/False, 1/0) for all decisions.
5. Now Try It
Pick a simple real-world
Frequently asked about Foundational Mathematical Concepts
Get the full Foundations of Computing curriculum
Clone the complete plan to your dashboard for unlimited AI-generated notes, practice quizzes, and a personalised revision schedule.
Create Free Account