The
Imposter's
Guide to
Computer Science

1998

Why learn about
Computer Science?

  • Understand abstractions
  • Make informed decisions
  • Appreciate the history of our craft
  • ...Nail technical interviews

What we'll cover

  • Part 1: Binary
  • Part 2: Boolean Algebra
  • Part 3: Logical Circuits

How does a computer add two numbers together?

Part 1: Binary

Number Systems

Decimal System (Base-10)

235 in Decimal

Binary System (Base-2)

235 in Binary

11101011

Hexidecimal System (Base-16)

235 in Hexidecimal

14 x 16 (224)
+ 11 x 1            

EB

Part 2: Boolean Algebra

Aristotle

384 – 322 BC

 

Laid the groundwork for a system of logic based on binary propositions, true and false.

George Boole

1815 – 1864

 

In 1854 introduced Boolean algebra in his book "An Investigation of the Laws of Thought," which presented a symbolic representation of Aristotle’s logic.

Boolean Operations

While elementary algebra deals with numerical operations, Boolean algebra deals with logical operations. These operations form the backbone of programming logic and the design of digital circuits.

Primary operations

  • A & B represents an AND operation
  • A || B represents an OR operation
  • !A is a NOT, or inversion operation

Secondary operations

Each of these operations can be represented by grouping the primary operations together:

  • Exclusive OR (XOR): (A || B) && !(A & B)
  • Implication (if A then B): !A || B
  • Equivalence (equality): (A & B) || (!A & !B)

There are no numbers in Boolean algebra, only symbols for true and false values.

  • TRUE: 1/ON
  • FALSE: 0/OFF

Truth Tables

To visualize and understand the outcome of these operations, we use Truth tables. These tables enumerate all possible combinations of input truth values and their corresponding output.

AND

A B OUT
0 0 0
0 1 0
1 0 0
1 1 1

OR

A B OUT
0 0 0
0 1 1
1 0 1
1 1 1

XOR

A B OUT
0 0 0
0 1 1
1 0 1
1 1 0

Implication

A B OUT
0 0 1
0 1 1
1 0 0
1 1 1

If A then B otherwise true, i.e. a conditional statement.

Equivalence

A B OUT
0 0 1
0 1 0
1 0 0
1 1 1

Boolean Arithmetic

  • Boolean operations can be used to perform arithmetic.
  • In Boolean arithmetic, results are always either true (1) or false (0).

An OR operation represents addition:

1 + 1 = 1
1 + 0 = 1
0 + 0 = 0
0 + 1 = 1

An AND operation represents multiplication:

1 * 1 = 1
1 * 0 = 0
0 * 0 = 0
0 * 1 = 0

Subtraction and division do not exist in Boolean algebra.

Boolean operations serve as the building blocks for logical circuits that process and compute information in our digital devices.

Part 3: Logical Circuits

Claude Shannon

1916 – 2001

 

Often regarded as one of the most influential yet overlooked figures in computer science, Claude Shannon laid the foundation for the Information Age with his groundbreaking work in Information Theory.

Every single concept from Boole’s algebra had its physical counterpart in an electric circuit. An on switch could stand for "true" and an off switch for "false," and the whole thing could be represented in 1’s and 0’s. More important, as Shannon pointed out, the logical operators of Boole’s system—AND, OR, NOT—could be replicated exactly as circuits.

By merging principles of Boolean algebra and binary representation with electronic circuits, Shannon forged a path that revolutionized computing.

Computing Machines

Mechanical Computers

These early devices used proportional differences between gears to perform calculations. They were limited to specific tasks and lacked the versatility of general-purpose computations.

Mechanical calculator

Digital Computers

Digital computers perform calculations using electronic switches to implement logical circuits.

ENIAC programmers

Switches

The types of switches used to perform boolean operations in digital computers changed as technology developed.

Relay

Vacuum tube

Transistor

Logic Gates

Transitors can be combined in certain ways to create logic gates. These gates execute basic logical functions that are crucial in performing complex computational tasks. The most common logic gates include:

  • NOT Gate: Flips the input (1 becomes 0 and vice versa).

  • AND Gate: Outputs 1 only when both inputs are 1.

  • OR Gate: Outputs 1 if any input is 1.

  • XOR Gate: Outputs 1 if only one input is 1.

AND gate

OR gate

Logic Circuits

By chaining together different logic gates, we can create logic circuits. These circuits can perform more complex operations and calculations.

Performing binary arithmetic using boolean logic:

In binary, 2 bits are required to represent the number 2. The extra bit is "carried" to the left. The rightmost bit is reset to 0 because of the carry.

A B A+B
0 0 00
0 1 01
1 0 01
1 1 10
A B AND XOR
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

Notice the leftmost bit represents the result of an AND operation. The rightmost bit is the result of an XOR operation.

The Half Adder

Adds two single binary digits and returns a sum plus a carry value.

1

1

0

1

(carry)

(sum)

The Full Adder

A full adder is a combination of two half-adders with an additional OR gate to manage the carry bit.

1

0

1

0

1

(carry)

1

0

(carry)

(sum)

1

0

Move from right to left and carry a 1 if we add two 1s together.

27 + 15

A 1 1 0 1 1 (27)
B 0 1 1 1 1 (15)

1

42

0

1

1

1

1

0

1

1

0

1

Full-adders can be chained together to add large numbers

FA FA FA FA FA FA
C 1 1 1 1 1 0
A 0 1 1 0 1 1 (27)
B 0 0 1 1 1 1 (15)
1 0 1 0 1 0 42

Demo: Logic circuits

Bitwise Operations

Bitwise means evaluating a series of bits, on order, from right to left. Bitwise operators apply the operation to each set of digits from right to left.

In Ruby, bitwise operations are represented as:

AND &
OR |
XOR ^
NOT ~
Left shift <<
Right shift >>

The AND operation 13 & 11 = 9 can be visualized as:

   1 1 0 1 (13)
&  1 0 1 1 (11)
   ———————
   1 0 0 1 (9)

Bit Shifting

Shifting the bits to the left is multiplying by 2. Shifting to the right is dividing by two.

Bitwise left shift:

7 << 2 = 28

000111 << 2 = 011100

Bitwise right shift:

40 >> 2 = 10

0101000 >> 2 = 0001010

The Imposter's Guide to Computer Science

By timrossinfo

The Imposter's Guide to Computer Science

  • 109