diff --git a/Computer_Architecture/Hardware_abstraction_and_modularity.md b/Computer_Architecture/Hardware_abstraction_and_modularity.md
index 7201ce6..33eed68 100644
--- a/Computer_Architecture/Hardware_abstraction_and_modularity.md
+++ b/Computer_Architecture/Hardware_abstraction_and_modularity.md
@@ -6,3 +6,22 @@ tags: [abstraction, modules]
---
# Hardware abstraction and modularity
+
+In computer architecture we deal with complexity by breaking the system into **modules**. For each module we distinguish **_abstraction_** from **_implementation_**.
+
+
+ - abstraction
+ - what the module does
+ - implementation
+ - how it does it
+
+
+When using a module as a building block you are to focus exclusively on the module's abstraction, ignoring completely its implementation details.
+
+> The abstraction-implementation paradigm helps developers manage complexity and maintain sanity: by dividing an overwhelming system into well-defined modules we create manageable chunks of implementation work and localize error detection and correction.
+
+[N.Nisan, S.Schoken. 2021. **The Elements of Computing Systems** (Second Edition)]
+
+The design of the diagram below emphasises the role of abstraction and modularity in the movement from transistors to chips:
+
+
diff --git a/Logic/Propositional_logic/Boolean_algebra.md b/Logic/Propositional_logic/Boolean_algebra.md
new file mode 100644
index 0000000..f1e9383
--- /dev/null
+++ b/Logic/Propositional_logic/Boolean_algebra.md
@@ -0,0 +1,22 @@
+---
+categories:
+ - Logic
+tags: [propositional-logic, algebra]
+---
+
+# Boolean algebra
+
+Many of the laws that obtain in the mathematical realm of algebra also obtain for Boolean expressions.
+
+## The Commutative Law
+
+$$
+ x \land y = y \land x \\
+$$
+
+$$
+
+ x \lor y = y \lor x
+$$
+
+## The Associative Law
diff --git a/Logic/Propositional_logic/Boolean_functions.md b/Logic/Propositional_logic/Boolean_functions.md
index 1a77adf..5dd48b8 100644
--- a/Logic/Propositional_logic/Boolean_functions.md
+++ b/Logic/Propositional_logic/Boolean_functions.md
@@ -1,7 +1,7 @@
---
categories:
- - Mathematics
-tags: [logic]
+ - Logic
+tags: [logic, propositional-logic]
---
# Boolean functions
@@ -14,9 +14,9 @@ $$
Here is a work through where $f(1, 0, 1)$:
-- The first disjunction : $ \lnot(x) \land z $ is false because $x$ is 1 and $z$ is 1
-- The second disjunction: $x \land y$ is true because $x$ is 1 and $y$ is 1
-- The overall function returns true because the main connective is disjunction and one of the disjuncts (the second) evaluates to 1. Thus the output is 1.
+- The first disjunction : $ \lnot(x) \land z $ is false because $x$ is 1 and $z$ is 0
+- The second disjunction: $x \land y$ is false because $x$ is 1 and $y$ is 1
+- The overall function returns false because the main connective is disjunction and both of its disjuncts are false
We can compute all possible outputs of the function by constructing a [truth-table](/Logic/Propositional_logic/Truth-tables.md) with each possible variable as the truth conditions and the output of the function as the truth value: