diff --git a/Algorithms/Algorithmic_complexity.md b/Algorithms/Algorithmic_complexity.md
index fd3ee2c..3766540 100644
--- a/Algorithms/Algorithmic_complexity.md
+++ b/Algorithms/Algorithmic_complexity.md
@@ -2,7 +2,7 @@
tags: [algorithms]
---
-
+
_Summary of the main classes of algorithmic complexity_
## Distinguish algorithms from programs
@@ -65,7 +65,7 @@ If we say that it takes 1ms for two integers to be summed, this gives us the fol
| 4 | 4 |
| 5 | 5 |
-If we plotted this as a graph it is clear that this is equivalent to a linear distribution:
+If we plotted this as a graph it is clear that this is equivalent to a linear distribution:
Algorithms which display this distribution are therefore called **linear algorithms**.
@@ -134,7 +134,7 @@ If the input had length 4, the runtime would be 16 or 4x4. For every execution o
This is not a linear algorithm because as n grows the runtime increases as a factor of it. Therefore the runtime is not growing proportional to the size of the input, it is growing proportional to the size of the input squared.
Graphically this is represented with a curving lines as follows:
-
+
We can clearly see that as n grows, the runtime gets steeper and more pronounced,
@@ -176,7 +176,7 @@ For example, with $\log 25$:
Back to algorithms: $O(\log n)$ is a really good complexity to have. It is close to O(1) and in between O(1) and O(n). Represented graphically, it starts of with a slight increase in runtime but then quickly levels off:
-
+
Many sorting algorithms run in log n time, as does recursion.
@@ -227,7 +227,7 @@ When seeking to simplify algorithms to their most general level of complexity, w
With this in mind we can break down the `findSum` function like so:
-
+
This gives us:
diff --git a/Computer_Architecture/Bus.md b/Computer_Architecture/Bus.md
index 47001bb..00898d5 100644
--- a/Computer_Architecture/Bus.md
+++ b/Computer_Architecture/Bus.md
@@ -45,8 +45,8 @@ There is a distinction between buses that use serial and buses that use parallel
Serial Transmission is the type of transmission in which a single communication link is used to transfer the data from an end to another. On other hand Parallel Transmission is the transmission in which multiple parallel links are used that transmit each bit of data simultaneously.
-
-
+
+
- Serial buses are cheaper to implement than parallel buses
- Serial buses operate at greater [latency](/Computer_Architecture/Bus.md#latency) than parallel buses
diff --git a/Computer_Architecture/CPU/CPU_architecture.md b/Computer_Architecture/CPU/CPU_architecture.md
index 11b9f69..cab81fb 100644
--- a/Computer_Architecture/CPU/CPU_architecture.md
+++ b/Computer_Architecture/CPU/CPU_architecture.md
@@ -42,7 +42,7 @@ This is the heart of the CPU; all the other components on the CPU chip are appen
Below is a schematic of a series of logical circuits within the CPU core:
-
+
### Processor cores
@@ -74,6 +74,6 @@ Each "cycle" is the execution of a process that commences once the [kernel](/Ope
Hertz was the scientist who detected electromagentic waves and more broadly in science, we use Hertz to measure the frequency of electromatic wave cycles in a signal.
-
+
As the diagram above shows, a cycle is equal to one ascending and one descending crest. The more cycles per time unit, the greater the Hertz. We see the Hz increase as the number of cycles increases over time.
diff --git a/Computer_Architecture/CPU/The_Little_Man_computer.md b/Computer_Architecture/CPU/The_Little_Man_computer.md
index 02922b8..a17c93e 100644
--- a/Computer_Architecture/CPU/The_Little_Man_computer.md
+++ b/Computer_Architecture/CPU/The_Little_Man_computer.md
@@ -10,7 +10,7 @@ tags: [CPU, processors]
The [Little Man Computer](https://peterhigginson.co.uk/lmc/) is a simplified computer that works on Von Neuman principles. It has all the CPU components we have detailed above. It is programmed in machine code but for simplicity it uses the denary rather than the binary number system.
-
+
On the left is the instruction set. Each number constitutes and execution routine and the `xx` stand for the address in RAM that the execution will work on.
diff --git a/Computer_Architecture/Hardware_Description_Language.md b/Computer_Architecture/Hardware_Description_Language.md
index 5d0603d..b3cb55a 100644
--- a/Computer_Architecture/Hardware_Description_Language.md
+++ b/Computer_Architecture/Hardware_Description_Language.md
@@ -23,7 +23,7 @@ We won't use an actual HDL language, instead we will use a simplified toy langua
We will create an HDL program for an XOR gate that is implemented through the following arrangement of NOT, AND, and OR gates:
-
+
### HDL file (`Xor.hdl`):
diff --git a/Computer_Architecture/Hardware_abstraction_and_modularity.md b/Computer_Architecture/Hardware_abstraction_and_modularity.md
index d54d25b..81fd361 100644
--- a/Computer_Architecture/Hardware_abstraction_and_modularity.md
+++ b/Computer_Architecture/Hardware_abstraction_and_modularity.md
@@ -24,4 +24,4 @@ When using a module as a building block you are to focus exclusively on the modu
The design of the diagram below emphasises the role of abstraction and modularity in the movement from transistors to chips:
-
+
diff --git a/Computer_Architecture/Memory/Memory.md b/Computer_Architecture/Memory/Memory.md
index 900b44a..1fc13f4 100644
--- a/Computer_Architecture/Memory/Memory.md
+++ b/Computer_Architecture/Memory/Memory.md
@@ -43,7 +43,7 @@ The table below details the relative speeds of the different types of memory and
The diagram below compares the different forms of memory within a computing device in terms of speed, monetary cost and capacity:
-
+
## References
diff --git a/Computer_Architecture/Memory/Role_of_memory_in_computation.md b/Computer_Architecture/Memory/Role_of_memory_in_computation.md
index 5dc7388..51bbd60 100644
--- a/Computer_Architecture/Memory/Role_of_memory_in_computation.md
+++ b/Computer_Architecture/Memory/Role_of_memory_in_computation.md
@@ -15,7 +15,7 @@ The following steps outline the way in which memory interacts with the processor
> This is a simplified account; it is not the case that only single requests are passed back and forth. This would be inefficient and time-wasting. The kernel sends to the CPU not just the first instruction in the requested file but also a number of instructions that immediately follow it.
-
+
Every part of the above process - the journey accross the bus, the lookup in the controller, the operations on the DRAM, the journey back accross the bus - takes muliple CPU clock cycles.
diff --git a/Data_Structures/Queue.md b/Data_Structures/Queue.md
index c8e1cf0..3df2f75 100644
--- a/Data_Structures/Queue.md
+++ b/Data_Structures/Queue.md
@@ -8,7 +8,7 @@ tags:
_Visualization of the queue data structure_
-
+
## A queue is a sequential data structure and most similar to a stack
diff --git a/Data_Structures/Recursion.md b/Data_Structures/Recursion.md
index ee34ce4..6cdac93 100644
--- a/Data_Structures/Recursion.md
+++ b/Data_Structures/Recursion.md
@@ -13,7 +13,7 @@ More generally recursion means when a thing is defined in terms of itself. There
## Schema
The general structure of a recursive function is as follows:
-
+
## Why use recursive functions?
@@ -111,4 +111,4 @@ if (num > 0) {
}
```
-
+
diff --git a/Data_Structures/Stacks.md b/Data_Structures/Stacks.md
index 1805469..82169ac 100644
--- a/Data_Structures/Stacks.md
+++ b/Data_Structures/Stacks.md
@@ -6,10 +6,10 @@ tags:
---
_A stack visualised vertically_
-
+
_A stack visualised horizontally_
-
+
## A stack is a linear data structure that observes LIFO
diff --git a/Databases/GraphQL/Apollo/Apollo_Server.md b/Databases/GraphQL/Apollo/Apollo_Server.md
index 84f130c..8bb1ea1 100644
--- a/Databases/GraphQL/Apollo/Apollo_Server.md
+++ b/Databases/GraphQL/Apollo/Apollo_Server.md
@@ -72,7 +72,7 @@ server.listen().then(() => {
When we access the local URL we are able to access the Apollo server using the Explorer GUI. This automatically loads our schema and is basically a more fancy version of GraphiQL:
-
+
It makes it easy to read descriptions of the dataypes and to construct queries by clicking to insert fields.
diff --git a/Databases/GraphQL/Journey_of_GraphQL_query.md b/Databases/GraphQL/Journey_of_GraphQL_query.md
index 64c1122..2ddd1a3 100644
--- a/Databases/GraphQL/Journey_of_GraphQL_query.md
+++ b/Databases/GraphQL/Journey_of_GraphQL_query.md
@@ -6,4 +6,4 @@ tags: [graphql]
# The journey of a GraphQL query
-
+
diff --git a/Databases/GraphQL/Key_characteristics_of_GraphQL.md b/Databases/GraphQL/Key_characteristics_of_GraphQL.md
index 670c688..838a780 100644
--- a/Databases/GraphQL/Key_characteristics_of_GraphQL.md
+++ b/Databases/GraphQL/Key_characteristics_of_GraphQL.md
@@ -26,7 +26,7 @@ From the point of view of the backend, GraphQL is a **runtime** that provides a
Client requests are sent over HTTPS and the data is typically returned in the form of JSON:
-
+
## Implementation overview
@@ -83,15 +83,15 @@ With a REST API if you require multiple resources you have to make multiple requ
The REST scenario:
-
+
The GraphQL scenario:
-
+
### Abstraction of multiple services
-
+
### Stops overfetching
diff --git a/Databases/MongoDB/Adding_documents_to_a_collection.md b/Databases/MongoDB/Adding_documents_to_a_collection.md
index 5f104b1..d560cc9 100644
--- a/Databases/MongoDB/Adding_documents_to_a_collection.md
+++ b/Databases/MongoDB/Adding_documents_to_a_collection.md
@@ -44,4 +44,4 @@ When we run this, we call the `save` method on the Mongoose schema. We will then
This will also be reflected in Compass:
-
+
diff --git a/Databases/MongoDB/Create_database.md b/Databases/MongoDB/Create_database.md
index 1c6cc92..0cb16ff 100644
--- a/Databases/MongoDB/Create_database.md
+++ b/Databases/MongoDB/Create_database.md
@@ -25,4 +25,4 @@ This will run continuously in the terminal and should say somewhere that it is w
_Compass_ is a graphical interface for viewing and interacting with the data in your Mongo database. It will automatically load to the default Mongo port: `27017`.
-
+
diff --git a/Databases/MongoDB/Creating_a_schema_and_model.md b/Databases/MongoDB/Creating_a_schema_and_model.md
index ad94983..d45be46 100644
--- a/Databases/MongoDB/Creating_a_schema_and_model.md
+++ b/Databases/MongoDB/Creating_a_schema_and_model.md
@@ -61,10 +61,10 @@ const course = new Course({
});
```
-
+
## Outcome
Having created a database, connected to it with Mongoose, and created a model we will see our collection reflected in Compass:
-
+
diff --git a/Databases/MongoDB/Introduction.md b/Databases/MongoDB/Introduction.md
index f701ea4..2f693a7 100644
--- a/Databases/MongoDB/Introduction.md
+++ b/Databases/MongoDB/Introduction.md
@@ -16,4 +16,4 @@ Although Mongo is not a relational database it has a structure that we can under
A document is a container comprising key-value pairs in the manner of an object.
-
+
diff --git a/Databases/Relational_Databases/Relational_database_architecture.md b/Databases/Relational_Databases/Relational_database_architecture.md
index 1976c52..ba9ca12 100644
--- a/Databases/Relational_Databases/Relational_database_architecture.md
+++ b/Databases/Relational_Databases/Relational_database_architecture.md
@@ -8,7 +8,7 @@ tags: [relational-database]
Tables, fields and records are the basic building blocks of databases
-
+
## Table
diff --git a/Databases/SQL/Joins_in_SQL.md b/Databases/SQL/Joins_in_SQL.md
index 3cdeb83..16db1fd 100644
--- a/Databases/SQL/Joins_in_SQL.md
+++ b/Databases/SQL/Joins_in_SQL.md
@@ -76,7 +76,7 @@ ON model.model_id = sales.model_id; -- Specify the match criteria
We can represent the logical relationship that obtains between the `sales` and `model` tables as follows:
-
+
## Outer joins
@@ -118,7 +118,7 @@ In the context of our dataset, in the _sales_ database we have a row where there
The logical relationship sustained between `sales` and `model` by a left inner join is represented in the following diagram:
-
+
#### Implementation
@@ -153,7 +153,7 @@ In the context of our dataset, in the _model_ database we have a row where there
The logical relationship sustained between `sales` and `model` by a right inner join is represented in the following diagram:
-
+
#### Implementation
@@ -191,7 +191,7 @@ In the context of our dataset it would result in the following table being gener
Represented by the following diagram:
-
+
#### Implementation
diff --git a/Electronics_and_Hardware/Analogue_and_digital.md b/Electronics_and_Hardware/Analogue_and_digital.md
index 41fec29..27f18d2 100644
--- a/Electronics_and_Hardware/Analogue_and_digital.md
+++ b/Electronics_and_Hardware/Analogue_and_digital.md
@@ -9,7 +9,7 @@ tags: [analogue, digital]
Analogue and digital are paradigms for recording information, specifically information about an object or state that obtains in the world.
-
+
## Analogue
diff --git a/Electronics_and_Hardware/Analogue_circuits/Cells_and_batteries.md b/Electronics_and_Hardware/Analogue_circuits/Cells_and_batteries.md
index 6ab3a81..bdf3833 100644
--- a/Electronics_and_Hardware/Analogue_circuits/Cells_and_batteries.md
+++ b/Electronics_and_Hardware/Analogue_circuits/Cells_and_batteries.md
@@ -24,7 +24,7 @@ Cells and batteries can be connected to each other in electrical ciruits to incr
The table below summarises the relative differences:
-
+
### Series connections
@@ -43,11 +43,11 @@ Thus series connections increase voltage but keep current constant.
_Series battery connection:_
-
+
_Can be represented in a circuit diagram in one of the following two ways: as a series of cells or as a single battery:_
-
+
In the case of **series opposing**, negative terminals are connected to each other and positive terminals are connected to each other in a series. This doesn't have many applications.
@@ -67,11 +67,11 @@ $$
_Parallel battery connection:_
-
+
_Parallel battery circuit diagram:_
-
+
### Series-parrallel
diff --git a/Electronics_and_Hardware/Analogue_circuits/Circuits.md b/Electronics_and_Hardware/Analogue_circuits/Circuits.md
index d9b251b..2a53a79 100644
--- a/Electronics_and_Hardware/Analogue_circuits/Circuits.md
+++ b/Electronics_and_Hardware/Analogue_circuits/Circuits.md
@@ -10,7 +10,7 @@ An electrical circuit is a set of electrical components connected in such a way
Below is a basic circuit representing a 9-volt [battery](/Electronics_and_Hardware/Analogue_circuits/Cells_and_batteries.md#cells-and-batteries) with a 10,000$\Omega$ [resistor](/Electronics_and_Hardware/Analogue_circuits/Resistance.md) attached accross its terminals. Through the application of [Ohm's Law](/Electronics_and_Hardware/Physics_of_electricity/Ohms_Law.md) we can determine that the maximum current will be 0.9 miliamps.
-
+
## Open and short circuits
@@ -24,4 +24,4 @@ Sometimes circuits can be represented in a vertical manner rather than in an act
The circuit below is functionally identical to the previous circuit but represented vertically:
-
+
diff --git a/Electronics_and_Hardware/Analogue_circuits/Current.md b/Electronics_and_Hardware/Analogue_circuits/Current.md
index 5452c1b..4547806 100644
--- a/Electronics_and_Hardware/Analogue_circuits/Current.md
+++ b/Electronics_and_Hardware/Analogue_circuits/Current.md
@@ -22,7 +22,7 @@ When the terminals are connected to each other via a conductor (e.g. copper wire
_The diagram below illustrates the flow of current where the circles are electrons knocking into each other and passing current:_
-
+
> Electrons travel very slowly through a conductor. This is in contrast to their intrinsic motion which of course equal to the speed of light (186, 000 miles per second).
diff --git a/Electronics_and_Hardware/Analogue_circuits/Ground.md b/Electronics_and_Hardware/Analogue_circuits/Ground.md
index 7db5777..aa8954b 100644
--- a/Electronics_and_Hardware/Analogue_circuits/Ground.md
+++ b/Electronics_and_Hardware/Analogue_circuits/Ground.md
@@ -17,4 +17,4 @@ In circuit diagrams with simple DC current, ground is taken to be the negative t
The symbol for ground in circuit diagrams:
-
+
diff --git a/Electronics_and_Hardware/Analogue_circuits/LEDs.md b/Electronics_and_Hardware/Analogue_circuits/LEDs.md
index fba6a1e..6027624 100644
--- a/Electronics_and_Hardware/Analogue_circuits/LEDs.md
+++ b/Electronics_and_Hardware/Analogue_circuits/LEDs.md
@@ -8,10 +8,10 @@ tags: [electricity, electrical-circuits]
LED' stands for **Light Emitting Diode**, a [circuit]() component that emits light. The symbol for an LED is displayed below:
-
+
A **diode** is a special kind of component that only permits current to flow through it in one direction. To achieve this it has very low resistance in one direction to allow current flow and high resistance in the other direction to impede current flow. This feature of diodes is clearly represented in the generic diode circuit symbol:
-
+
An LED diode lights up when the right amount of current flows through it. A standard LED has a maximum current of 20mA. An appropriate [resistor](/Electronics_and_Hardware/Analogue_circuits/Resistance.md#resistors) must therefore be added to the circuit to ensure the current doesn't exeedd this amount.
diff --git a/Electronics_and_Hardware/Analogue_circuits/Voltage.md b/Electronics_and_Hardware/Analogue_circuits/Voltage.md
index 44f50da..2abd863 100644
--- a/Electronics_and_Hardware/Analogue_circuits/Voltage.md
+++ b/Electronics_and_Hardware/Analogue_circuits/Voltage.md
@@ -60,7 +60,7 @@ The relationship between voltage rise and voltage drop is expressed in Kirchoff'
The application of the Law is illustrated in the following diagram:
-
+
The explanation for the voltage drop at the positions $V^{A}$ and $V^{D}$ are obvious enough: they are at the beginning and end of the loop so are equal to the maximal voltage rise and minimal voltage drop, respectively.
diff --git a/Electronics_and_Hardware/Binary/Binary_arithmetic.md b/Electronics_and_Hardware/Binary/Binary_arithmetic.md
index 670413e..6ed6fa1 100644
--- a/Electronics_and_Hardware/Binary/Binary_arithmetic.md
+++ b/Electronics_and_Hardware/Binary/Binary_arithmetic.md
@@ -33,7 +33,7 @@ Let's break down each column from the right:
### More examples to practise with
-
+
## Binary multiplication
@@ -64,10 +64,10 @@ When we multiply binary numbers in columns we multiply each of the top numbers b
An important difference is that when we move along the bottom row from the $2^0$, to $2^2$, to $2^4$ etc we must put a zero in the preceding column as a place holder. The sequence is shown below:
-
+
-
+
-
+
-
+
diff --git a/Electronics_and_Hardware/Binary/Binary_colour_encoding.md b/Electronics_and_Hardware/Binary/Binary_colour_encoding.md
index 50c5077..6f76b56 100644
--- a/Electronics_and_Hardware/Binary/Binary_colour_encoding.md
+++ b/Electronics_and_Hardware/Binary/Binary_colour_encoding.md
@@ -16,7 +16,7 @@ We can start with a limited palette: greyscale. Here there is black and white an
In decimal, 0 is equal to black (zero light intensity) and 255 is equal to white (full light intensity). Some examples of this (including binary and hex representations are below):
-
+
### Colour encoding
@@ -28,12 +28,12 @@ Some examples below
Red is represented in RGB with all 8 red bits to set to 1 and the remaining 16 bits for the other two colours set to 0.
-
+
#### Yellow
Yellow is represented in RGB with both red and blue set to 1 and the remaining 8 green bits set to ):
-
+
## Binary encoding of images
diff --git a/Electronics_and_Hardware/Binary/Binary_number_system.md b/Electronics_and_Hardware/Binary/Binary_number_system.md
index 94b4856..d55d53d 100644
--- a/Electronics_and_Hardware/Binary/Binary_number_system.md
+++ b/Electronics_and_Hardware/Binary/Binary_number_system.md
@@ -87,11 +87,11 @@ If we have before us the binary place values ($1, 2, 4, 8$). We know that 6 is e
More clearly:
-
+
And for comparison:
-
+
Or we can express the binary as:
@@ -105,4 +105,4 @@ $$ 2^1 + 2^2 $$
Let's convert 23 into binary:
-
+
diff --git a/Electronics_and_Hardware/Binary/Hexadecimal_number_system.md b/Electronics_and_Hardware/Binary/Hexadecimal_number_system.md
index f22d13a..8fae116 100644
--- a/Electronics_and_Hardware/Binary/Hexadecimal_number_system.md
+++ b/Electronics_and_Hardware/Binary/Hexadecimal_number_system.md
@@ -103,6 +103,6 @@ $$
= 15
$$
-
+
> Every four bits (or half byte) in binary corresponds to one symbol in hexadecimal. Therefore **a byte can be easily represented with two hexadecimal symbols, a 16-bit number can be represented with four hex symbols, a 32-bit number can represented with eight hex symbols and so on.**
diff --git a/Electronics_and_Hardware/Binary/Signed_and_unsigned_numbers.md b/Electronics_and_Hardware/Binary/Signed_and_unsigned_numbers.md
index 9e7dcea..f83579d 100644
--- a/Electronics_and_Hardware/Binary/Signed_and_unsigned_numbers.md
+++ b/Electronics_and_Hardware/Binary/Signed_and_unsigned_numbers.md
@@ -19,11 +19,11 @@ For example the two's complement of $0101$ (binary 5) is $1011$. There is a simp
1. Take the unsigned number, and flip the bits. In other words: invert the values, so $0$ becomes $1$ and $1$ becomes $0$.
2. Add one
-
+
To translate a signed number to an unsigned number you flip them back and still add one:
-
+
### Advantages
@@ -66,7 +66,7 @@ Thus for a 4-bit number:
Then if we add the decimal equivalents of the place value together, we get our signed number. So in the case of $-3$:
-
+
## Considerations
diff --git a/Electronics_and_Hardware/Binary/Why_computers_use_binary.md b/Electronics_and_Hardware/Binary/Why_computers_use_binary.md
index 2dcbcaf..5bddfa4 100644
--- a/Electronics_and_Hardware/Binary/Why_computers_use_binary.md
+++ b/Electronics_and_Hardware/Binary/Why_computers_use_binary.md
@@ -13,13 +13,13 @@ tags: [binary, bits]
The reason is straight forward: it is the simplest way on the level of pure engineering of representing numerical and logical values; both of which are the basic foundations of programming. An electronic circuit or transistor only needs to represent two states: on (1) and off (0) which corresponds to the switch on an electrical circuit.
A single circuit representing the binary values of 1 and 0:
-
+
It would be much more complicated to have to represent ten different states under the decimal number system, although denary computers do exist.
If we want more digits, we just need to add in more circuits, and we can represent as large a binary number as we need. We just need one switch for every digit we want to represent. The switches used in modern computers are so cheap and so small that billions can be fitted on a single circuit board.
-
+
When we use the term 'switch' we actually mean the transistor components of a circuit. We don't need to know the physical details at this level but we can say that a transistor turns a current on and off. They can also be used to amplify the current.
diff --git a/Electronics_and_Hardware/Digital_circuits/Clock_signals.md b/Electronics_and_Hardware/Digital_circuits/Clock_signals.md
index fa3758f..e0b48dc 100644
--- a/Electronics_and_Hardware/Digital_circuits/Clock_signals.md
+++ b/Electronics_and_Hardware/Digital_circuits/Clock_signals.md
@@ -20,7 +20,7 @@ A single iteration of the volatage rising and falling is a **pulse**. A complete
The diagram below shows a pulse cycle of 2Hz.
-
+
## Linking components to the clock
diff --git a/Electronics_and_Hardware/Digital_circuits/Creating_memory_with_NAND.md b/Electronics_and_Hardware/Digital_circuits/Creating_memory_with_NAND.md
index 59faaba..c6d9670 100644
--- a/Electronics_and_Hardware/Digital_circuits/Creating_memory_with_NAND.md
+++ b/Electronics_and_Hardware/Digital_circuits/Creating_memory_with_NAND.md
@@ -11,7 +11,7 @@ tags: [logic-gates, binary, memory]
The [logic circuit](/Electronics_and_Hardware/Digital_circuits/Digital_circuits.md) below demonstrates how memory can be created using [NAND](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md#nand-gate) gates. A single bit is stored in memory.
-
+
Interactive version of circuit:
@@ -35,7 +35,7 @@ Interactive version of circuit:
> Upshot: With **S** `ON`, output is the same as input
-
+
### Second state: both S and I `ON`
@@ -48,7 +48,7 @@ Interactive version of circuit:
> Upshot: With **S** on, the output is again the same as the input
-
+
> So far we have seen that when **S** is `ON` you can change **I** on and off and **O** will change with it.
@@ -60,4 +60,4 @@ The specific reason for this is that, if **S** is `OFF`, both **A** and **B** ar
This is illustrated in the diagram below. The space occupied by **A** and **B** remains on (note it is illuminated) regardless of the state of **I**.
-
+
diff --git a/Electronics_and_Hardware/Digital_circuits/Flip_flops.md b/Electronics_and_Hardware/Digital_circuits/Flip_flops.md
index 260cc12..02d053a 100644
--- a/Electronics_and_Hardware/Digital_circuits/Flip_flops.md
+++ b/Electronics_and_Hardware/Digital_circuits/Flip_flops.md
@@ -28,7 +28,7 @@ The possible state changes for the JK Flip-Flop are detailed below:
A JK Flip-Flop can execute on either the positive or negative pulse. Below are the diagrams for a rising and falling pulse respectively:
-
+
@@ -43,7 +43,7 @@ Thus the state table for the T Flip-Flop is:
| 0 | Pulse | Maintain previous value | Hold |
| 0 | Pulse | Inverse of previous value | Toggle |
-
+
diff --git a/Electronics_and_Hardware/Digital_circuits/Four_bit_adder.md b/Electronics_and_Hardware/Digital_circuits/Four_bit_adder.md
index 003a210..17c90ee 100644
--- a/Electronics_and_Hardware/Digital_circuits/Four_bit_adder.md
+++ b/Electronics_and_Hardware/Digital_circuits/Four_bit_adder.md
@@ -22,7 +22,7 @@ We will achieve this by using three full adders and one half adder, moving from
Let's walk through the process:
-
+
1. HA receives the bits $0$ and $1$ as inputs. It outputs $1$ as the sum bit and $0$ as the carry-out.
2. FA1 receives $0$ as the carry-in bit plus $1$ and $1$ as its input. This means it has the following calculation to execute: $1 + 1 + 0$. This gives $0$ as the sum bit and $1$ as the carry-out bit.
diff --git a/Electronics_and_Hardware/Digital_circuits/Half_adder_and_full_adder.md b/Electronics_and_Hardware/Digital_circuits/Half_adder_and_full_adder.md
index 1a1dd67..80e7670 100644
--- a/Electronics_and_Hardware/Digital_circuits/Half_adder_and_full_adder.md
+++ b/Electronics_and_Hardware/Digital_circuits/Half_adder_and_full_adder.md
@@ -50,7 +50,7 @@ The half adder receives two bits (A and B) which are to be added together. It ou
The diagram below shows the circuit representation of a half-adder and an example calculation. This calculation matches the ones column of the earlier binary addition example: $0011 + 0010$.
-
+
### Implementation with logic gates
@@ -88,7 +88,7 @@ And the carry-out bit replicates the truth conditions of [AND](/Electronics_and_
It is therefore possible to implement a half-adder with just these two logic gates:
-
+
The digital circuit above has the same inputs and outputs as the half adder diagram above.
@@ -104,7 +104,7 @@ The full adder takes in three inputs and has two outputs. It is identical to the
| ---------------------------- | ----------------------------- | ------------------------ | ---------------------- | ---------------------------- |
| The first number to be added | The second number to be added | The incoming carried bit | The sum bit (A+B+C_in) | The carry-out bit (A+B+C_in) |
-
+
The diagram above is equivalent to the calculation taking place in the fours column. It has received a carry from the twos column ($1 + 1$ results in $1$ as a carry) and then adds this together with its own inputs ($0$ and $0$).
diff --git a/Electronics_and_Hardware/Digital_circuits/Integrated_circuits.md b/Electronics_and_Hardware/Digital_circuits/Integrated_circuits.md
index 4b12b35..4c6e7c2 100644
--- a/Electronics_and_Hardware/Digital_circuits/Integrated_circuits.md
+++ b/Electronics_and_Hardware/Digital_circuits/Integrated_circuits.md
@@ -16,7 +16,7 @@ The type we will look at are called **dual in-line packages** (DIPs). They are r
_An integrated circuit and its use on a breadboard:_
-
-
+
+
// TODO: Add diagrams of different IC gate types
diff --git a/Electronics_and_Hardware/Digital_circuits/Latches.md b/Electronics_and_Hardware/Digital_circuits/Latches.md
index d77f841..ec27d5d 100644
--- a/Electronics_and_Hardware/Digital_circuits/Latches.md
+++ b/Electronics_and_Hardware/Digital_circuits/Latches.md
@@ -40,7 +40,7 @@ The most succinct account of a latch:
_The representation of an SR Latch in a digital circuit diagram_:
-
+
## Creating a latch circuit
@@ -50,7 +50,7 @@ The two gates are in a **cross-coupled configuration**. This basically means tha
The circuit is created as follows:
-
+
Interactive version:
diff --git a/Electronics_and_Hardware/Digital_circuits/Logic_gates.md b/Electronics_and_Hardware/Digital_circuits/Logic_gates.md
index ccc4292..c5f2a11 100644
--- a/Electronics_and_Hardware/Digital_circuits/Logic_gates.md
+++ b/Electronics_and_Hardware/Digital_circuits/Logic_gates.md
@@ -42,7 +42,7 @@ Whereas this diagram presents the implementation of the gate: it shows the speci
### Symbol
-
+
### Truth conditions
@@ -61,7 +61,7 @@ Whereas this diagram presents the implementation of the gate: it shows the speci
### Symbol
-
+
### Truth conditions
@@ -82,7 +82,7 @@ Whereas this diagram presents the implementation of the gate: it shows the speci
### Symbol
-
+
### Truth conditions
@@ -105,7 +105,7 @@ NAND is a **universal logic gate**: equipped with just a NAND we can represent e
### Symbol
-
+
### Truth conditions
@@ -126,7 +126,7 @@ NAND is a **universal logic gate**: equipped with just a NAND we can represent e
### Symbol
-
+
### Truth conditions
@@ -147,7 +147,7 @@ NAND is a **universal logic gate**: equipped with just a NAND we can represent e
### Symbol
-
+
### Truth conditions
diff --git a/Electronics_and_Hardware/Digital_circuits/Three_bit_counter.md b/Electronics_and_Hardware/Digital_circuits/Three_bit_counter.md
index 65d2636..9b1e373 100644
--- a/Electronics_and_Hardware/Digital_circuits/Three_bit_counter.md
+++ b/Electronics_and_Hardware/Digital_circuits/Three_bit_counter.md
@@ -44,7 +44,7 @@ If we look at the pattern of each flip-flops' output we notice the following:
This means that to construct a circuit that displays this behaviour we just have to use a [T flip-flop](/Electronics_and_Hardware/Digital_circuits/Flip_flops.md#t-flip-flops) since the only state change we need is a single bit toggle three times that retains its value.
Using these pulse patterns we can construct a circuit as follows:
-
+
diff --git a/Electronics_and_Hardware/Digital_circuits/Transistors.md b/Electronics_and_Hardware/Digital_circuits/Transistors.md
index 2f350db..8df94c3 100644
--- a/Electronics_and_Hardware/Digital_circuits/Transistors.md
+++ b/Electronics_and_Hardware/Digital_circuits/Transistors.md
@@ -16,11 +16,11 @@ An electrical switch is inherently binary. When the switch is on, it acts like a
We can combine switches in a circuit to create analogs to logic gates.
-
+
In the example above a simple AND gate is implemented with switches. Each switch is a conjunct and the current only flows if both switches are on, closing the circuit.
-
+
In the example above is a circuit implementing an OR gate. The current flows just if one of the switches are on or if both of the switches are on but not if both switches are off.
@@ -32,15 +32,15 @@ Thus instead of switches, modern digital circuits use transistors, a special ele
There are different types of transistors but the simplest for the purposes of explanation are **bipolar junction transistors**.
-
+
A transistor works as follows: applying a small amount of current at the base allows a larger current to flow from the collector to the emitter. Relating this back to switches, applying current to the base is like turning the switch on. Removing this current is like turning the switch off.
The diagrams below show a transistor being used in a circuit to create 'on' and 'off' switch states alongside a switch based circuit.
-
+
-
+
- $V^{in}$ is the voltage that electrically controls the switch-as-transistor
- $V^{out}$ is the voltage we want to control: it will be high when the transistor is in the 'on' state and low otherwise
@@ -60,8 +60,8 @@ With the basic element of the transistor established, we can combine transistors
For example to create an [AND](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md#and-gate) gate we would have two voltage inputs going into two transistors that are connected in sequence. The two transistors create a continuous line going from the collector of one to the emitter of the other. If either voltage input is low then the voltage of the combined line is low (equivalent to the circuit being broken) and there is no current flowing.
-
+
Below, an [OR](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md#or-gate) has been constructed with transistors. If a voltage is applied to the base of either transistor, the current reaches the V-out terminal.
-
+
diff --git a/Electronics_and_Hardware/Motherboard.md b/Electronics_and_Hardware/Motherboard.md
index c980d50..b55bb54 100644
--- a/Electronics_and_Hardware/Motherboard.md
+++ b/Electronics_and_Hardware/Motherboard.md
@@ -7,7 +7,7 @@ tags: [motherboard]
# Motherboard
-
+
The motherboard is the foundation of a computer. It allocates power and allows communication to and between the [CPU](/Computer_Architecture/CPU/Von_Neumann_architecture.md), [RAM](/Computer_Architecture/Memory/Memory.md), [harddisk](/Operating_Systems/Disks/What_are_disks.md) and all other hardware components.
diff --git a/Electronics_and_Hardware/Physics_of_electricity/Electromagnetism.md b/Electronics_and_Hardware/Physics_of_electricity/Electromagnetism.md
index 7a2abe0..267f4d2 100644
--- a/Electronics_and_Hardware/Physics_of_electricity/Electromagnetism.md
+++ b/Electronics_and_Hardware/Physics_of_electricity/Electromagnetism.md
@@ -32,7 +32,7 @@ Magnetism, understood as the effect of a magnetic field, arises from the propert
As they spin they produce a **magnetic dipole**: the two poles noted above. We call this propensity of electrons the **intrinsic magnetic moment** of the electron. It is aggregates of these miniature magnetic behaviours that produce the overall magnetic property of the material.
-
+
In most materials, equal numbers of electrons spin in opposite directions. As a result, their magentic effects are cancelled out. However **in strongly magnetic materials an overall majority of electrons spin in one particular direction**. This breaks the equilibrium and produces the magnetic field.
@@ -72,7 +72,7 @@ The magnetic field and force is more complex than the electric field/force. Wher
This is illustrated below which shows the magnetic field operating at right angles to the flow of charge within a wire.
-
+
## The electromagnetic field
@@ -101,7 +101,7 @@ Maxwell's Equations describe how electromagnetic fields are generated and behave
Electromagnetic waves consist of rapidly changing electric and magnetic fields. They are emitted any time an electrically charged particle accelerates. These waves are generally referred to as light. However, more accurately, 'light' refers to the types of electromagnetic wave that we can see. Electromagnetic waves form a spectrum based on their frequency and wavelength. For example, 'radio waves' are low-frequency / long wavelength electromagnetic waves and gamma rays are high-frequency / short wavelength waves:
-
+
The image below shows the propagation of an electromagnetic wave through space. We can identify the core components as follows
@@ -109,7 +109,7 @@ The image below shows the propagation of an electromagnetic wave through space.
- The magenetic field is perpendicular to the vector of the electric field $E$ which propagates upward along the $y$ axis
- The directionality of both waves is forward along the $x$ axis
-
+
## Using magnetism to generate electricity
diff --git a/Electronics_and_Hardware/Physics_of_electricity/Electrons.md b/Electronics_and_Hardware/Physics_of_electricity/Electrons.md
index 70ab6f5..8295448 100644
--- a/Electronics_and_Hardware/Physics_of_electricity/Electrons.md
+++ b/Electronics_and_Hardware/Physics_of_electricity/Electrons.md
@@ -14,7 +14,7 @@ Each shell can accomodate a maximum number of electrons. The shells are designat
_The diagram below demonstrates shell naming conventions and the maximum number of electrons per shell._
-
+
## Valence
diff --git a/Electronics_and_Hardware/Physics_of_electricity/Matter_and_atoms.md b/Electronics_and_Hardware/Physics_of_electricity/Matter_and_atoms.md
index 75a90b8..7b60cf9 100644
--- a/Electronics_and_Hardware/Physics_of_electricity/Matter_and_atoms.md
+++ b/Electronics_and_Hardware/Physics_of_electricity/Matter_and_atoms.md
@@ -22,7 +22,7 @@ tags: [physics]
## Atomic particles
-
+
* There are three particles comprising atoms: **protons**, **neutrons** and **electrons**.
diff --git a/Linux/Monitoring_processes_and_resources.md b/Linux/Monitoring_processes_and_resources.md
index 26a7fc8..d22ae8f 100644
--- a/Linux/Monitoring_processes_and_resources.md
+++ b/Linux/Monitoring_processes_and_resources.md
@@ -16,7 +16,7 @@ We can use [ps](/Programming_Languages/Shell_Scripting/Processes.md) to list the
_Here I have pressed `u` to show only the processes associated with my user:_
-
+
### Main commands
@@ -96,7 +96,7 @@ procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
`lsof` stands for _list open files_. It lists opened files and the processes using them. Without modifiers it outputs a huge amount of data. The best way to use it is to execute it against a specific PID. For example the below output gives me some useful info about which files VS Code is using:
-
+
## System calls: `strace`
diff --git a/Linux/journald.md b/Linux/journald.md
index b6c6ea8..fffaa62 100644
--- a/Linux/journald.md
+++ b/Linux/journald.md
@@ -8,7 +8,7 @@ tags: [journaling, systemd, systems-programming]
`journald` is a program that comes as default with [systemd](/Linux/systemd.md). It is a service fror collecting and storing system-level log data. I keeps a track of all [kernel](/Operating_Systems/The_Kernel.md) processes. It is invaluable when tracing the source of problems and errors that may arise on the system level. It keeps a track of all kernal processes.
-
+
## `journalctl`
diff --git a/Linux/systemd.md b/Linux/systemd.md
index b3268c8..c622bb4 100644
--- a/Linux/systemd.md
+++ b/Linux/systemd.md
@@ -51,13 +51,13 @@ Units are managed via `systemd` configuration files.
System level `systemd` config files are located in the _system unit directory_ at `/usr/lib/systemd/system`. You shouldn't change or manipulate these files or attempt to add new config files here since they will be overwritten by the system.
-
+
_`systemd` global unit files_
Local definitions that relate to the specific user and where the user herself can define units are located in the _system configuration_ directory: `/etc/systemd/system`.
-
+
_`systemd` local unit files, specific to the currently logged-in user_
diff --git a/Logic/General_concepts/Logical_consistency.md b/Logic/General_concepts/Logical_consistency.md
index a671b3b..371d430 100644
--- a/Logic/General_concepts/Logical_consistency.md
+++ b/Logic/General_concepts/Logical_consistency.md
@@ -57,7 +57,7 @@ In other terms, if you can derive a contradiction from the set, the set is logic
A [contradiction](/Logic/General_concepts/Logical_truth_and_falsity.md#logical-falsity) has very important consequences for reasoning because if a set of propositions is inconsistent, any other proposition is derivable from it.
-
+
_A demonstration of the the consequences of deriving a contradiction in a sequence of reasoning._
diff --git a/Logic/General_concepts/Logical_equivalence.md b/Logic/General_concepts/Logical_equivalence.md
index 52bd848..f205dd3 100644
--- a/Logic/General_concepts/Logical_equivalence.md
+++ b/Logic/General_concepts/Logical_equivalence.md
@@ -35,4 +35,4 @@ $$
Note that the property of equivalence stated in terms of derivablity above is identical to the derivation rule for the [material biconditional](/Logic/Proofs/Biconditional_Introduction.md):
-
+
diff --git a/Logic/Laws_and_theorems.md/Theorems_and_empty_sets.md b/Logic/Laws_and_theorems.md/Theorems_and_empty_sets.md
index c629de4..efcd8fe 100644
--- a/Logic/Laws_and_theorems.md/Theorems_and_empty_sets.md
+++ b/Logic/Laws_and_theorems.md/Theorems_and_empty_sets.md
@@ -8,7 +8,7 @@ We know that when we construct a [derivation](/Logic/Proofs/Formal_proofs_in_pro
_Demonstration_
-
+
We see in this example that there is no starting set and thus no primary assumptions. Instead we start with nothing other than the proposition we wish to derive. The proposition is effectively derived from itself. In these scenarios we say that we are constructing a derivation from an **empty set**.
diff --git a/Logic/Proofs/Biconditional_Elimination.md b/Logic/Proofs/Biconditional_Elimination.md
index b1f6111..84ad332 100644
--- a/Logic/Proofs/Biconditional_Elimination.md
+++ b/Logic/Proofs/Biconditional_Elimination.md
@@ -8,4 +8,4 @@ tags: [derivation-rules]
Give that the biconditional means that if $P$ is the case, $Q$ must be the case and if $Q$ is the case, $P$ must be the case, if we have $P \leftrightarrow Q$ and $P$, we can derive $Q$ and vice versa.
-
+
diff --git a/Logic/Proofs/Biconditional_Introduction.md b/Logic/Proofs/Biconditional_Introduction.md
index 9802d3a..cef1d4b 100644
--- a/Logic/Proofs/Biconditional_Introduction.md
+++ b/Logic/Proofs/Biconditional_Introduction.md
@@ -8,4 +8,4 @@ tags: [derivation-rules]
The biconditional means if $P$ is the case, $Q$ must be the case and if $Q$ is the case, $P$ must be the case. Thus to introduce this operator we must demonstrate both that $Q$ follows from $P$ and that $P$ follows from $Q$. We do this via two sub-proofs.
-
+
diff --git a/Logic/Proofs/Conditional_Elimination.md b/Logic/Proofs/Conditional_Elimination.md
index bd1c245..5e44711 100644
--- a/Logic/Proofs/Conditional_Elimination.md
+++ b/Logic/Proofs/Conditional_Elimination.md
@@ -8,4 +8,4 @@ tags: [derivation-rules]
If we have a conditional and we have independently derived its antecedent, we may invoke its consequent. This is often referred to as _Modus ponens_ (affirming the antecedent).
-
+
diff --git a/Logic/Proofs/Conditional_Introduction.md b/Logic/Proofs/Conditional_Introduction.md
index 947234a..92aa925 100644
--- a/Logic/Proofs/Conditional_Introduction.md
+++ b/Logic/Proofs/Conditional_Introduction.md
@@ -8,4 +8,4 @@ tags: [derivation-rules]
If we can show that $Q$ follows from $P$ (typically via a sub-proof) than we can assert that P implies Q. This is also sometimes known as _Conditional Proof_
-
+
diff --git a/Logic/Proofs/Conjunction_Elimination.md b/Logic/Proofs/Conjunction_Elimination.md
index 6e866a6..e37a62f 100644
--- a/Logic/Proofs/Conjunction_Elimination.md
+++ b/Logic/Proofs/Conjunction_Elimination.md
@@ -8,4 +8,4 @@ tags: [derivation-rules]
If a conjunction exists, it means that both conjuncts are the case; therefore we can legitimately extract either one of them. Also known as _Simplification_.
-
+
diff --git a/Logic/Proofs/Conjunction_Introduction.md b/Logic/Proofs/Conjunction_Introduction.md
index 31d2018..2aa6f55 100644
--- a/Logic/Proofs/Conjunction_Introduction.md
+++ b/Logic/Proofs/Conjunction_Introduction.md
@@ -6,4 +6,4 @@ tags: [derivation-rules]
If two conjuncts have each been independently derived then they can be conjoined. Also known more simply as _Conjunction_
-
+
diff --git a/Logic/Proofs/Disjunction_Elimination.md b/Logic/Proofs/Disjunction_Elimination.md
index 26ac386..4abc0da 100644
--- a/Logic/Proofs/Disjunction_Elimination.md
+++ b/Logic/Proofs/Disjunction_Elimination.md
@@ -8,13 +8,13 @@ tags: [derivation-rules]
This rule is sometimes also referred to as _Constructive Dilemma_. This can be a bit tricky to understand because the goal is to derive or _introduce_ a new proposition separate from the disjunction you start out with. This may be disjunction, a single proposition or a proposition containing any other logical connective. You do this by constructing two sub-proofs, one for each of the disjuncts comprising the disjunction you start out with. If you can derive your target proposition as the conclusion of each subproof then you may invoke the conclusion in the main proof and take it to be derived.
-
+
_Here is an example where Disjunction Elimination is used to derive a new disjunction._
-
+
_Here are two further examples that use Disjunction Elimination to derive singular propositions_
-
-
+
+
diff --git a/Logic/Proofs/Disjunction_Introduction.md b/Logic/Proofs/Disjunction_Introduction.md
index 55f89f5..a9da165 100644
--- a/Logic/Proofs/Disjunction_Introduction.md
+++ b/Logic/Proofs/Disjunction_Introduction.md
@@ -9,4 +9,4 @@ tags: [derivation-rules]
This rule can seem a little odd: like we are randomly introducing an additional proposition without giving any justification. However this is just a consequence of the fact if $P$ is true, so is $P \lor Q$ since disjunction is not the same as conjunction: only one disjunct needs to be true for the compound disjunction to be true. This is represented in the context of [truth-trees](Truth-trees.md#disjunction-decomposition) by the fact that truth can pass up via either branch of a disjunction pattern.
This rule is sometimes also referred to (confusingly) as _Addition_.
-
+
diff --git a/Logic/Proofs/Formal_proofs_in_propositional_logic.md b/Logic/Proofs/Formal_proofs_in_propositional_logic.md
index 3a7877d..9c8728a 100644
--- a/Logic/Proofs/Formal_proofs_in_propositional_logic.md
+++ b/Logic/Proofs/Formal_proofs_in_propositional_logic.md
@@ -35,11 +35,11 @@ This is known as _Fitch notation_
_Schematically_:
-
+
_Applied example_:
-
+
## Sub-proofs
diff --git a/Logic/Proofs/Negation_Elimination.md b/Logic/Proofs/Negation_Elimination.md
index bb7b86f..c14602a 100644
--- a/Logic/Proofs/Negation_Elimination.md
+++ b/Logic/Proofs/Negation_Elimination.md
@@ -8,4 +8,4 @@ tags: [derivation-rules]
Like the [introduction](/Logic/Proofs/Negation_Introduction.md) rule for negation, the elimination rule also works by deriving a contradiction. It is basically _Negation Introduction_ in reverse. Instead of starting the sub-proof with a true proposition from which you derive a contradiction, you start with the negation of a proposition, derive a contradiction and then assert the positive of the negated proposition you started out with.
-
+
diff --git a/Logic/Proofs/Negation_Introduction.md b/Logic/Proofs/Negation_Introduction.md
index 0c683c5..fef95e3 100644
--- a/Logic/Proofs/Negation_Introduction.md
+++ b/Logic/Proofs/Negation_Introduction.md
@@ -8,4 +8,4 @@ tags: [derivation-rules]
This is also known as _proof by contradiction_. You start with an assumption declared in a sub-proof. If you can derive a contradiction from this assumption (typically from the introduction of another proposition and its negation), then you are permitted to derive the negation of the auxiliary assumption in the main proof.
-
+
diff --git a/Logic/Proofs/Reiteration.md b/Logic/Proofs/Reiteration.md
index 2481cba..e0e8c6f 100644
--- a/Logic/Proofs/Reiteration.md
+++ b/Logic/Proofs/Reiteration.md
@@ -8,4 +8,4 @@ tags: [derivation-rules]
**Reiteration (R)** allows us to restate any proposition already in the proof within the main proof or a more deeply nested sub-proof. Reiteration allows us to reuse any assumptions, or propositions derived from assumptions, without having to introduce a new dependency with another assumption.
-
+
diff --git a/Logic/Proofs/Strategies_for_constructing_proofs.md b/Logic/Proofs/Strategies_for_constructing_proofs.md
index a814fd1..ab741e4 100644
--- a/Logic/Proofs/Strategies_for_constructing_proofs.md
+++ b/Logic/Proofs/Strategies_for_constructing_proofs.md
@@ -31,20 +31,20 @@ Let's start with $D$: where does it occur in the assumptions? It occurs in the c
So far we have:
-
+
Now we just need to get $D$ from the proposition at line 3. This is easy since we already have access to the consequent of the biconditional at line 1. Therefore we can apply [Biconditional Elimination](/Logic/Proofs/Biconditional_Elimination.md)) at line 3 to get $D$. We are now halfway there:
-
+
Next we need to turn our attention to deriving $L \lor A$. How can we obtain $L$ ? Well it is contained within the first conjunct of the assumption on line 2. Again, we can get this through the application of [Conjunction Elimination](/Logic/Proofs/Conjunction_Elimination.md).
Now, how do we get $L$ from $(\lnot N \rightarrow L)$? Well, we already have the antecedent $\lnot N$ as an assumption on the first line, so we can use [Conditional Elimination](/Logic/Proofs/Conditional_Elimination.md) to derive $L$. These two steps give us:
-
+
Now we need to get from $L$ to $L \lor A$. This is really straightforward because by using [Disjunction Introduction](/Logic/Proofs/Disjunction_Introduction.md)) we can get from any sentence to a disjunction. Finally, having assembled all the constituent parts of the conjunction that is the conclusion, we can combine them with [Conjunction Introduction](/Logic/Proofs/Conjunction_Introduction.md) as we had planned at the outset.
-
+
### A further example
@@ -58,7 +58,7 @@ The requirements here could easily mislead us. We see that the target propositio
Actually, if we look more closely, there is a better approach. The target proposition is contained in the first premise as the consequent to the biconditional ($\lnot L \leftrightarrow [X \land (\lnot S \lor B)]$). A better approach is therefore to seek to derive the antecedent ($\lnot L$) and then use [Biconditional Elimination](/Logic/Proofs/Biconditional_Elimination.md) to extract the target sentence which is the consequent.
-
+
## Proving theorems
@@ -70,13 +70,13 @@ _Prove:_ $\vdash (U \land Y) \rightarrow [L \rightarrow (U \land L)]$
Our strategy here is to identify the main connective in the proposition we want to derive (the material conditional). We then assume the antecedent and attempt to derive the consequent from it.
-
+
## A complex theorem proof
_Prove_ $\vdash (\lnot A \lor \lnot B) \leftrightarrow \lnot(A \land B)$
-
+
### Walkthrough
diff --git a/Logic/Propositional_logic/Truth-trees.md b/Logic/Propositional_logic/Truth-trees.md
index d71a40d..4a971d2 100644
--- a/Logic/Propositional_logic/Truth-trees.md
+++ b/Logic/Propositional_logic/Truth-trees.md
@@ -64,7 +64,7 @@ Using the definitions above, we can now define truth-functional consistency and
The following is a truth tree for the set ${P \lor Q, \sim P }$:
-
+
### Interpretation
@@ -90,7 +90,7 @@ Invoking the truth-table highlights the differences between the two techniques.
The following is a truth tree for the set ${A & \sim B, C, \sim A \lor \sim B }$.
-
+
### Interpretation
@@ -119,37 +119,37 @@ So far we have encountered the decomposition rules for conjunction (`&D`) and di
### Negated negation decomposition: `~~D`
-
+
Truth passes only if $P$ is true
### Conjunction decomposition: `&D`
-
+
Truth passes only $P$ and $Q$ are both true.
### Negated Conjunction decomposition: `~&D`
-
+
Truth passes if either $\sim P$ or $\sim Q$ is true. This rule is a consequence of the equivalence between $\sim (P & Q)$ and $\sim P \lor \sim Q$ , the first of DeMorgan’s Laws.
### Disjunction decomposition: `vD`
-
+
Truth passes if either $P$or $Q$ are true.
### Negated Disjunction decomposition: `~vD`
-
+
Truth passes if both $P$ and $Q$ are false. This rule is a consequence of the equivalence between $\sim (P \lor Q)$ and $\sim P & \sim Q$, the second of DeMorgan’s Laws.
### Conditional decomposition: `⊃D`
-
+
Truth passes if either $\sim P$ or $Q$ are true. This rule is a consequence of the equivalence between $P \supset Q$ and $\sim P \lor Q$ therefore this branch has the shape of a disjunction with $\sim P$ , $Q$ as its disjuncts.
@@ -157,17 +157,17 @@ Truth passes if either $\sim P$ or $Q$ are true. This rule is a consequence of t
Truth passes if both $P$ and $\sim Q$ are true. This is a consequence of the equivalence between $\sim (P \supset Q)$ and $P & \sim Q$.
-
+
### Biconditional decomposition: `≡D`
-
+
Truth passes if either $P$ and $Q$ are true or $\sim P & \sim Q$ are true. This is an interesting rule because it combines the disjunction and conjunction tree shapes.
### Negated biconditional decomposition: `~≡D`
-
+
Truth passes if either $P$ and $\sim Q$ is true or if $\sim P$ and $Q$ is true.
@@ -181,7 +181,7 @@ With truth-trees regardless of which order you decompose the set members, the co
Here are some examples of these rules applied:
-
+
Observe that here we don’t bother to decompose the sentence on line 1. This is because, having decomposed the sentences on lines 2 and 3 we have arrived at a closed tree. It is therefore unnecessary to go any further for if two sentences in the set are inconsistent with each other, adding another sentence is not going to change the overall assignment of inconsistency.
@@ -199,7 +199,7 @@ When we wish to assess [logical falsity](Logical%20truth%20and%20falsity.md#logi
A logically false sentence cannot be true on any assignment. This is the same thing as an inconsistent set. Thus it will be represented in a truth tree as inconsistency which is disclosed via a closed tree.
-
+
### Logical truth
@@ -221,7 +221,7 @@ Recall that $P$ and $Q$ are [logically equivalent](Logical%20equivalence.md) jus
> Sentences $P$ and $Q$ are truth-functionally equivalent if and only if the set $\sim (P \equiv Q)$ has a closed tree
-
+
### Logical entailment and validity
diff --git a/Mathematics/Prealgebra/Dividing_fractions.md b/Mathematics/Prealgebra/Dividing_fractions.md
index aee7c3f..54d4e64 100644
--- a/Mathematics/Prealgebra/Dividing_fractions.md
+++ b/Mathematics/Prealgebra/Dividing_fractions.md
@@ -11,15 +11,15 @@ tags:
Suppose you have the following shape:
-
+
One part is shaded. This represents one-eighth of the original shape.
-
+
Now imagine there are four instances of the shape and one-eighth remains shaded. How man one-eighths are there in four?
-
+
The shaded proportion represents $\frac{1}{8}$ of the shape. Imagine four of these shapes, how many eighths are there?
diff --git a/Mathematics/Prealgebra/Equivalent_fractions.md b/Mathematics/Prealgebra/Equivalent_fractions.md
index 88be83a..9d60978 100644
--- a/Mathematics/Prealgebra/Equivalent_fractions.md
+++ b/Mathematics/Prealgebra/Equivalent_fractions.md
@@ -9,7 +9,7 @@ tags:
Two fractions are equivalent if they represent the same value.
To begin with we can represent this visually:
-
+
_Each shaded area is taking up the same proportion of the whole._
diff --git a/Mathematics/Prealgebra/Prime_factorization.md b/Mathematics/Prealgebra/Prime_factorization.md
index f141adb..8b9c076 100644
--- a/Mathematics/Prealgebra/Prime_factorization.md
+++ b/Mathematics/Prealgebra/Prime_factorization.md
@@ -16,10 +16,10 @@ Prime factorisation is the activity of expressing a composite number as the uniq
> **Factor trees:** we take a number $n$ and break it down into two factors of $n$. We then repeat this process with the resulting factors working recursively until the numbers we are left with are primes.
-
+
_The prime factors of 27 are 2, 3, 3_
it doesn't matter which products we choose as the interim factors, we should always reach the same outcome:
-
+
-
+
diff --git a/Mathematics/Prealgebra/Reducing_fractions.md b/Mathematics/Prealgebra/Reducing_fractions.md
index 59aa053..376bfa5 100644
--- a/Mathematics/Prealgebra/Reducing_fractions.md
+++ b/Mathematics/Prealgebra/Reducing_fractions.md
@@ -68,7 +68,7 @@ This is still a bit long-winded however particularly when finding the factors of
A better method is to utilise [prime factorization](Prime%20factorization.md) combined with the canceling technique.
First we find the prime factors of both the numerator and denominator:
-
+
This gives us:
@@ -133,7 +133,7 @@ _Reduce the following fraction to its lowest terms: $$\frac{14y^5}{-35y^3}$$_
- Apply [Prime factorization](Prime%20factorization.md):
- 
+ 
- Cancel the coefficients and variable parts
@@ -148,7 +148,7 @@ $$\frac{- 12xy^2}{ - 18xy^2}$$_
- Apply [Prime factorization](Prime%20factorization.md):
-
+
- Cancel the coefficients and variable parts
diff --git a/Operating_Systems/Boot_process.md b/Operating_Systems/Boot_process.md
index f6782c9..af729c6 100644
--- a/Operating_Systems/Boot_process.md
+++ b/Operating_Systems/Boot_process.md
@@ -46,7 +46,7 @@ Even though most modern computers use UEFI, it may still be referred to as BIOS
The de facto standard boot loader for Linux is GRUB: Grand Unified Boot Loader.
-
+
You see the GRUB default menu when you first start a Linux machine. It will offer you various options for loading your installed OS or other OSs. GRUB is a filesystem like the main disk. If you press `e` in this screen you can view and edit specific boot parameters. Pressing `c` gives you access to the GRUB command line interface. This allows you to interact with GRUB in the same way as you would with any other filesystem, allowing for advanced configuration.
diff --git a/Operating_Systems/Disks/Filesystems.md b/Operating_Systems/Disks/Filesystems.md
index fcda7e9..d62ce75 100644
--- a/Operating_Systems/Disks/Filesystems.md
+++ b/Operating_Systems/Disks/Filesystems.md
@@ -51,7 +51,7 @@ touch test.txt
Our `sda1` partition is now mounted at `mountpoint`. We can go ahead and create files. If we now look within the graphical file manager when we click on the `sda1` volume, we will see the new file we have created in `mountpoint`.
-
+
## fstab
diff --git a/Operating_Systems/Disks/What_are_disks.md b/Operating_Systems/Disks/What_are_disks.md
index ac00f73..a4d9f76 100644
--- a/Operating_Systems/Disks/What_are_disks.md
+++ b/Operating_Systems/Disks/What_are_disks.md
@@ -20,7 +20,7 @@ A disk is a mass storage [block_device](/Operating_Systems/Devices.md) which we
The following diagram represents the basic anatomy of a disk device.
-
+
- A disk is divided up into [partitions](/Operating_Systems/Disks/Partitions.md) which are subsections of the overall disk. The kernel presents each partition as a [block device](/Operating_Systems/Devices.md) as it would with an entire disk.
- The disk dedicates a small part of its contents to a **partition table**: this defines the different partitions that comprise the total disk space.
diff --git a/Operating_Systems/Relation_between_kernel_and_CPU.md b/Operating_Systems/Relation_between_kernel_and_CPU.md
index d6a6653..9a35d24 100644
--- a/Operating_Systems/Relation_between_kernel_and_CPU.md
+++ b/Operating_Systems/Relation_between_kernel_and_CPU.md
@@ -14,7 +14,7 @@ It can be confusing to understand how the kernel and CPU interact with one anoth
However as a process, the kernel is the 'first amongst equals' given that it is the core embodiment of the operating system. At boot time, the kernel is injected into memory and at this point the CPU _looks to this address_ in memory in order to source its first instruction. That's how the kernel gets going. It is the first instruction that the CPU fetches and this is what allows the kernel to play its mediatory role. However most of the fetch, decode, execute cycles of the CPU take place independently of the kernel.
-
+
> Fetch decode and execute refer to processor pipeline stages. They occur automatically as part of normal processor operation, the kernel doesn’t generally have any direct control over how that happens...When the boot loader loads the kernel, it points the CPU’s program counter to an entry point in the kernel’s code. From there, the CPU will continue executing (fetching decoding and executing) kernel code until you point the program counter to a userspace program, where it will continue executing userspace code until an interrupt points the program counter back into kernel code. That’s basically what the CPU will be doing from boot up to shut down; switching between executing kernel code and executing userspace code ([Reddit](https://www.reddit.com/r/osdev/comments/wdskj5/how_does_kernel_decide_if_use_cpu_or_gpu_after/))
diff --git a/Operating_Systems/Virtual_memory_and_the_MMU.md b/Operating_Systems/Virtual_memory_and_the_MMU.md
index 6b42a02..15f22e7 100644
--- a/Operating_Systems/Virtual_memory_and_the_MMU.md
+++ b/Operating_Systems/Virtual_memory_and_the_MMU.md
@@ -13,7 +13,7 @@ Virtual memory is implemented at the level of the operating system and is an abs
When virtual memory is used, the CPU handles physical memory allocation and presents this to the kernel as an idealised representation. This means that the kernel and, by extension, programs and processes do not need to think about accessing the real memory blocks. This reduces complexity because often memory will be allocated in places that are non-contiguous with similar running processes or be located in the cache or swap memory on the disk.
-
+
It would require considerable processing work for the kernel to be tracing these disparate memory sources at every instance. By working on an idealised (contiguous, unlimited) memory set the kernel can focus on task management and CPU sequencing as its primary task.
diff --git a/Programming_Languages/Frameworks/React/Classes/Lifecycle_methods.md b/Programming_Languages/Frameworks/React/Classes/Lifecycle_methods.md
index 4df47b5..6d9b020 100644
--- a/Programming_Languages/Frameworks/React/Classes/Lifecycle_methods.md
+++ b/Programming_Languages/Frameworks/React/Classes/Lifecycle_methods.md
@@ -37,7 +37,7 @@ The final phase is unmounting: when the component is removed from the DOM:
6. `componentWillUnmount()`
-
+
## Side-effects: why lifecycle phases matter
diff --git a/Programming_Languages/Node/Architecture/Event_loop.md b/Programming_Languages/Node/Architecture/Event_loop.md
index 89d3466..1a1b1bc 100644
--- a/Programming_Languages/Node/Architecture/Event_loop.md
+++ b/Programming_Languages/Node/Architecture/Event_loop.md
@@ -21,7 +21,7 @@ Many backend frameworks are synchronous but multithreaded. This means that a thr
If there was only one thread, this would be inefficient and unworkable. Therefore the framework will be multi-threaded: multiple request-response cycles can be executed at once by different threads.
-
+
To accomodate the ability to increase the scale of synchronous applications you need to be able to spawn more threads commensurate to increased demand. This increases the resource consumption of the framework (more cores, more memory etc). Moreover it is possible to reach a point where all threads are active and no more can be spawned. In this case there will simply be delays in the return of data.
@@ -29,7 +29,7 @@ To accomodate the ability to increase the scale of synchronous applications you
In contrast, Node only has a single thread but it works asynchronously, not synchronously. Thus it has a **single-threaded asynchronous architecture**. This means whilst there is only a single thread it can juggle responses by dispatching them asynchronously. When a request is made it sends it off and continues with its execution and handling new requests. Once these resolve, the data is returned to the main thread.
-
+
## The Event Loop
@@ -45,7 +45,7 @@ A running Node application is a single running process. Like everything that hap
The Event Loop comprises six phases. The Event Loop starts at the moment Node begins to execute your `index.js` file or any other application entry point. These six phases create one cycle, or loop, equal to one **tick**. A Node.js process exits when there is no more pending work in the Event Loop, or when `process.exit()` is called manually. A program only runs for as long as there are tasks queued in the Event Loop, or present on the [call stack](/Software_Engineering/Call_stack.md).
-
+
The phases are as follows:
diff --git a/Programming_Languages/Node/Modules/Package_management.md b/Programming_Languages/Node/Modules/Package_management.md
index 26c147f..06bac45 100644
--- a/Programming_Languages/Node/Modules/Package_management.md
+++ b/Programming_Languages/Node/Modules/Package_management.md
@@ -28,7 +28,7 @@ We can pinpoint specific dependencies in the `package.json`, e.g. `npm view [pac
See whether your dependency version is out of date use `npm outdated`. This gives us a table, for example:
-
+
- _Latest_ tells us the latest release available from the developers
- _Wanted_ tells us the version that our `package.json` rules target. To take the first dependency as an example. We must have set our SemVer syntax to `^0.4.x` since it is telling us that there is a minor release that is more recent than the one we have installed but is not advising that we update to the latest major release.
diff --git a/Programming_Languages/Node/REST_APIs/1_GET.md b/Programming_Languages/Node/REST_APIs/1_GET.md
index fc8a827..a077811 100644
--- a/Programming_Languages/Node/REST_APIs/1_GET.md
+++ b/Programming_Languages/Node/REST_APIs/1_GET.md
@@ -19,7 +19,7 @@ router.get("/", (req, res) => {
Our server is now set up:
-
+
> When creating our API this structure of creating handlers for specific routes will be iterated. Every endpoint will be specified with `[app].[http_request_type]` and followed by a callback.
diff --git a/Theory_of_Computation/Defining_a_computer.md b/Theory_of_Computation/Defining_a_computer.md
index 19798da..ab60e65 100644
--- a/Theory_of_Computation/Defining_a_computer.md
+++ b/Theory_of_Computation/Defining_a_computer.md
@@ -11,7 +11,7 @@ tags:
This sets a general purpose computer aside from a special-purpose computer, like the one you might find in your dishwasher which may have its instructions hardwired or coded into the machine. Special purpose computers only perform a single set of tasks according to prewritten instructions. We’ll take the term _computer_ to mean general purpose computer.
Simplified model of what a computer is:
-
+
Although the input, output and storage parts of a computer are very important, they will not be the focus of this course. Instead we are going to learn all about the process part, which will focus on how the computer is able to follow instructions to make calculations.
@@ -35,9 +35,9 @@ Although the input, output and storage parts of a computer are very important, t
- But as these machines were expensive and slow, people used pre-computed tables in book form generated by human computers. Useful particularly for things like square roots.
- Similarly range tables were created that aided the military in calculating distances for gunboat artillery which factored in contextual factors like wind, drift, slope and elevation. These were used well into WW2 but they were limited to the particular type of cannon or shell
-
+
-
+
> Before the invention of actual computers, 'computer' was a job-title denoting people who were employed to conduct complex calculations, sometimes with the aid of machinery, but most often not. This persisted until the late 18th century when the word changed to include devices like adding machines.
diff --git a/Theory_of_Computation/Turing_machines.md b/Theory_of_Computation/Turing_machines.md
index 4bfa99c..6573e36 100644
--- a/Theory_of_Computation/Turing_machines.md
+++ b/Theory_of_Computation/Turing_machines.md
@@ -10,7 +10,7 @@ tags:
A Turing Machine consists of an infinitely long tape, that has been divided up into cells. Each cell can contain either a 1, a 0 or an empty space. Above one cell of the tape is a head, which can either move left or right, and can read the symbols written in the cells. The head is also capable of erasing symbols and writing new symbols into the cells.
-
+
The direction that the head moves, which values it erases, and which values it writes in, are dependent on a set of instructions provided to the machine.0
Different sets of instructions can be divided into **states.** States are like sub-routines and can themselves feature as part of instructions.
diff --git a/_img/1.4-Input-Process-Output.png b/_img/1.4-Input-Process-Output.png
new file mode 100644
index 0000000..9f804e1
Binary files /dev/null and b/_img/1.4-Input-Process-Output.png differ
diff --git a/_img/3-bit-adder-diagram.png b/_img/3-bit-adder-diagram.png
new file mode 100644
index 0000000..7d993e7
Binary files /dev/null and b/_img/3-bit-adder-diagram.png differ
diff --git a/_img/74181aluschematic.png b/_img/74181aluschematic.png
new file mode 100644
index 0000000..161699e
Binary files /dev/null and b/_img/74181aluschematic.png differ
diff --git a/_img/FL-Databases-1.5_terminology.gif b/_img/FL-Databases-1.5_terminology.gif
new file mode 100644
index 0000000..1040c3d
Binary files /dev/null and b/_img/FL-Databases-1.5_terminology.gif differ
diff --git a/_img/LMC_5.gif b/_img/LMC_5.gif
new file mode 100644
index 0000000..3399182
Binary files /dev/null and b/_img/LMC_5.gif differ
diff --git a/_img/Memory-Hierarchy.jpg b/_img/Memory-Hierarchy.jpg
new file mode 100644
index 0000000..4c9bba8
Binary files /dev/null and b/_img/Memory-Hierarchy.jpg differ
diff --git a/_img/ORelim1.png b/_img/ORelim1.png
new file mode 100644
index 0000000..75731b0
Binary files /dev/null and b/_img/ORelim1.png differ
diff --git a/_img/ORelim2.png b/_img/ORelim2.png
new file mode 100644
index 0000000..3bb7113
Binary files /dev/null and b/_img/ORelim2.png differ
diff --git a/_img/Pasted_image_20220319135558.png b/_img/Pasted_image_20220319135558.png
new file mode 100644
index 0000000..6298a65
Binary files /dev/null and b/_img/Pasted_image_20220319135558.png differ
diff --git a/_img/Pasted_image_20220319135805.png b/_img/Pasted_image_20220319135805.png
new file mode 100644
index 0000000..37109dd
Binary files /dev/null and b/_img/Pasted_image_20220319135805.png differ
diff --git a/_img/Pasted_image_20220319135823.png b/_img/Pasted_image_20220319135823.png
new file mode 100644
index 0000000..2b5fd00
Binary files /dev/null and b/_img/Pasted_image_20220319135823.png differ
diff --git a/_img/Pasted_image_20220319174839.png b/_img/Pasted_image_20220319174839.png
new file mode 100644
index 0000000..1c00b90
Binary files /dev/null and b/_img/Pasted_image_20220319174839.png differ
diff --git a/_img/Pasted_image_20220411082627.png b/_img/Pasted_image_20220411082627.png
new file mode 100644
index 0000000..82fd434
Binary files /dev/null and b/_img/Pasted_image_20220411082627.png differ
diff --git a/_img/REST_request-load.png b/_img/REST_request-load.png
new file mode 100644
index 0000000..74792c2
Binary files /dev/null and b/_img/REST_request-load.png differ
diff --git a/_img/Screenshot_2020-08-09_at_21.34.48.png b/_img/Screenshot_2020-08-09_at_21.34.48.png
new file mode 100644
index 0000000..bbbb066
Binary files /dev/null and b/_img/Screenshot_2020-08-09_at_21.34.48.png differ
diff --git a/_img/Screenshot_2021-05-11_at_18.51.02.png b/_img/Screenshot_2021-05-11_at_18.51.02.png
new file mode 100644
index 0000000..15ee66a
Binary files /dev/null and b/_img/Screenshot_2021-05-11_at_18.51.02.png differ
diff --git a/_img/Screenshot_2021-05-11_at_18.55.23.png b/_img/Screenshot_2021-05-11_at_18.55.23.png
new file mode 100644
index 0000000..1da93a9
Binary files /dev/null and b/_img/Screenshot_2021-05-11_at_18.55.23.png differ
diff --git a/_img/Turing_machines_01.gif b/_img/Turing_machines_01.gif
new file mode 100644
index 0000000..974e3b3
Binary files /dev/null and b/_img/Turing_machines_01.gif differ
diff --git a/_img/analog-digital.svg b/_img/analog-digital.svg
new file mode 100644
index 0000000..35f441a
--- /dev/null
+++ b/_img/analog-digital.svg
@@ -0,0 +1,38 @@
+
+
+
\ No newline at end of file
diff --git a/_img/and-gate-new-2.png b/_img/and-gate-new-2.png
new file mode 100644
index 0000000..58eab1d
Binary files /dev/null and b/_img/and-gate-new-2.png differ
diff --git a/_img/and-transistor.png b/_img/and-transistor.png
new file mode 100644
index 0000000..a18d128
Binary files /dev/null and b/_img/and-transistor.png differ
diff --git a/_img/apollo-explorer.png b/_img/apollo-explorer.png
new file mode 100644
index 0000000..4725eeb
Binary files /dev/null and b/_img/apollo-explorer.png differ
diff --git a/_img/async.svg b/_img/async.svg
new file mode 100644
index 0000000..fd85032
--- /dev/null
+++ b/_img/async.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/atom-diagram.svg b/_img/atom-diagram.svg
new file mode 100644
index 0000000..bde130b
--- /dev/null
+++ b/_img/atom-diagram.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/_img/basic-circuit.png b/_img/basic-circuit.png
new file mode 100644
index 0000000..f72f364
Binary files /dev/null and b/_img/basic-circuit.png differ
diff --git a/_img/bi-intro.png b/_img/bi-intro.png
new file mode 100644
index 0000000..23a0572
Binary files /dev/null and b/_img/bi-intro.png differ
diff --git a/_img/biconditional-elim.png b/_img/biconditional-elim.png
new file mode 100644
index 0000000..c34918b
Binary files /dev/null and b/_img/biconditional-elim.png differ
diff --git a/_img/breadboard-DIP.jpg b/_img/breadboard-DIP.jpg
new file mode 100644
index 0000000..4e54dec
Binary files /dev/null and b/_img/breadboard-DIP.jpg differ
diff --git a/_img/breakdown.svg b/_img/breakdown.svg
new file mode 100644
index 0000000..3258648
--- /dev/null
+++ b/_img/breakdown.svg
@@ -0,0 +1,39 @@
+
+
\ No newline at end of file
diff --git a/_img/cell-comparison.svg b/_img/cell-comparison.svg
new file mode 100644
index 0000000..65a4a4f
--- /dev/null
+++ b/_img/cell-comparison.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/charge-cylinder.svg b/_img/charge-cylinder.svg
new file mode 100644
index 0000000..6325077
--- /dev/null
+++ b/_img/charge-cylinder.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/circ-batt-final.svg b/_img/circ-batt-final.svg
new file mode 100644
index 0000000..1d2a2ae
--- /dev/null
+++ b/_img/circ-batt-final.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/clock_pulses.png b/_img/clock_pulses.png
new file mode 100644
index 0000000..7e69aaa
Binary files /dev/null and b/_img/clock_pulses.png differ
diff --git a/_img/complex-tree.svg b/_img/complex-tree.svg
new file mode 100644
index 0000000..9cbba30
--- /dev/null
+++ b/_img/complex-tree.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/cond-elim.png b/_img/cond-elim.png
new file mode 100644
index 0000000..993a336
Binary files /dev/null and b/_img/cond-elim.png differ
diff --git a/_img/cond-intro.png b/_img/cond-intro.png
new file mode 100644
index 0000000..5287392
Binary files /dev/null and b/_img/cond-intro.png differ
diff --git a/_img/conditional-decomposition-rule.svg b/_img/conditional-decomposition-rule.svg
new file mode 100644
index 0000000..a400a50
--- /dev/null
+++ b/_img/conditional-decomposition-rule.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/conjunc-elim.png b/_img/conjunc-elim.png
new file mode 100644
index 0000000..fd66290
Binary files /dev/null and b/_img/conjunc-elim.png differ
diff --git a/_img/conjunc-intro.png b/_img/conjunc-intro.png
new file mode 100644
index 0000000..3a8d642
Binary files /dev/null and b/_img/conjunc-intro.png differ
diff --git a/_img/conjunction-decomposition-rule.svg b/_img/conjunction-decomposition-rule.svg
new file mode 100644
index 0000000..5abcbd2
--- /dev/null
+++ b/_img/conjunction-decomposition-rule.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/derivation_from_contradiction.png b/_img/derivation_from_contradiction.png
new file mode 100644
index 0000000..2c81072
Binary files /dev/null and b/_img/derivation_from_contradiction.png differ
diff --git a/_img/diode-led.png b/_img/diode-led.png
new file mode 100644
index 0000000..00c3334
Binary files /dev/null and b/_img/diode-led.png differ
diff --git a/_img/diode.png b/_img/diode.png
new file mode 100644
index 0000000..fddfca4
Binary files /dev/null and b/_img/diode.png differ
diff --git a/_img/dipole-again.svg b/_img/dipole-again.svg
new file mode 100644
index 0000000..13cac44
--- /dev/null
+++ b/_img/dipole-again.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/disjunc-elim.png b/_img/disjunc-elim.png
new file mode 100644
index 0000000..0127c59
Binary files /dev/null and b/_img/disjunc-elim.png differ
diff --git a/_img/disjunc-intro.png b/_img/disjunc-intro.png
new file mode 100644
index 0000000..6047493
Binary files /dev/null and b/_img/disjunc-intro.png differ
diff --git a/_img/disjunction-decomposition-rule.svg b/_img/disjunction-decomposition-rule.svg
new file mode 100644
index 0000000..144b2e8
--- /dev/null
+++ b/_img/disjunction-decomposition-rule.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/draw.io-Page-8.drawio.png b/_img/draw.io-Page-8.drawio.png
new file mode 100644
index 0000000..8c111e9
Binary files /dev/null and b/_img/draw.io-Page-8.drawio.png differ
diff --git a/_img/draw.io-Page-9.drawio.png b/_img/draw.io-Page-9.drawio.png
new file mode 100644
index 0000000..9614777
Binary files /dev/null and b/_img/draw.io-Page-9.drawio.png differ
diff --git a/_img/drawio-Page-7.drawio.png b/_img/drawio-Page-7.drawio.png
new file mode 100644
index 0000000..e86a851
Binary files /dev/null and b/_img/drawio-Page-7.drawio.png differ
diff --git a/_img/dsfdsfsdfwe.png b/_img/dsfdsfsdfwe.png
new file mode 100644
index 0000000..207ba84
Binary files /dev/null and b/_img/dsfdsfsdfwe.png differ
diff --git a/_img/em-spectrum.jpg b/_img/em-spectrum.jpg
new file mode 100644
index 0000000..46a2191
Binary files /dev/null and b/_img/em-spectrum.jpg differ
diff --git a/_img/em-wave.gif b/_img/em-wave.gif
new file mode 100644
index 0000000..8faba2c
Binary files /dev/null and b/_img/em-wave.gif differ
diff --git a/_img/equiv-fractions.png b/_img/equiv-fractions.png
new file mode 100644
index 0000000..ddd0dbd
Binary files /dev/null and b/_img/equiv-fractions.png differ
diff --git a/_img/four-bit-adder.png b/_img/four-bit-adder.png
new file mode 100644
index 0000000..649c9b3
Binary files /dev/null and b/_img/four-bit-adder.png differ
diff --git a/_img/full-adder-new.png b/_img/full-adder-new.png
new file mode 100644
index 0000000..8eb9df0
Binary files /dev/null and b/_img/full-adder-new.png differ
diff --git a/_img/graphQL_request_load.png b/_img/graphQL_request_load.png
new file mode 100644
index 0000000..df97e79
Binary files /dev/null and b/_img/graphQL_request_load.png differ
diff --git a/_img/graphql-architecture.png b/_img/graphql-architecture.png
new file mode 100644
index 0000000..b56b208
Binary files /dev/null and b/_img/graphql-architecture.png differ
diff --git a/_img/graphql-journey-two.svg b/_img/graphql-journey-two.svg
new file mode 100644
index 0000000..949cd30
--- /dev/null
+++ b/_img/graphql-journey-two.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/graphql_multiple_resources.png b/_img/graphql_multiple_resources.png
new file mode 100644
index 0000000..3b526da
Binary files /dev/null and b/_img/graphql_multiple_resources.png differ
diff --git a/_img/greyscale-encoding.svg b/_img/greyscale-encoding.svg
new file mode 100644
index 0000000..4a72d8e
--- /dev/null
+++ b/_img/greyscale-encoding.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/ground-symbol.png b/_img/ground-symbol.png
new file mode 100644
index 0000000..7c7be5d
Binary files /dev/null and b/_img/ground-symbol.png differ
diff --git a/_img/grub.jpg b/_img/grub.jpg
new file mode 100644
index 0000000..58cb270
Binary files /dev/null and b/_img/grub.jpg differ
diff --git a/_img/half-adder-gates-three.png b/_img/half-adder-gates-three.png
new file mode 100644
index 0000000..0469bc3
Binary files /dev/null and b/_img/half-adder-gates-three.png differ
diff --git a/_img/half-adder-new.png b/_img/half-adder-new.png
new file mode 100644
index 0000000..45dc092
Binary files /dev/null and b/_img/half-adder-new.png differ
diff --git a/_img/harddisk.png b/_img/harddisk.png
new file mode 100644
index 0000000..5f5ee0d
Binary files /dev/null and b/_img/harddisk.png differ
diff --git a/_img/hardware-abstraction-hierarchy.png b/_img/hardware-abstraction-hierarchy.png
new file mode 100644
index 0000000..7251df8
Binary files /dev/null and b/_img/hardware-abstraction-hierarchy.png differ
diff --git a/_img/hertz_wave_freq.gif b/_img/hertz_wave_freq.gif
new file mode 100644
index 0000000..0fd7c0f
Binary files /dev/null and b/_img/hertz_wave_freq.gif differ
diff --git a/_img/hexadecimal-to-bytes.svg b/_img/hexadecimal-to-bytes.svg
new file mode 100644
index 0000000..99cfb98
--- /dev/null
+++ b/_img/hexadecimal-to-bytes.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/htop.png b/_img/htop.png
new file mode 100644
index 0000000..a97cd4b
Binary files /dev/null and b/_img/htop.png differ
diff --git a/_img/integrated-circuit.jpeg b/_img/integrated-circuit.jpeg
new file mode 100644
index 0000000..71b6598
Binary files /dev/null and b/_img/integrated-circuit.jpeg differ
diff --git a/_img/javascript-recursion.png b/_img/javascript-recursion.png
new file mode 100644
index 0000000..b232421
Binary files /dev/null and b/_img/javascript-recursion.png differ
diff --git a/_img/jk-flip-flops.png b/_img/jk-flip-flops.png
new file mode 100644
index 0000000..f83dcdc
Binary files /dev/null and b/_img/jk-flip-flops.png differ
diff --git a/_img/journald.png b/_img/journald.png
new file mode 100644
index 0000000..2781425
Binary files /dev/null and b/_img/journald.png differ
diff --git a/_img/kernel-cpu-interaction.svg b/_img/kernel-cpu-interaction.svg
new file mode 100644
index 0000000..0706e8c
--- /dev/null
+++ b/_img/kernel-cpu-interaction.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/lin.svg b/_img/lin.svg
new file mode 100644
index 0000000..f207dd0
--- /dev/null
+++ b/_img/lin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/_img/logical-equivalence-tree.svg b/_img/logical-equivalence-tree.svg
new file mode 100644
index 0000000..bb78612
--- /dev/null
+++ b/_img/logical-equivalence-tree.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/logical-falsity-tree.svg b/_img/logical-falsity-tree.svg
new file mode 100644
index 0000000..4e0c22c
--- /dev/null
+++ b/_img/logical-falsity-tree.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/lsof.png b/_img/lsof.png
new file mode 100644
index 0000000..8a8b5d5
Binary files /dev/null and b/_img/lsof.png differ
diff --git a/_img/magnetic_field.png b/_img/magnetic_field.png
new file mode 100644
index 0000000..e82e190
Binary files /dev/null and b/_img/magnetic_field.png differ
diff --git a/_img/memory-flow.svg b/_img/memory-flow.svg
new file mode 100644
index 0000000..ab78d87
--- /dev/null
+++ b/_img/memory-flow.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/mongo-collection.png b/_img/mongo-collection.png
new file mode 100644
index 0000000..227ae90
Binary files /dev/null and b/_img/mongo-collection.png differ
diff --git a/_img/mongo-compass.png b/_img/mongo-compass.png
new file mode 100644
index 0000000..8ecbab2
Binary files /dev/null and b/_img/mongo-compass.png differ
diff --git a/_img/mongo-db-structure.svg b/_img/mongo-db-structure.svg
new file mode 100644
index 0000000..6b1e2fb
--- /dev/null
+++ b/_img/mongo-db-structure.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/mongo-doc-added.png b/_img/mongo-doc-added.png
new file mode 100644
index 0000000..a45847f
Binary files /dev/null and b/_img/mongo-doc-added.png differ
diff --git a/_img/mongoose-hierarchy.svg b/_img/mongoose-hierarchy.svg
new file mode 100644
index 0000000..15091f1
--- /dev/null
+++ b/_img/mongoose-hierarchy.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/motherboard-pi.jpg b/_img/motherboard-pi.jpg
new file mode 100644
index 0000000..07c8c91
Binary files /dev/null and b/_img/motherboard-pi.jpg differ
diff --git a/_img/mount-directory.png b/_img/mount-directory.png
new file mode 100644
index 0000000..c522d2d
Binary files /dev/null and b/_img/mount-directory.png differ
diff --git a/_img/multi_on_off.gif b/_img/multi_on_off.gif
new file mode 100644
index 0000000..f7c90ea
Binary files /dev/null and b/_img/multi_on_off.gif differ
diff --git a/_img/multiple_circuits.gif b/_img/multiple_circuits.gif
new file mode 100644
index 0000000..c298651
Binary files /dev/null and b/_img/multiple_circuits.gif differ
diff --git a/_img/multiplication_01.gif b/_img/multiplication_01.gif
new file mode 100644
index 0000000..ee3839e
Binary files /dev/null and b/_img/multiplication_01.gif differ
diff --git a/_img/multiplication_02.gif b/_img/multiplication_02.gif
new file mode 100644
index 0000000..26a7ef7
Binary files /dev/null and b/_img/multiplication_02.gif differ
diff --git a/_img/multiplication_03.gif b/_img/multiplication_03.gif
new file mode 100644
index 0000000..3dd5bb1
Binary files /dev/null and b/_img/multiplication_03.gif differ
diff --git a/_img/multiplication_04.gif b/_img/multiplication_04.gif
new file mode 100644
index 0000000..54f055e
Binary files /dev/null and b/_img/multiplication_04.gif differ
diff --git a/_img/nand-gate-new.png b/_img/nand-gate-new.png
new file mode 100644
index 0000000..ca27c16
Binary files /dev/null and b/_img/nand-gate-new.png differ
diff --git a/_img/nand-mem-demonstrated.gif b/_img/nand-mem-demonstrated.gif
new file mode 100644
index 0000000..c8af9a7
Binary files /dev/null and b/_img/nand-mem-demonstrated.gif differ
diff --git a/_img/nand-mem-first.gif b/_img/nand-mem-first.gif
new file mode 100644
index 0000000..927aa81
Binary files /dev/null and b/_img/nand-mem-first.gif differ
diff --git a/_img/nand-mem-second.gif b/_img/nand-mem-second.gif
new file mode 100644
index 0000000..035f4e6
Binary files /dev/null and b/_img/nand-mem-second.gif differ
diff --git a/_img/nand_latch_logic_circuit.png b/_img/nand_latch_logic_circuit.png
new file mode 100644
index 0000000..631f722
Binary files /dev/null and b/_img/nand_latch_logic_circuit.png differ
diff --git a/_img/negate-elim.png b/_img/negate-elim.png
new file mode 100644
index 0000000..043992c
Binary files /dev/null and b/_img/negate-elim.png differ
diff --git a/_img/negate-intro.png b/_img/negate-intro.png
new file mode 100644
index 0000000..0c2e920
Binary files /dev/null and b/_img/negate-intro.png differ
diff --git a/_img/negated-biconditional-decomposition-rule.drawio.svg b/_img/negated-biconditional-decomposition-rule.drawio.svg
new file mode 100644
index 0000000..38228e9
--- /dev/null
+++ b/_img/negated-biconditional-decomposition-rule.drawio.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/negated-conditional-decomposition-rule.svg b/_img/negated-conditional-decomposition-rule.svg
new file mode 100644
index 0000000..bc8e052
--- /dev/null
+++ b/_img/negated-conditional-decomposition-rule.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/negated-conjunction-decomposition-rule.svg b/_img/negated-conjunction-decomposition-rule.svg
new file mode 100644
index 0000000..0a7a24c
--- /dev/null
+++ b/_img/negated-conjunction-decomposition-rule.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/negated-disjunction-decomposition-rule.svg b/_img/negated-disjunction-decomposition-rule.svg
new file mode 100644
index 0000000..21b10e1
--- /dev/null
+++ b/_img/negated-disjunction-decomposition-rule.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/node-event-loop.svg b/_img/node-event-loop.svg
new file mode 100644
index 0000000..a87e2d3
--- /dev/null
+++ b/_img/node-event-loop.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/nor-gate-new.png b/_img/nor-gate-new.png
new file mode 100644
index 0000000..d97578f
Binary files /dev/null and b/_img/nor-gate-new.png differ
diff --git a/_img/not-gate-new.png b/_img/not-gate-new.png
new file mode 100644
index 0000000..c2da4c5
Binary files /dev/null and b/_img/not-gate-new.png differ
diff --git a/_img/one-eighth-a.png b/_img/one-eighth-a.png
new file mode 100644
index 0000000..a39820d
Binary files /dev/null and b/_img/one-eighth-a.png differ
diff --git a/_img/or-gate-new.png b/_img/or-gate-new.png
new file mode 100644
index 0000000..2d97429
Binary files /dev/null and b/_img/or-gate-new.png differ
diff --git a/_img/or-transistor.svg b/_img/or-transistor.svg
new file mode 100644
index 0000000..b691723
--- /dev/null
+++ b/_img/or-transistor.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/parallel-battery-diagram.svg b/_img/parallel-battery-diagram.svg
new file mode 100644
index 0000000..e8df3d3
--- /dev/null
+++ b/_img/parallel-battery-diagram.svg
@@ -0,0 +1,689 @@
+
+
+
+
diff --git a/_img/parallel-transmission.jpg b/_img/parallel-transmission.jpg
new file mode 100644
index 0000000..e7f69b1
Binary files /dev/null and b/_img/parallel-transmission.jpg differ
diff --git a/_img/proof.png b/_img/proof.png
new file mode 100644
index 0000000..bf3831f
Binary files /dev/null and b/_img/proof.png differ
diff --git a/_img/proofs-drawio-Page-5.drawio.png b/_img/proofs-drawio-Page-5.drawio.png
new file mode 100644
index 0000000..8f59d18
Binary files /dev/null and b/_img/proofs-drawio-Page-5.drawio.png differ
diff --git a/_img/proofs-drawio-Page-5.drawio_2.png b/_img/proofs-drawio-Page-5.drawio_2.png
new file mode 100644
index 0000000..b83b8a9
Binary files /dev/null and b/_img/proofs-drawio-Page-5.drawio_2.png differ
diff --git a/_img/proofs-drawio-Page-6.drawio.png b/_img/proofs-drawio-Page-6.drawio.png
new file mode 100644
index 0000000..ba492af
Binary files /dev/null and b/_img/proofs-drawio-Page-6.drawio.png differ
diff --git a/_img/queue.svg b/_img/queue.svg
new file mode 100644
index 0000000..d6720d7
--- /dev/null
+++ b/_img/queue.svg
@@ -0,0 +1,20 @@
+
+
\ No newline at end of file
diff --git a/_img/react-lifecycle.png b/_img/react-lifecycle.png
new file mode 100644
index 0000000..eee57bd
Binary files /dev/null and b/_img/react-lifecycle.png differ
diff --git a/_img/red-encoding.svg b/_img/red-encoding.svg
new file mode 100644
index 0000000..f9b5752
--- /dev/null
+++ b/_img/red-encoding.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/reiteration.png b/_img/reiteration.png
new file mode 100644
index 0000000..6aee327
Binary files /dev/null and b/_img/reiteration.png differ
diff --git a/_img/serial-transmission.jpg b/_img/serial-transmission.jpg
new file mode 100644
index 0000000..efd2c19
Binary files /dev/null and b/_img/serial-transmission.jpg differ
diff --git a/_img/series-battcircuit.svg b/_img/series-battcircuit.svg
new file mode 100644
index 0000000..de63e18
--- /dev/null
+++ b/_img/series-battcircuit.svg
@@ -0,0 +1,28 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/series-battery-diagram.svg b/_img/series-battery-diagram.svg
new file mode 100644
index 0000000..838766a
--- /dev/null
+++ b/_img/series-battery-diagram.svg
@@ -0,0 +1,245 @@
+
+
+
+
diff --git a/_img/server-listening.png b/_img/server-listening.png
new file mode 100644
index 0000000..eb38b2d
Binary files /dev/null and b/_img/server-listening.png differ
diff --git a/_img/signed-conversion.png b/_img/signed-conversion.png
new file mode 100644
index 0000000..8208d10
Binary files /dev/null and b/_img/signed-conversion.png differ
diff --git a/_img/signed-to-unsigned.png b/_img/signed-to-unsigned.png
new file mode 100644
index 0000000..ac7ba0a
Binary files /dev/null and b/_img/signed-to-unsigned.png differ
diff --git a/_img/sql-full-outer-join.png b/_img/sql-full-outer-join.png
new file mode 100644
index 0000000..9f44f41
Binary files /dev/null and b/_img/sql-full-outer-join.png differ
diff --git a/_img/sql-inner-join.png b/_img/sql-inner-join.png
new file mode 100644
index 0000000..b71eb33
Binary files /dev/null and b/_img/sql-inner-join.png differ
diff --git a/_img/sql-left-outer-join.png b/_img/sql-left-outer-join.png
new file mode 100644
index 0000000..e27388b
Binary files /dev/null and b/_img/sql-left-outer-join.png differ
diff --git a/_img/sql-right-outer-join.png b/_img/sql-right-outer-join.png
new file mode 100644
index 0000000..2115475
Binary files /dev/null and b/_img/sql-right-outer-join.png differ
diff --git a/_img/square.svg b/_img/square.svg
new file mode 100644
index 0000000..b305e27
--- /dev/null
+++ b/_img/square.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/_img/sr_latch_diagram.png b/_img/sr_latch_diagram.png
new file mode 100644
index 0000000..41c51f6
Binary files /dev/null and b/_img/sr_latch_diagram.png differ
diff --git a/_img/sr_latch_logic_circuit.png b/_img/sr_latch_logic_circuit.png
new file mode 100644
index 0000000..f3a2702
Binary files /dev/null and b/_img/sr_latch_logic_circuit.png differ
diff --git a/_img/stack1.svg b/_img/stack1.svg
new file mode 100644
index 0000000..897bf39
--- /dev/null
+++ b/_img/stack1.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/_img/stack2.svg b/_img/stack2.svg
new file mode 100644
index 0000000..f2d1752
--- /dev/null
+++ b/_img/stack2.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/_img/step1.png b/_img/step1.png
new file mode 100644
index 0000000..e9dee56
Binary files /dev/null and b/_img/step1.png differ
diff --git a/_img/step2.png b/_img/step2.png
new file mode 100644
index 0000000..674fc62
Binary files /dev/null and b/_img/step2.png differ
diff --git a/_img/step3.png b/_img/step3.png
new file mode 100644
index 0000000..7331da7
Binary files /dev/null and b/_img/step3.png differ
diff --git a/_img/step4.png b/_img/step4.png
new file mode 100644
index 0000000..12a57b9
Binary files /dev/null and b/_img/step4.png differ
diff --git a/_img/switch-and-gate.png b/_img/switch-and-gate.png
new file mode 100644
index 0000000..aae726a
Binary files /dev/null and b/_img/switch-and-gate.png differ
diff --git a/_img/switch-or-gate.png b/_img/switch-or-gate.png
new file mode 100644
index 0000000..d621991
Binary files /dev/null and b/_img/switch-or-gate.png differ
diff --git a/_img/sync-thread.svg b/_img/sync-thread.svg
new file mode 100644
index 0000000..f3a6eb0
--- /dev/null
+++ b/_img/sync-thread.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/systemd-global-files.png b/_img/systemd-global-files.png
new file mode 100644
index 0000000..700600b
Binary files /dev/null and b/_img/systemd-global-files.png differ
diff --git a/_img/systemd-local-files.png b/_img/systemd-local-files.png
new file mode 100644
index 0000000..b443998
Binary files /dev/null and b/_img/systemd-local-files.png differ
diff --git a/_img/t-flip-flops.png b/_img/t-flip-flops.png
new file mode 100644
index 0000000..208deea
Binary files /dev/null and b/_img/t-flip-flops.png differ
diff --git a/_img/theoremproof.png b/_img/theoremproof.png
new file mode 100644
index 0000000..6c4b549
Binary files /dev/null and b/_img/theoremproof.png differ
diff --git a/_img/transistor-diag.svg b/_img/transistor-diag.svg
new file mode 100644
index 0000000..fb67854
--- /dev/null
+++ b/_img/transistor-diag.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/transistor-off.png b/_img/transistor-off.png
new file mode 100644
index 0000000..0d24182
Binary files /dev/null and b/_img/transistor-off.png differ
diff --git a/_img/transistor-on.png b/_img/transistor-on.png
new file mode 100644
index 0000000..4cc1441
Binary files /dev/null and b/_img/transistor-on.png differ
diff --git a/_img/unsigned-to-signed.png b/_img/unsigned-to-signed.png
new file mode 100644
index 0000000..0168aed
Binary files /dev/null and b/_img/unsigned-to-signed.png differ
diff --git a/_img/valence-shell.svg b/_img/valence-shell.svg
new file mode 100644
index 0000000..f086c05
--- /dev/null
+++ b/_img/valence-shell.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_img/vertical-circuit.png b/_img/vertical-circuit.png
new file mode 100644
index 0000000..940bbb5
Binary files /dev/null and b/_img/vertical-circuit.png differ
diff --git a/_img/virtual-memory-diagram.jpg b/_img/virtual-memory-diagram.jpg
new file mode 100644
index 0000000..b65f527
Binary files /dev/null and b/_img/virtual-memory-diagram.jpg differ
diff --git a/_img/voltage-drop.png b/_img/voltage-drop.png
new file mode 100644
index 0000000..c7f1bad
Binary files /dev/null and b/_img/voltage-drop.png differ
diff --git a/_img/xor-gate-new.png b/_img/xor-gate-new.png
new file mode 100644
index 0000000..9961f48
Binary files /dev/null and b/_img/xor-gate-new.png differ
diff --git a/_img/xor-hdl.png b/_img/xor-hdl.png
new file mode 100644
index 0000000..56dba50
Binary files /dev/null and b/_img/xor-hdl.png differ
diff --git a/_img/yellow-encoding.svg b/_img/yellow-encoding.svg
new file mode 100644
index 0000000..3a12161
--- /dev/null
+++ b/_img/yellow-encoding.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/_scripts/clean_image_directory.sh b/_scripts/clean_image_directory.sh
index 3e897a6..5db22d0 100755
--- a/_scripts/clean_image_directory.sh
+++ b/_scripts/clean_image_directory.sh
@@ -1,7 +1,7 @@
#!/bin/bash
-# If there are images in _img/ that are not being used in the workspace, delete them
-find /home/thomas/repos/computer_science/img -type f | while read filename; do
+# If there are images in _img/ that are not being used in the workspace, delete them
+find /home/thomas/repos/computer_science/_img -type f | while read filename; do
rg "${filename##*/}" ../ --type markdown >/dev/null 2>&1
if [ "$?" -eq 1 ]; then
echo "Deleted unused image: ${filename##*/}"
diff --git a/_scripts/rename_img_links.sh b/_scripts/rename_img_links.sh
new file mode 100755
index 0000000..05e54ea
--- /dev/null
+++ b/_scripts/rename_img_links.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+# Replace all instances of `img` in Markdown image links with `_img` (to reflect new directory structure)
+
+find /home/thomas/repos/computer_science/ -type f -name "*.md" | while
+read file; do
+ sed -i 's/\/img\//\/_img\//g' $file
+done